题 Time Machine在做什么?


有时候OS X会告诉我它是“准备备份......”,但却耗费了大量时间。所花费的时间似乎与要备份的数据量无关。 “完成备份......”阶段也是如此。

问题是:OS X在“准备备份......”和“完成备份......”时正在做什么?

我知道它正在计算备份内容然后记录更改,但是这个时间肯定应该与更改的数据量成比例。有足够的空间磁盘空间(所以我认为它不会删除旧备份)。如果这有任何区别,我正在使用TimeCapsule。没有什么是错的,我只是好奇。


15
2018-05-18 13:48






答案:


以下是另一个论坛的答案(我不知道的原始海报):

Time Machine中的“准备”阶段   通常很快,因为Time Machine   使用文件系统活动的日志   知道在哪里找到变化   需要备份。

但是你可以做些事情   使该日志不值得信任。到时   机器发现日志可能不是   有效,它会完整扫描你的   文件系统确定了什么   需要备份。这可能需要一个   而。在我的Powerbook上(和一个   firewire外部Time Machine驱动器)   它可以导致“准备”阶段   持续20分钟。如果你让时间   机器继续,它最终会   找出真正需要的东西   添加到备份磁盘并将   继续。当然,这更好   而不仅仅是赌博日志是正确的   或者只是再次备份一切   即使只有少数文件可能   实际上已经改变了(这会改变   需要更长时间并消耗更多时间   机器磁盘空间)。

在Leopard的这些早期   安装,最常见的之一   你能做的事情就是这样   log untrustworthy正在启动   豹安装DVD。每次你这样做   那次,Time Machine下次运行   它会发现你的硬盘   可能没有修改过   更改反映在日志中。所以   它完成全扫描 - 很长时间   “准备”阶段 - 确保它获得   事情是对的。


19
2018-05-18 13:54



实际上,日志不仅仅是Time Machine使用的。而且你的Mac可以声明旧日志无效。您可以搜索控制台 fseventsd 查看 “事件登录/ Volumes / ..与卷不同步。销毁旧日志。” 新创建的日志还将具有新标识符,该标识符将不再与存储在备份中的标识匹配。这告诉Time Machine将您的硬盘与上次备份进行比较。如果使用多个备份磁盘,则if fseventsd 创建了一个新的日志,然后Time Machine最终会遇到一个 “事件存储UUID不匹配” 对于每个备份磁盘。 - Arjan
使用读/写文件系统驱动程序(如MacDrive)在Windows中安装驱动器也会在下次Time Machine备份时触发完整的文件系统扫描。 (另一方面,在Boot Camp中使用只读文件系统驱动程序安装驱动器不会) - Brant


为了赞美Keen指挥官的回答,我建议您深入了解一下 时间机器 通过Earthling Soft。另外,通过backupd将更多信息记录到system.log中(这将说明为什么准备状态如此之长等)


10
2018-05-18 17:32



+1 - 优秀的文章! - Commander Keen
好文章。希望我能接受两个答案! - Stephen Darlington
Ars Technica还有另一篇好文章,但我猜Earthling Soft链接涵盖了所有内容: arstechnica.com/apple/reviews/2007/10/mac-os-x-10-5.ars/14 对于阅读此内容的开发人员:请亲自动手 developer.apple.com/mac/articles/cocoa/filesystemevents.html - Arjan


轻松查看 backupd 日志 看看 时间机器好友 小部件。另请注意,在隐藏文件中,备份磁盘本身还有另一个日志 .Backup.log 可以在每个备份的文件夹中找到。这提供了一些其他信息 backupd 日志。

请注意,日志通常会显示似乎不匹配的数字:

无需预备稀释:请求821.4 MB(包括填充)[..]
从Macintosh HD卷复制1630个文件(3.8 MB)。

上面,实际复制的文件比首次预测的少。正如Time Machine所依赖的那样 FSEvents 它只报告更改的目录,我假设在上面的例子中这些目录共有821.4 MB的文件。在实际复制文件时,Time Machine会将硬盘上更改的目录与备份进行比较,并发现实际只更改了3.8 MB文件。

查看已写入备份的内容 看到 TimeTracker (GUI)或 timedog (命令行)。请注意,即使以管理员用户身份运行,有时这些程序也需要以root身份运行才能查看所有文件。如果不这样做,这些工具可能不会将MySQL日志和数据的备份考虑在内 _mysql 在小组中

