Time Machine ne yapıyor?


18

Bazen OS X bunun çok büyük bir süre için "Yedek hazırlanıyor ..." olduğunu söylüyor. Bu sürenin, yedeklenecek veri miktarı ile hiçbir korelasyonu yok gibi görünüyor. "Yedekleme tamamlanıyor ..." aşaması için aynıdır.

Soru: OS X "Yedekleme hazırlanıyor ..." ve "Yedekleme tamamlanıyor ..." olduğunda ne yapıyor?

Neyin yedekleneceğini bulup değişiklikleri kaydettiğini biliyorum, ancak bu sürenin kesinlikle değişen veri miktarı ile orantılı olması gerekir. Çok fazla disk alanı var (eski yedeklemeleri silmediğini varsayıyorum). Herhangi bir fark yaratırsa bir TimeCapsule kullanıyorum. Hiçbir şey yanlış gitmiyor, sadece merak ediyorum.

Yanıtlar:


20

İşte başka bir forumdan gelen bir cevap (benim bilmediğim orijinal poster):

Time Machine'deki "hazırlanıyor" aşaması genellikle hızlıdır, çünkü Time Machine, yedeklenmesi gereken değişiklikleri nerede bulacağını bilmek için bir dosya sistemi etkinliği günlüğü kullanır.

Ama bu günlüğü güvenilmez kılmak için yapabileceğiniz şeyler var. Time Machine günlüğün geçerli OLMADIĞINI fark ettiğinde, neyin gerçekten yedeklenmesi gerektiğini belirlemek için dosya sisteminizin tam taramasını yapar. Bu biraz zaman alabilir. Powerbook'umda (ve firewire harici Time Machine sürücüsüyle), 20 dakika süren bir "hazırlık" aşamasına neden olabilir. Time Machine'in devam etmesine izin verirseniz, nihayetinde yedek diske gerçekten neyin eklenmesi gerektiğini anlar ve devam eder. Bu, elbette, sadece birkaç dosya gerçekten değişmiş olsa bile (ki bu çok daha uzun sürecek ve daha fazla Time Machine disk alanı tüketecek) günlüğün doğru olduğundan veya her şeyi tekrar yedeklemekten daha iyidir.

Leopard kurulumlarının bu ilk günlerinde, günlüğü güvenilmez hale getirecek en yaygın şeylerden biri Leopard kurulum DVD'sinden önyükleme yapmaktır. Bunu her yaptığınızda, Time Machine bir dahaki sefer çalıştığında, sabit sürücünüzün değişiklikler günlüğe yansıtılmadan değiştirilebileceğini keşfeder. Böylece tam taramayı - uzun bir “hazırlık” aşaması - işlerin doğru olmasını sağlamak için yapar.


Aslında, günlükler yalnızca Time Machine tarafından kullanılmaz. Eski günlüklerin geçersiz olduğunu bildiren Mac'inizdir. "Olayların oturum açtığı / Birimler / .. ile eşzamanlı olmayan birimin eski günlükleri yokfseventsd etmesini " görmek için Konsolu arayabilirsiniz . Yeni oluşturulan günlükte, artık yedeklemeyle birlikte depolanan kimlikle eşleşmeyecek yeni bir tanımlayıcı bulunur. Bu, Time Machine'e sabit diskinizi son yedeklemeyle karşılaştırmasını söyler. Biri birden çok yedekleme diski kullanıyorsa, fseventsdyeni bir günlük oluşturulduysa, Time Machine sonunda her yedekleme diski için "Olay deposu UUID'leri eşleşmez" şeklinde çalışır .
Arjan

Sürücüyü MacDrive gibi bir okuma / yazma dosya sistemi sürücüsü kullanarak Windows'a monte etmek de Time Machine bir sonraki yedekleme işleminde tam dosya sistemi taramasını tetikler. (Öte yandan, sürücüyü Boot Camp'teki salt okunur dosya sistemi sürücüsünü kullanarak
bağlama

10

Komutan Keen'in cevabını tamamlamak için Time Machine by Earthling Soft'a derinlemesine bir bakış okumanızı tavsiye ederim . Ek olarak system.log dosyasına backupd tarafından kaydedilir (bu hazırlık durumunun neden bu kadar uzun olduğunu söyler)


1
+1 - mükemmel makale!
Komutan Keen

Harika makale. İki cevabı kabul edilmiş olarak işaretleyebilsem!
Stephen Darlington

