Co robi Time Machine?

18

Czasami OS X mówi mi, że „Przygotowuje kopię zapasową ...” przez bardzo długi czas. Czas potrzebny wydaje się nie mieć związku z ilością danych, których kopię zapasową należy wykonać. To samo dotyczy etapu „Kończenie tworzenia kopii zapasowej ...”.

Pytanie: co robi OS X, gdy „Przygotowuje kopię zapasową ...” i „Kończenie tworzenia kopii zapasowej ...”?

Wiem, że zastanawia się, co wykonać kopię zapasową, a następnie rejestruje zmiany, ale z pewnością czas ten powinien być proporcjonalny do ilości danych, które uległy zmianie. Jest dużo miejsca na dysku (więc zakładam, że nie usuwa starych kopii zapasowych). Używam TimeCapsule, jeśli to robi jakąkolwiek różnicę. Nic się z tym nie dzieje, jestem po prostu ciekawy.

Stephen Darlington
źródło

Odpowiedzi:

20

Oto odpowiedź z innego forum (nieznany mi oryginalny plakat):

Etap „przygotowania” w Time Machine jest zwykle szybki, ponieważ Time Machine używa dziennika działań systemu plików, aby wiedzieć, gdzie znaleźć zmiany, których kopię zapasową należy wykonać.

Są jednak rzeczy, które możesz zrobić, aby uczynić ten dziennik niewiarygodnym. Gdy Time Machine wykryje, że dziennik MOGĄ nie być poprawne, wykonuje pełne skanowanie systemu plików, aby ustalić, co naprawdę należy wykonać kopię zapasową. To może chwilę potrwać. Na moim Powerbooku (i z zewnętrznym napędem Time Machine FireWire) może to doprowadzić do „przygotowania” trwającego 20 minut. Jeśli zezwolisz programowi Time Machine na kontynuowanie, w końcu dowiesz się, co naprawdę należy dodać do dysku z kopią zapasową i będzie kontynuowany. Jest to oczywiście lepsze niż tylko hazard, dziennik jest poprawny lub po prostu tworzenie kopii zapasowej WSZYSTKIEGO, nawet jeśli tylko kilka plików mogło się zmienić (co zajęłoby znacznie więcej czasu i zajęło więcej miejsca na dysku Time Machine).

We wczesnych dniach instalowania systemu Leopard jedną z najczęstszych rzeczy, które mogą sprawić, że dziennik nie będzie wiarygodny, jest uruchamianie z instalacyjnego dysku DVD systemu Leopard. Za każdym razem, gdy to zrobisz, przy następnym uruchomieniu Time Machine odkryje, że Twój dysk twardy MUSI zostać zmodyfikowany, a zmiany nie zostaną odzwierciedlone w dzienniku. Tak więc wykonuje pełny skan - długi etap „przygotowania”, aby upewnić się, że wszystko działa poprawnie.

Komandor Keen
źródło
W rzeczywistości dzienniki nie są używane tylko przez Time Machine. I to Twój Mac może stwierdzić, że stare dzienniki są nieprawidłowe. Możesz przeszukać konsolę, fseventsdaby zobaczyć „zdarzenia logują się / woluminy / .. nie są zsynchronizowane z woluminem. Niszczą stare logi”. Nowo utworzony dziennik będzie miał także nowy identyfikator, który nie będzie już zgodny z identyfikatorem przechowywanym z kopią zapasową. Mówi to Time Machine, aby porównał dysk twardy z ostatnią kopią zapasową. Jeśli ktoś używa wielu dysków z kopiami zapasowymi, a następnie fseventsdutworzony nowy dziennik, Time Machine ostatecznie uruchomi się na „UUID magazynu zdarzeń nie pasują” dla każdego dysku kopii zapasowej.
Arjan
Zainstalowanie napędu w systemie Windows za pomocą sterownika systemu plików do odczytu / zapisu, takiego jak MacDrive, spowoduje również pełne skanowanie systemu plików przy następnym utworzeniu kopii zapasowej przez Time Machine. (Montowanie dysku za pomocą sterownika systemu plików tylko do odczytu w Boot Camp, z drugiej strony, nie)
Brant
10

