Apa yang dilakukan Time Machine?

18

Terkadang OS X memberi tahu saya bahwa ini "Mempersiapkan cadangan ..." untuk waktu yang sangat lama. Waktu yang dibutuhkan tampaknya tidak memiliki korelasi dengan jumlah data yang akan didukung. Sama untuk tahap "Finishing backup ...".

Pertanyaannya: apa yang dilakukan OS X saat "Mempersiapkan cadangan ..." dan "Menyelesaikan pencadangan ..."?

Saya tahu ini mencari tahu apa yang harus dicadangkan dan kemudian merekam perubahan, tapi tentu saja waktu yang dibutuhkan harus sebanding dengan jumlah data yang diubah. Ada banyak ruang disk (jadi saya berasumsi itu tidak menghapus cadangan lama). Saya menggunakan TimeCapsule jika itu membuat perbedaan. Tidak ada yang salah dengan itu, saya hanya ingin tahu.

Stephen Darlington
sumber

Jawaban:

20

Ini jawaban dari forum lain (poster orisinal tidak saya kenal):

Tahap "persiapan" di Time Machine biasanya cepat, karena Time Machine menggunakan log aktivitas sistem file untuk mengetahui di mana menemukan perubahan yang perlu didukung.

Tetapi ada beberapa hal yang dapat Anda lakukan untuk membuat log itu tidak dapat dipercaya. Ketika Time Machine menemukan log MUNGKIN tidak valid, itu melakukan pemindaian penuh sistem file Anda untuk menentukan apa yang benar-benar perlu dicadangkan. Ini bisa memakan waktu cukup lama. Pada Powerbook saya (dan dengan drive Time Machine eksternal firewire) dapat menghasilkan tahap "persiapan" yang berlangsung 20 menit. Jika Anda membiarkan Time Machine melanjutkan, pada akhirnya akan mencari tahu apa yang benar-benar perlu ditambahkan ke disk cadangan dan akan melanjutkan. Ini, tentu saja, lebih baik dari pada hanya mempertaruhkan log dengan benar atau hanya mencadangkan SEMUA lagi walaupun hanya beberapa file yang sebenarnya telah berubah (yang akan memakan waktu lebih lama dan menghabiskan lebih banyak ruang disk Time Machine).

Pada hari-hari awal instalasi Leopard, salah satu hal paling umum yang dapat Anda lakukan yang akan membuat log tidak dapat dipercaya adalah mem-boot dari DVD instalasi Leopard. Setiap kali Anda melakukan itu, waktu berikutnya Time Machine menjalankannya akan menemukan bahwa hard drive Anda MUNGKIN telah dimodifikasi tanpa perubahan yang tercermin dalam log. Jadi ia melakukan pemindaian penuh - tahap "persiapan" yang panjang - untuk memastikan semuanya beres.

Komandan Keen
sumber
Sebenarnya, log tidak hanya digunakan oleh Time Machine. Dan Mac Anda yang dapat menyatakan log lama tidak valid. Anda dapat mencari Konsol untuk fseventsdmelihat "peristiwa masuk / Volume / .. tidak sinkron dengan volume. Menghancurkan log lama." Log yang baru dibuat juga akan memiliki pengenal baru, yang tidak lagi cocok dengan id yang disimpan dengan cadangan. Ini memberitahu Time Machine untuk membandingkan harddisk Anda dengan cadangan terakhir. Jika seseorang menggunakan beberapa disk cadangan, maka jika fseventsdmembuat log baru, maka Time Machine pada akhirnya akan berubah menjadi "Event store UUIDs tidak cocok" untuk setiap disk cadangan.
Arjan
Memasang drive di Windows menggunakan driver sistem file baca / tulis seperti MacDrive juga akan memicu pemindaian sistem file lengkap saat berikutnya Time Machine mencadangkannya. (Memasang drive menggunakan driver sistem file read-only di Boot Camp, di sisi lain, tidak)
Brant
10

Untuk memuji jawaban Komandan Keen, saya sarankan membaca pandangan mendalam pada Time Machine oleh Earthling Soft. Selain itu informasi lebih lanjut dicatat ke system.log oleh backupd (yang akan mengatakan mengapa status persiapannya sangat lama dan semacamnya)