cd“/卷/备份XX / Backups.backupdb / XX /最新”
sudo ls -l“Macintosh HD / usr / local / mysql-5.0.51a-osx10.5-x86”
[..]
drwxr-x --- @ 6 _mysql wheel 374 Jul 2 20:05数据

在这些情况下,两个工具将(静默地)报告较少的总备份大小和较少的文件 backupd 登录控制台。所以, 如果 数字与日志不匹配,然后是TimeTracker:

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

同样,对于timedog:

cd“/卷/备份XX / Backups.backupdb / XX”
sudo~ / Downloads / timedog

轻松查找硬盘上的大文件 看到 磁盘库存X.。此程序与Time Machine无关,但可能有助于调查问题,例如当您想知道为什么备份比硬盘上使用的空间小得多时。请注意,此程序可能始终报告其窗口标题中的总磁盘空间少于其屏幕,其中可以选择要调查的磁盘(即使以root身份运行并选择菜单View,Show Physical File Size)。但是,如果报告的总大小确实比Mac上使用的实际总数小很多,那么以root身份运行可能会有所帮助:

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

从备份中删除文件 (就好像你碰巧发现Time Machine实际上正在备份一些巨大的文件,比如一个失控的MySQL日志文件), Apple写道

想要删除以前备份的文件或文件夹的所有实例吗?很容易。启动Time Machine,选择要删除的项目,然后从Finder工具栏的操作菜单中选择“从所有备份中删除”。

现在, 如果 那些要删除的文件只对root可见,那么你也应该以root身份调用“Enter Time Machine”。这要求Finder首先以root身份启动:

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

这看起来像普通的Finder,但你会注意到  在Finder的侧边栏中的主文件夹图标旁边。现在使用Shift-Cmd-G(菜单Go,Go to Folder)来获取,例如, /usr/local 并找到要从备份磁盘中删除文件的文件夹。接下来,输入Time Machine(并再次验证它 显示在主文件夹图标旁边,并按照Apple的说明操作。完成从备份中删除文件后,在终端中按Ctrl-C以停止root-Finder。 (我还需要注销我的Mac,因为远程磁盘无法正常卸载。)

如果您使用稀疏捆绑(就像在网络上使用备份一样) 那么任何释放的空间都不会自动回收(或者:直到需要空间)。要强制执行此操作,请参阅 如何从OS X上的sparsebundle中回收所有/大多数可用空间。这不仅适用于您手动删除的文件,也适用于Time Machine删除的文件,用于过期的每小时或每日备份 备份后细化

当磁盘空间耗尽时,Time Machine实际上会压缩稀疏包本身。但它似乎可能会先删除一些旧的备份 备份前细化,如果您删除了一些大文件,或者过期的备份可能包含大量文件,那么手动压缩也许是明智之举:

启动备份前细化:请求53.57 GB(包括填充),
    9.90 GB可用
不存在过期备份 - 删除最旧的备份以腾出空间
已删除XX / Backups.backupdb / XX / 2007-12-20-172543的备份/卷/备份:
    9.90 GB现已推出
已删除XX / Backups.backupdb / XX / 2007-12-31-005523的备份/卷/备份:
    9.90 GB现已推出
删除了2个备份:最早的备份现在是2008年1月8日
停止备份。
备份已取消
弹出时间机器磁盘映像。
压缩备份磁盘映像以恢复可用空间
完成备份磁盘映像压缩
开始标准备份
[..]
启动备份前细化:请求53.57 GB(包括填充),
    12.75 GB可用

非常感谢Adam Cohen-Rose对上述进行测试;看到 他的博客 更多细节!


10
2017-07-11 13:21



某些软件可能通过设置扩展属性将自己从Time Machine备份中排除 com.apple.metadata:com_apple_backup_excludeItem 在它的文件上。与1.1之前版本的VMware Fusion一样: blogs.vmware.com/teamfusion/2008/04/vmware-fusion-1.html 也可以看看 10.5:显示Time Machine无法备份的文件 在 macosxhints.com/article.php?story=20080328025026826 其中包括一个链接 时间机器排除 在 shiftedbits.org/2007/10/31/time-machine-exclusions - Arjan
看到 superuser.com/questions/35152/... 有关在Snow Leopard中以Time root身份运行Time Machine的更多详细信息。 - Arjan


卡在“准备”中(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;
}

使用lsof查看备份可以访问的文件 - 最后一个文件应该更改:

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

这表明它正在做一些事情 - 并且耐心等待......


0
2017-10-20 12:39