Aby uzupełnić odpowiedź dowódcy Keena, polecam przeczytanie dogłębnej analizy Time Machine autorstwa Earthling Soft. Dodatkowo więcej informacji jest rejestrowanych w systemie.log przez backupd (co powie, dlaczego stan przygotowania jest tak długi i taki)

Chealion
źródło
1
+1 - doskonały artykuł!
Komandor Keen
Świetny artykuł. Chciałbym oznaczyć dwie odpowiedzi jako zaakceptowane!
Stephen Darlington
Ars Technica ma kolejny dobry artykuł, ale sądzę, że link Earthling Soft obejmował wszystko: arstechnica.com/apple/reviews/2007/10/mac-os-x-10-5.ars/14 A dla programistów czytających to: patrz praktyczny na developer.apple.com/mac/articles/cocoa/filesystemevents.html
Arjan
10

Aby łatwo wyświetlić backupddziennik, spójrz na widget Buddy Time Machine . Pamiętaj również, że na dysku z kopią zapasową znajduje się inny dziennik, w ukrytym pliku, .Backup.logktóry można znaleźć w folderze każdej kopii zapasowej. Daje to inne informacje niż backupddzienniki.

Pamiętaj, że często dzienniki pokazują liczby, które wydają się nie pasować:

Nie wymaga przerzedzania kopii zapasowej: zażądano 821,4 MB (w tym wypełnienie) [..]
Skopiowano 1630 plików (3,8 MB) z woluminu Macintosh HD.

Powyżej, faktycznie kopiowanych jest mniej plików niż pierwotnie przewidywano. Ponieważ Time Machine opiera się na FSEventach, które zgłaszają tylko zmienione katalogi, zakładam, że w powyższym przykładzie katalogi te zawierały łącznie 821,4 MB plików. Podczas faktycznego kopiowania plików Time Machine porównuje następnie zmienione katalogi na dysku twardym z kopią zapasową i stwierdza, że ​​tylko 3,8 MB plików zostało zmienionych.

Aby zobaczyć, co zostało zapisane w kopii zapasowej, zobacz TimeTracker (GUI) lub timedog (wiersz poleceń). Zauważ, że nawet jeśli są uruchomione jako administrator, czasami programy te muszą być uruchomione jako root, aby zobaczyć wszystkie pliki. Jeśli tego nie zrobisz, narzędzia te mogą na przykład nie uwzględniać kopii zapasowych dzienników i danych MySQL, które są własnością _mysql w kole grup :

cd "/ Volumes / Backup of XX / Backups.backupdb / XX / Latest"
sudo ls -l "Macintosh HD / usr / local / mysql-5.0.51a-osx10.5-x86"
[..]
drwxr-x --- @ 6 _mysql wheel 374 Dane z 2 lipca 2 20:05

W takich przypadkach oba narzędzia zgłaszają (po cichu) niższy całkowity rozmiar kopii zapasowej i mniej plików niż backupddzienniki w konsoli. Tak więc, jeśli te wartości nie są zgodne z dzienników, to dla TimeTracker:

sudo ~ / Downloads / TimeTracker.app / Contents / MacOS / TimeTracker

Podobnie w przypadku timedog:

cd "/ Volumes / Backup of XX / Backups.backupdb / XX" 
sudo ~ / Downloads / timedog

Aby łatwo znaleźć duże pliki na dysku twardym zobaczyć Disk Inventory X . Ten program nie ma nic wspólnego z Time Machine, ale może pomóc w badaniu problemów, na przykład gdy zastanawiasz się, dlaczego kopia zapasowa jest znacznie mniejsza niż miejsce na dysku twardym. Zauważ, że ten program prawdopodobnie zawsze będzie raportował mniejszą całkowitą ilość miejsca na dysku w tytule okna niż na ekranie, na którym można wybrać dysk do zbadania (nawet gdy działa jako root i wybiera menu Widok, Pokaż rozmiar pliku fizycznego). Ale jeśli zgłaszany całkowity rozmiar jest naprawdę dużo mniejszy niż rzeczywiste sumy użyte na komputerze Mac, może pomóc uruchomić jako root:

sudo „$ HOME / Pobieranie / Inwentaryzacja dysku X.app/Contents/MacOS/Disk Inventory X”

Aby usunąć pliki z kopii zapasowej (np. Jeśli zdarzy ci się odkryć, że Time Machine faktycznie tworzy kopie zapasowe niektórych dużych plików, takich jak niekontrolowany plik dziennika MySQL), Apple pisze :

Chcesz usunąć wszystkie wystąpienia pliku lub folderu, którego kopię zapasową utworzono wcześniej? Wystarczająco łatwe. Uruchom Time Machine, wybierz element do usunięcia, a następnie wybierz „Usuń ze wszystkich kopii zapasowych” z menu akcji na pasku narzędzi Findera.

Teraz, jeśli pliki, które chcesz usunąć, są widoczne tylko jako root, powinieneś wywołać „Enter Time Machine” jako root. Wymaga to najpierw uruchomienia Findera jako root:

sudo /System/Library/CoreServices/Finder.app/Contents/MacOS/Finder

To wygląda jak normalny Finder, ale zauważysz root obok ikony folderu domowego na pasku bocznym Findera. Teraz użyj Shift-Cmd-G (menu Idź, przejdź do folderu), aby na przykład przejść do /usr/locali znaleźć folder, z którego chcesz usunąć pliki z dysku kopii zapasowej. Następnie wpisz Time Machine (i ponownie sprawdź, czy katalog główny jest wyświetlany obok ikony folderu domowego) i postępuj zgodnie z instrukcjami Apple. Po zakończeniu usuwania plików z kopii zapasowej naciśnij Ctrl-C w Terminalu, aby zatrzymać root-Findera. (Musiałem także wylogować się z komputera Mac, ponieważ dysk zdalny nie odmontowałby się prawidłowo).

Jeśli używasz rzadkiego pakietu (na przykład podczas tworzenia kopii zapasowej w sieci), żadne wolne miejsce nie zostanie odzyskane automatycznie (lub: nie, dopóki przestrzeń nie będzie potrzebna). Aby to egzekwować, zobacz Jak odzyskać wszystkie / większość wolnego miejsca z sparsebundle na OSX . Dotyczy to nie tylko plików usuniętych ręcznie, ale także plików usuniętych przez Time Machine w celu wygasania godzinnych lub codziennych kopii zapasowych podczas przerzedzania po kopii zapasowej .

Time Machine faktycznie skompresuje sam rzadki pakiet, gdy zabraknie miejsca na dysku. Wygląda jednak na to, że może najpierw usunąć niektóre stare kopie zapasowe podczas przerzedzania kopii zapasowych , więc może rozsądnie jest ręcznie kompaktować, jeśli kiedykolwiek usunąłeś jakieś duże pliki lub jeśli wygasłe kopie zapasowe mogły zawierać duże pliki:

Rozpoczęcie przerzedzania przed kopią zapasową: wymagane 53,57 GB (w tym wypełnianie), 
    Dostępne 9,90 GB 
Nie istnieją wygasłe kopie zapasowe - usuwanie najstarszych kopii zapasowych w celu zwolnienia miejsca 
Usunięto kopię zapasową / woluminy / kopię zapasową XX / Backups.backupdb / XX / 2007-12-20-172543:
    Teraz dostępne jest 9,90 GB 
Usunięto kopię zapasową / woluminy / kopię zapasową XX / Backups.backupdb / XX / 2007-12-31-005523:
    Teraz dostępne jest 9,90 GB 