Chealion
sumber
1
+1 - artikel bagus!
Komandan Keen
Artikel bagus Seandainya aku bisa menandai dua jawaban yang diterima!
Stephen Darlington
Ars Technica memiliki artikel bagus lainnya, tetapi saya kira tautan Soft Earthling telah mencakup semua: arstechnica.com/apple/reviews/2007/10/mac-os-x-10-5.ars/14 Dan untuk pengembang yang membaca ini: lihat tangan di developer.apple.com/mac/articles/cocoa/filesystemevents.html
Arjan
10

Untuk mudah melihat backupdlog kita lihat di Time Machine Buddy widget. Perhatikan juga bahwa ada log lain di disk cadangan itu sendiri, dalam file tersembunyi .Backup.logyang dapat ditemukan di folder setiap cadangan. Ini memberikan beberapa informasi selain backupdlog.

Perhatikan bahwa seringkali log menunjukkan angka yang tampaknya tidak cocok:

Tidak diperlukan penipisan cadangan di muka: 821,4 MB diminta (termasuk padding) [..]
Menyalin 1630 file (3,8 MB) dari volume Macintosh HD.

Di atas, lebih sedikit file yang benar-benar disalin daripada yang diperkirakan sebelumnya. Karena Time Machine bergantung pada FSEvents yang hanya melaporkan perubahan direktori, saya berasumsi bahwa dalam contoh di atas direktori ini menyimpan total 821,4 MB dalam file. Ketika benar-benar menyalin file, Time Machine kemudian membandingkan direktori yang diubah pada hard disk dengan cadangan, dan menemukan bahwa hanya 3,8 MB file yang benar-benar diubah.

Untuk melihat apa yang telah ditulis ke cadangan, lihat TimeTracker (GUI) atau timedog (baris perintah). Perhatikan bahwa, bahkan ketika dijalankan sebagai pengguna admin, terkadang program ini harus dijalankan sebagai root untuk melihat semua file. Ketika tidak melakukan itu, alat-alat ini mungkin misalnya tidak memperhitungkan cadangan log dan data MySQL, yang dimiliki oleh _mysql di grup wheel :

cd "/ Volume / Cadangan XX / Backups.backupdb / XX / Terbaru"
sudo ls -l "Macintosh HD / usr / local / mysql-5.0.51a-osx10.5-x86"
[..]
drwxr-x --- @ 6 _mysql wheel 374 2 Jul 20:05 data

Dalam kasus tersebut kedua alat akan (secara diam-diam) melaporkan ukuran cadangan total yang lebih rendah dan lebih sedikit file daripada backupdlog di Konsol. Jadi, jika angkanya tidak cocok dengan log, maka untuk TimeTracker:

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

Demikian juga untuk timedog:

cd "/ Volume / Cadangan XX / Backups.backupdb / XX" 
sudo ~ / Downloads / timedog

Untuk mudah menemukan file besar pada hard disk Anda melihat Disk Persediaan X . Program ini tidak ada hubungannya dengan Time Machine, tetapi mungkin membantu menyelidiki masalah, seperti ketika Anda bertanya-tanya mengapa cadangan Anda jauh lebih kecil daripada ruang yang digunakan pada hard disk Anda. Perhatikan bahwa program ini mungkin akan selalu melaporkan lebih sedikit ruang disk total dalam judul jendelanya daripada di layarnya tempat orang dapat memilih disk mana yang akan diselidiki (bahkan ketika dijalankan sebagai root dan memilih menu Lihat, Tampilkan Ukuran File Fisik). Tetapi jika ukuran total yang dilaporkan benar-benar jauh lebih kecil daripada total sebenarnya yang digunakan pada Mac Anda, maka mungkin membantu menjalankannya sebagai root:

sudo "$ HOME / Downloads / Disk Inventory X.app/Contents/MacOS/Disk Inventory X"

Untuk menghapus file dari cadangan (seperti jika Anda mengetahui bahwa Time Machine sebenarnya mencadangkan beberapa file besar, seperti file log MySQL yang dapat dijalankan), Apple menulis :

Ingin menghapus semua instance file atau folder yang sebelumnya didukung? Cukup mudah. Luncurkan Time Machine, pilih item yang akan dihapus, lalu pilih "Hapus dari semua cadangan" dari menu tindakan di toolbar Finder.