Ars Technica'nın başka bir iyi makalesi var, ancak sanırım Earthling Soft bağlantısı hepsini kapsıyor: arstechnica.com/apple/reviews/2007/10/mac-os-x-10-5.ars/14 Ve bunu okuyan geliştiriciler için: bkz. developer.apple.com/mac/articles/cocoa/filesystemevents.html
Arjan

10

backupdGünlüğü kolayca görüntülemek için Time Machine Buddy widget'ına bir göz atın . Ayrıca yedekleme diskinin kendisinde, .Backup.logher bir yedeklemenin klasöründe bulunan gizli dosyada başka bir günlük bulunduğunu unutmayın . Bu, backupdgünlüklerden başka bazı bilgiler verir .

Günlüklerin genellikle eşleşmeyen rakamlar gösterdiğini unutmayın:

Yedekleme öncesi inceltme gerekmez: 821,4 MB talep edildi (dolgu dahil) [..]
Macintosh HD'den 1630 dosya (3.8 MB) kopyalandı.

Yukarıda, ilk tahmin edilenden daha az dosya kopyalanır. Time Machine, yalnızca değiştirilen dizinleri bildiren FSEvents'a güvenirken , yukarıdaki örnekte bu dizinlerin dosyalarda toplam 821,4 MB olduğunu varsayıyorum. Dosyaları gerçekten kopyalarken, Time Machine sabit diskteki değiştirilen dizinleri yedeklemeyle karşılaştırır ve yalnızca 3.8 MB'lik dosyaların gerçekten değiştirildiğini bulur.

Yedeklemeye ne yazıldığını görmek için bkz. TimeTracker (GUI) veya timedog (komut satırı). Yönetici kullanıcı olarak çalışırken bile, bazen bu programların tüm dosyaları görebilmesi için root olarak çalıştırılması gerektiğini unutmayın. Bunu yapmazken , bu araçlar, örneğin , grup tekerleğinde _mysql'e ait olan MySQL günlüklerinin ve verilerin yedeklerini dikkate almayabilir :

cd "/ Birimler / XX Yedekleme / Backups.backupdb / XX / Son"
sudo ls -l "Macintosh HD / usr / yerel / mysql-5.0.51a-osx10.5-x86"
[..]
drwxr-x --- @ 6 _mysql tekerlek 374 Tem 2 20:05 veri

Bu durumlarda her iki araç da (sessizce) backupdKonsoldaki günlüklerden daha düşük bir toplam yedekleme boyutu ve daha az dosya bildirir . Yani, eğer sayılar TimeTracker için, sonra günlükleri ile eşleşmiyor:

sudo ~ / Yüklemeler / TimeTracker.app / İçindekiler / MacOS / TimeTracker

Aynı şekilde, timedog için:

cd "/ Birimler / XX Yedekleme / Backups.backupdb / XX" 
sudo ~ / Yüklemeler / timedog

Kolayca sabit diskinizde büyük dosyaları bulmak için bkz Disk Envanter X . Bu programın Time Machine ile ilgisi yoktur, ancak yedeklemenizin neden sabit diskinizde kullanılan alandan çok daha küçük olduğunu merak ettiğinizde sorunların araştırılmasına yardımcı olabilir. Bu programın büyük olasılıkla her zaman pencere başlığında, hangi diskin araştırılacağını seçebileceği (kök olarak çalışırken ve Görünüm, Fiziksel Dosya Boyutunu Göster menüsü seçildiğinde bile) ekran başlığından daha az toplam disk alanı rapor edeceğini unutmayın. Ancak bildirilen toplam boyut, Mac'inizde kullanılan gerçek toplamlardan gerçekten çok daha küçükse, root olarak çalışmanıza yardımcı olabilir:

sudo "$ HOME / Yüklemeler / Disk Envanteri X.app/Contents/MacOS/Disk Envanter X"