Usunięte 2 kopie zapasowe: najstarsza kopia zapasowa to teraz 8 stycznia 2008 
Zatrzymywanie tworzenia kopii zapasowej. 
Kopia zapasowa została anulowana. 
Obraz dysku wysuniętego wehikułu czasu. 
Kompaktowanie obrazu dysku z kopią zapasową w celu odzyskania wolnego miejsca 
Ukończono kompresję obrazu dysku kopii zapasowej 
Rozpoczęcie standardowej kopii zapasowej
[..]
Rozpoczęcie przerzedzania przed kopią zapasową: wymagane 53,57 GB (w tym wypełnianie), 
    Dostępne 12,75 GB

Ogromne podziękowania dla Adama Cohen-Rose za testowanie powyższego; zobacz jego blog, aby uzyskać więcej informacji!

Arjan
źródło
Niektóre oprogramowanie może wykluczyć się z kopii zapasowej Time Machine, ustawiając rozszerzony atrybut com.apple.metadata:com_apple_backup_excludeItemw swoich plikach. Podobnie jak wersje VMware Fusion starsze niż 1.1.2: blogs.vmware.com/teamfusion/2008/04/vmware-fusion-1.html Zobacz także 10.5: Pokaż pliki, których Time Machine nie tworzy kopii zapasowej na macosxhints.com/article. php? story = 20080328025026826, który zawiera link do Wykluczeń Wehikułu
Arjan
Zobacz superuser.com/questions/35152/…, aby uzyskać więcej informacji na temat uruchamiania Time Machine jako root w Snow Leopard.
Arjan
1

Gdy utkniesz w „Przygotowaniu” (ThinningPreBackup)

root# tmutil status
Backup session status:
{
    BackupPhase = ThinningPreBackup;
    ClientID = "com.apple.backupd";
    DateOfStateChange = "2018-10-20 12:02:54 +0000";
    DestinationID = "XXXXXX0A-1XB7-4X3B-A791-6XXXXX4325D89B";
    DestinationMountPoint = "/Volumes/TimeMachineXXX";
    Percent = "-1";
    Running = 1;
    Stopping = 0;
}

Użyj lsof, aby zobaczyć, do jakich plików mają dostęp kopie zapasowe - ostatni plik powinien się zmieniać:

root# ps -ef | grep backupd
    0    91     1   0  9:39pm ??         0:00.15 /System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper -launchd
    0   552     1   0  9:59pm ??         0:49.54 /System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd
    0  1244  1156   0 10:30pm ttys003    0:00.01 grep backupd
root# lsof -p 552
COMMAND PID USER   FD   TYPE DEVICE   SIZE/OFF     NODE NAME
backupd 552 root  cwd    DIR    1,4       1292        2 /
backupd 552 root  txt    REG    1,4     769168 67640888 /System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd
backupd 552 root  txt    REG    1,4   26771408 67698052 /usr/share/icu/icudt59l.dat
backupd 552 root  txt    REG    1,4     236208 67730774 /private/var/db/timezone/tz/2018e.1.0/icutz/icutz44l.dat
backupd 552 root  txt    REG    1,4     841456 67695858 /usr/lib/dyld
backupd 552 root  txt    REG    1,4 1174183936 69140457 /private/var/db/dyld/dyld_shared_cache_x86_64
backupd 552 root    0r   CHR    3,2        0t0      306 /dev/null
backupd 552 root    1u   CHR    3,2        0t0      306 /dev/null
backupd 552 root    2u   CHR    3,2        0t0      306 /dev/null
backupd 552 root    3w   REG    1,9        686  5515544 /Volumes/TimeMachine2/Backups.backupdb/XXXXXXXXXX/2018-10-20-220254.inProgress/.Backup.561729775.162983.log
backupd 552 root    4r   DIR    1,4        136 68977542 /Applications/Xcode.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/tvOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/CoreLocation.framework/English.lproj

Oznacza to, że coś robi - i uzbroić się w cierpliwość ...

PaulS
źródło