Sekarang, jika file yang ingin Anda hapus hanya terlihat untuk di-root, maka Anda harus memanggil "Enter Time Machine" sebagai root juga. Dan itu membutuhkan Finder untuk dimulai sebagai root terlebih dahulu:

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

Ini terlihat seperti Finder normal, tetapi Anda akan melihat root di sebelah ikon folder rumah di bilah samping Finder. Sekarang gunakan Shift-Cmd-G (menu Go, Go to Folder) untuk mendapatkan, misalnya, /usr/localdan menemukan folder dari mana Anda ingin menghapus file dari disk cadangan. Selanjutnya, masukkan Time Machine (dan sekali lagi validasikan bahwa root ditampilkan di sebelah ikon folder rumah) dan ikuti instruksi Apple. Setelah selesai menghapus file dari cadangan, tekan Ctrl-C di Terminal untuk menghentikan Finder-root. (Saya juga perlu keluar dari Mac saya karena disk jarak jauh tidak akan lepas dengan benar.)

Jika Anda menggunakan bundel jarang (seperti saat menggunakan cadangan di jaringan) maka ruang kosong apa pun tidak akan direklamasi secara otomatis (atau: tidak sampai ruang dibutuhkan). Untuk menegakkan ini, lihat Bagaimana kembali semua / ruang paling bebas dari sparsebundle pada OS X . Ini tidak hanya berlaku untuk file yang Anda hapus secara manual, tetapi juga untuk file yang dihapus oleh Time Machine untuk cadangan per jam atau harian yang kadaluwarsa, selama penipisan pasca-pencadangan .

Time Machine akan benar-benar memadatkan bundel yang jarang itu sendiri, ketika ruang disk habis. Tetapi tampaknya ini mungkin pertama-tama menghapus beberapa cadangan lama selama penipisan pra-pencadangan , jadi mungkin lebih bijaksana untuk memadatkan secara manual jika Anda pernah menghapus beberapa file besar, atau jika cadangan yang kadaluwarsa mungkin menyertakan file besar:

Mulai penipisan pra-pencadangan: diminta 53,57 GB (termasuk bantalan), 
    9,90 GB tersedia 
Tidak ada cadangan yang kedaluwarsa - menghapus cadangan terlama untuk membuat ruang 
Cadangan yang dihapus / Volume / Cadangan XX / Backups.backupdb / XX / 2007-12-20-172543:
    9,90 GB sekarang tersedia 
Cadangan yang dihapus / Volume / Cadangan XX / Backups.backupdb / XX / 2007-12-31-005523:
    9,90 GB sekarang tersedia 
2 cadangan yang dihapus: cadangan terlama sekarang 8 Jan 2008 
Menghentikan pencadangan. 
Pencadangan dibatalkan. 
Gambar disk Time Machine yang dikeluarkan. 
Memadatkan gambar disk cadangan untuk memulihkan ruang kosong 
Komposisi gambar disk cadangan yang lengkap 
Mulai cadangan standar
[..]
Mulai penipisan pra-pencadangan: diminta 53,57 GB (termasuk bantalan), 
    12,75 GB tersedia

Terima kasih banyak kepada Adam Cohen-Rose untuk menguji hal di atas; lihat blognya untuk lebih jelasnya!

Arjan
sumber
Beberapa perangkat lunak dapat mengecualikan dirinya dari cadangan Time Machine, dengan mengatur atribut yang diperluas com.apple.metadata:com_apple_backup_excludeItempada file-nya. Seperti versi VMware Fusion versi pra-1.1.2: blogs.vmware.com/teamfusion/2008/04/vmware-fusion-1.html Lihat juga 10.5: Tampilkan file yang tidak didukung oleh Time Machine di macosxhints.com/article. php? story = 20080328025026826 yang mencakup tautan ke Time Machine Exclusions di shiftedbits.org/2007/10/31/time-machine-exclusions
Arjan
Lihat superuser.com/questions/35152/… untuk rincian lebih lanjut tentang menjalankan Time Machine sebagai root di Snow Leopard.
Arjan
1

Saat macet di "Mempersiapkan" (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;
}

Gunakan lsof untuk melihat file apa yang diakses cadangan - file terakhir harus diubah:

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

Ini menunjukkan ia melakukan sesuatu - dan bersabar ...

PaulS
sumber