Krótko: sprawdź datę najnowszego pliku w kopii, a nie datę folderu. Znacznik czasu folderu zmienia się z powodów, które nie mają nic wspólnego z zakończeniem kopii.
Jeśli najnowszy plik w środku jest starszy niż wczorajszy, kopia się nie robiła, cokolwiek mówi Ci narzędzie.
Większość porad o kopiach zapasowych dotyczy niewłaściwej katastrofy. Wyobraża sobie dramatyczną: dysk umiera, laptop zostaje skradziony, powódź. Takie są rzadkie i wszyscy je rozumieją.
Najczęstszy przypadek jest nudny. Dysk odłączono, żeby zrobić miejsce na coś innego, i nigdy nie wrócił. NAS uruchomił się ponownie po zaniku prądu, a udział się nie zamontował. Laptop był zamknięty w chwili, gdy zadanie miało się wykonać, co noc, przez miesiąc. Skrypt zakończył się błędem, którego nikt nie przeczytał, bo nikt nie czyta logu, który od roku był w porządku.
W każdym z tych przypadków nic nie jest zepsute. Nigdzie, gdzie patrzy człowiek, nie pojawia się błąd. Folder kopii wciąż jest, wciąż pełen plików, wciąż odpowiedniego rozmiaru. Zmieniło się tylko to, że przestał być nowszy, a nic w systemie nie uważa, że warto o tym wspomnieć.
Wskaż tym miejsce docelowe kopii. Znajduje najpóźniej zmodyfikowany plik gdziekolwiek w środku i wypisuje jego datę:
find /Volumes/Backup -type f -print0 | xargs -0 stat -f '%m %N' | sort -rn | head -5
Pierwsza kolumna to znacznik czasu Unix. Żeby odczytać go bezpośrednio:
find /Volumes/Backup -type f -newermt '-2 days' | head
Jeśli to nic nie wypisze, przez dwa dni nic nie zostało zapisane. To jest odpowiedź i jest bardziej wiarygodna niż jakikolwiek ekran stanu, bo to właściwość samych plików.
Konkretnie dla Time Machine:
tmutil latestbackup
co wypisuje ścieżkę najnowszej migawki z datą w nazwie albo błąd, jeśli żadnej nie ma.
Odruchowo patrzy się na folder kopii w Finderze i czyta kolumnę Data modyfikacji. Ta liczba nie oznacza tego, co myślisz.
Czas modyfikacji katalogu zmienia się, gdy coś zostanie do niego dodane lub z niego usunięte, a nie
gdy zmienia się zawartość pliku w środku. Indeksowanie Spotlight, przepisany plik .DS_Store,
skaner antywirusowy, klient chmury ruszający własne metadane: każde z nich może sprawić, że
nieaktualny folder kopii wygląda, jakby zapisano do niego dziś rano.
Zapisem są pliki w środku. Folder nim nie jest.
launchd z
StartCalendarInterval nie działa, gdy Mac śpi, i nie nadrabia
potem, chyba że o to poprosisz. Laptop zamknięty o północy ma kopię o północy, która
ani razu się nie zrobiła.launchd zapisuje skargę do pliku, a ten plik jest jedyną rzeczą, która
o tym wie.Jeśli robisz to sam, rozwiązaniem jest wyłącznik bezpieczeństwa: coś, co narzeka, gdy kopia się nie zrobiła. To inne zdarzenie niż nieudana kopia i tylko to pierwsze obejmuje powyższe przypadki.
Najprostsza wersja to zadanie, które sprawdza wiek najnowszego pliku i krzyczy, jeśli jest za stary:
if [ -z "$(find /Volumes/Backup -type f -newermt '-2 days' 2>/dev/null | head -1)" ]; then
osascript -e 'display notification "No backup in two days" with title "Backup"'
fi
Uruchamiaj to według osobnego harmonogramu, niezależnie od kopii, żeby zepsuty harmonogram kopii nie zepsuł też tego, co go pilnuje. Ten ostatni punkt ludzie najczęściej robią źle: sprawdzenie uruchamiane w ramach zadania kopii nie może zgłosić, że zadanie kopii się nie uruchomiło.
Tak naprawdę chcesz, żeby alarmem był sam brak kopii, a narzędzie podawało nazwę tego, czego brakuje.
Na tym zbudowano Copy Shelter. Śledzi, kiedy do każdego miejsca docelowego ostatnio zapisano i kiedy je ostatnio sprawdzono, i odzywa się po siedmiu dniach bez udanej kopii. Podaje nazwę miejsca, więc dostajesz „dysku z szuflady nie widziano od 14 sierpnia”. A ponieważ odczytuje kopię i sprawdza każdy fragment względem skrótu, pod którym go zapisano, wyłapuje też kopię, która się robi, ale daje nieczytelny wynik, czyli awarię o krok dalej niż ta strona.
Pokazywany wynik liczy tylko to, co niedawno zweryfikowano. Kopia, która się nie zrobiła, nie jest kopią, którą masz, i liczba to pokazuje.
Nie powinieneś musieć. O to chodzi na tej stronie: sprawdzenie robione ręcznie to sprawdzenie, które przestaniesz robić, zwykle jakieś trzy tygodnie po ustawieniu. Zautomatyzuj alarm o braku kopii, a ręczne sprawdzanie niech będzie tym, co robisz, gdy alarm każe.
Pomaga, ale ma swoje granice. Time Machine ostrzega, gdy przez dziesięć dni nie ukończył kopii, a powiadomienie łatwo zamknąć i łatwo przestać zauważać. Nie powie Ci też, że ukończona kopia jest nieczytelna, bo na dysku lokalnym tego nie sprawdza.
To przypadek uprawnień, i to gorszy, bo każdy wskaźnik stanu mówi o sukcesie. Porównaj liczbę plików w miejscu docelowym z liczbą w źródle. Jeśli kopia, która powinna mieć dziesiątki tysięcy plików, ma czterdzieści, macOS odmawia dostępu do folderów, a zadanie się o tym nie dowiaduje.
Inaczej, ale tak. Klienty synchronizacji się wylogowują, dochodzą do limitu i same się wstrzymują, a znaczek, który by Ci to powiedział, to mała ikona na pasku menu, na który nie patrzysz. Pliki też zostają dokładnie tam, gdzie były, więc nic nie wygląda źle.
W dużej mierze tak. Dwa miejsca docelowe, które psują się z różnych powodów i są sprawdzane osobno, są warte więcej niż dowolnie dokładne monitorowanie jednego. Monitorowanie mówi Ci, że kopii już nie ma; druga kopia sprawia, że to nie miało znaczenia. Zobacz zasadę 3-2-1.
Powiązane: sprawdzanie, czy kopię naprawdę da się odczytać i zasada 3-2-1.