Dosyaları yedeklemeden kaldırmak için (Time Machine'in kaçak MySQL günlük dosyası gibi bazı büyük dosyaları yedeklediğini keşfederseniz), Apple şöyle yazar :

Daha önce yedeklenmiş bir dosya veya klasörün tüm örneklerini silmek ister misiniz? Yeterince kolay. Time Machine'i başlatın, silinecek öğeyi seçin, ardından Finder araç çubuğundaki eylem menüsünden "Tüm yedeklerden sil" i seçin.

Şimdi, eğer silmek istediğiniz o dosyalar köküne sadece görülebilir, o zaman root olarak "Time Machine Enter" çağırmak yanı olmalıdır. Bu da Finder'ın önce root olarak başlatılmasını gerektirir:

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

Bu normal bir Finder'a benziyor, ancak Finder'ın kenar çubuğundaki ana klasör simgesinin yanında kök olduğunu fark edeceksiniz . Şimdi, örneğin Shift-Cmd-G'yi (Git, Klasöre Git) kullanın /usr/localve dosyaları yedekleme diskinden silmek istediğiniz klasörü bulun. Ardından, Time Machine girin (ve bir kez daha ana klasörün simgesinin yanında kökün gösterildiğini doğrulayın ) ve Apple'ın talimatlarını izleyin. Dosyaları yedeklemeden silmeyi tamamladığınızda, kök Bulucu'yu durdurmak için Terminal'deki Ctrl-C tuşlarına basın. (Uzak disk düzgün bir şekilde çıkarılamayacağından Mac bilgisayarımdan çıkış yapmam gerekiyordu.)

Seyrek bir paket kullanıyorsanız (ağda yedek kullanırken olduğu gibi), boş alanların hiçbiri otomatik olarak geri kazanılmaz (veya: alan gerekene kadar değil). Bunu zorlamak için, bkz . OS X'te seyrek bir alandan tüm / en çok boş alan nasıl geri kazanılır . Bu yalnızca manuel olarak kaldırdığınız dosyalar için değil, yedekleme sonrası inceltme sırasında Time Machine tarafından süresi dolmuş saatlik veya günlük yedeklemeler için kaldırılan dosyalar için de geçerlidir .

Time Machine, disk alanı bittiğinde seyrek paketin kendisini sıkıştırır. Ancak, yedekleme öncesi inceltme sırasında önce bazı eski yedekleri silebilir gibi görünüyor , bu nedenle, bazı büyük dosyaları sildiyseniz veya süresi dolmuş yedeklemeler büyük dosyalar içeriyorsa, manuel olarak sıkıştırmak akıllıca olacaktır:

Yedekleme öncesi inceltmeye başlama: 53,57 GB talep edildi (dolgu dahil), 
    9.90 GB kullanılabilir 
Süresi dolmuş yedek yok - yer açmak için en eski yedekleri silmek 
Silinen yedekleme / Birimler / XX / Backups.backupdb / XX / 2007-12-20-172543 Yedeklemesi:
    9.90 GB şimdi mevcut 
Silinen yedekleme / Birimler / XX / Backups.backupdb / XX / 2007-12-31-005523 Yedeklemesi:
    9.90 GB şimdi mevcut 
2 yedek silindi: en eski yedekleme şimdi 8 Oca 2008 
Yedekleme durduruluyor. 
Yedekleme iptal edildi. 
Çıkartılan Time Machine disk görüntüsü. 
Boş alanı kurtarmak için yedekleme diski görüntüsünü sıkıştırma 
Tamamlanan yedek disk imajı sıkıştırma 
Standart yedeklemeyi başlatma
[..]
Yedekleme öncesi inceltmeye başlama: 53,57 GB talep edildi (dolgu dahil), 
    12.75 GB kullanılabilir

Yukarıdakileri test ettiği için Adam Cohen-Rose'a çok teşekkürler; bkz onun blog daha fazla ayrıntı için!


Bazı yazılımlar com.apple.metadata:com_apple_backup_excludeItem, dosyalarındaki genişletilmiş özniteliği ayarlayarak kendisini Time Machine yedeklemesinin dışında tutabilir . VMware Fusion'ın 1.1.2 öncesi sürümleri gibi: blogs.vmware.com/teamfusion/2008/04/vmware-fusion-1.html Ayrıca 10.5'e bakın : Time Machine'in macosxhints.com/article adresinde yedeklemediği dosyaları gösterme . ? php hikaye = 20080328025026826 bir bağlantı içerir Zaman Makinesi Hariç at shiftedbits.org/2007/10/31/time-machine-exclusions
Arjan

Time Machine'i Snow Leopard'da root olarak çalıştırma hakkında daha fazla bilgi için superuser.com/questions/35152/… adresine bakın .
Arjan

1

"Hazırlanıyor" içinde sıkıştığında (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;
}

Yedeklemelerin hangi dosyalara eriştiğini görmek için lsof komutunu kullanın - son dosya değişmelidir:

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

Bu, bir şey yaptığını gösterir - ve sabırlı olun ...

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.