时间机器在做什么?


18

有时OS X会告诉我,它正在“准备备份...”时间很长。花费的时间似乎与要备份的数据量无关。与“完成备份...”阶段相同。

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

我知道它正在弄清楚要备份什么,然后记录更改,但是可以肯定,所需的时间应与更改的数据量成正比。有足够的空间磁盘空间(因此,我认为它不会删除旧的备份)。我正在使用TimeCapsule,如果有任何区别。没问题,我很好奇。

Answers:


20

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

Time Machine的“准备”阶段通常很快,因为Time Machine使用文件系统活动的日志来了解在哪里可以找到需要备份的更改。

但是您可以采取一些措施使该日志不可信。当Time Machine发现日志MIGHT无效时,它将对您的文件系统进行全面扫描,以确定真正需要备份的内容。这可能需要一段时间。在我的Powerbook(以及带火线的外部Time Machine驱动器)上,它可能会导致持续20分钟的“准备”阶段。如果让Time Machine继续运行,它将最终确定真正需要添加到备份磁盘的内容并将继续。当然,这比仅仅赌博日志正确或再次备份所有内容要好,即使实际上只有几个文件已更改(这将花费更长的时间并占用更多的Time Machine磁盘空间)。

在Leopard安装的初期,您可以执行的最常见的操作之一就是从Leopard安装DVD进行引导,这会使日志不可信。每次执行此操作时,Time Machine下次运行时,都会发现您的硬盘驱动器MIGHT已修改,但更改未反映在日志中。因此,它会进行全面扫描-一个漫长的“准备”阶段-以确保它能正确处理。


实际上,日志不仅仅被Time Machine使用。您的Mac可以宣布旧日志无效。您可以在控制台中搜索fseventsd以查看“ / Volumes / ..中的事件日志与卷不同步。销毁旧日志。” 新创建的日志还将具有新的标识符,该标识符将不再与备份中存储的ID匹配。这告诉Time Machine将您的硬盘与上次备份进行比较。如果使用多个备份磁盘,则如果fseventsd创建了新日志,则Time Machine最终将为每个备份磁盘运行一个“事件存储UUID不匹配”
Arjan

在下一次Time Machine对其进行备份时,使用读/写文件系统驱动程序(例如MacDrive)在Windows中安装驱动器也会触发完整的文件系统扫描。(另一方面,不使用Boot Camp中的只读文件系统驱动器安装驱动器)
Brant

10

为了赞扬基恩司令的回答,我建议深入阅读Earthling Soft的《时光机》。另外,更多信息通过备份记录到system.log中(这将说明准备状态为何如此之长)。


1
+1-很棒的文章!
基恩指挥官

很棒的文章。希望我可以将两个答案标记为已接受!
斯蒂芬·达灵顿,

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

10

要轻松查看backupd日志,请查看Time Machine Buddy小部件。另请注意,备份磁盘本身上还有另一个日志,位于.Backup.log每个备份文件夹中的隐藏文件中。除了backupd日志以外,这还提供了其他信息。

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

无需备份前精简:请求821.4 MB(包括填充)[..]
从Macintosh HD卷复制了1630个文件(3.8 MB)。

以上,实际复制的文件少于最初预测的文件。由于Time Machine依赖于仅报告更改目录的FSEvent,因此我假设在上面的示例中,这些目录在文件中总共拥有821.4 MB。在实际复制文件时,Time Machine然后将硬盘上已更改的目录与备份进行比较,发现实际上仅3.8 MB的文件已更改。

要查看已写入备份的内容,请参阅TimeTracker(GUI)或timedog(命令行)。请注意,即使以管理员用户身份运行,有时也需要以root用户身份运行这些程序才能查看所有文件。当不这样做时,例如,这些工具可能不考虑MySQL日志和数据的备份,该备份由group wheel中_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:

须藤〜/ Downloads / TimeTracker.app / Contents / MacOS / TimeTracker

同样,对于timedog:

cd“ /卷/ XX的备份/Backups.backupdb/XX” 
须藤〜/下载/时间狗

要轻松找到硬盘上的大文件,请参阅“ 磁盘清单X”。该程序与Time Machine无关,但可能有助于调查问题,例如,当您想知道为什么备份比硬盘上使用的空间小得多时。请注意,此程序在其窗口标题中报告的总磁盘空间可能总比在其屏幕上可以选择要调查的磁盘的屏幕要少(即使以root身份运行并选择菜单“查看,显示物理文件大小”)。但是,如果报告的总大小确实比Mac上实际使用的总大小小很多,则可能有助于以root用户身份运行:

sudo“ $ HOME / Downloads /磁盘清单X.app/Contents/MacOS/磁盘清单X”

为了从备份中删除文件(例如,如果您偶然发现Time Machine实际上正在备份一些大文件,例如失控的MySQL日志文件),Apple写道

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

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

须藤/System/Library/CoreServices/Finder.app/Contents/MacOS/Finder

这看起来像是普通的Finder,但是您会注意到Finder侧边栏中主文件夹图标旁边的root。现在,例如,使用Shift-Cmd-G(菜单转到,转到文件夹)进入,/usr/local并找到要从备份磁盘删除文件的文件夹。接下来,输入Time Machine(并再次确认根目录显示在主文件夹图标旁边),然后按照Apple的说明进行操作。从备份中删除文件后,请在终端中按Ctrl-C以停止根查找器。(我还需要注销Mac,因为远程磁盘无法正确卸载。)

如果您使用的是稀疏捆绑包(例如在网络上使用备份时),则不会自动回收任何释放的空间(或:直到需要该空间时才回收)。要强制执行此操作,请参阅如何在OS X上从稀疏包中回收所有/大部分可用空间。这不仅适用于您手动删除的文件,而且还适用于在备份后精简过程中Time Machine每小时或每天备份到期的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日 
停止备份。 
备份已取消。 
弹出的Time Machine磁盘映像。 
压缩备份磁盘映像以恢复可用空间 
完成备份磁盘映像压缩 
开始标准备份
[..]
开始备份前间期精简:请求53.57 GB(包括填充), 
    可用12.75 GB

非常感谢Adam Cohen-Rose进行了上述测试;看到他的博客了解更多详情!


通过com.apple.metadata:com_apple_backup_excludeItem在其文件上设置扩展属性,某些软件可能会将其自身从Time Machine备份中排除。像前1.1.2版本的VMware Fusion:blogs.vmware.com/teamfusion/2008/04/vmware-fusion-1.html参见10.5:显示文件的Time Machine不备份macosxhints.com/article。 php?story = 20080328025026826(包含指向time Machine排除项的链接),位于shiftedbits.org/2007/10/31/time-machine-exclusions
Arjan

有关在Snow Leopard中以root身份运行Time Machine的更多详细信息,请参见superuser.com/questions/35152/…
Arjan

1

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

这表明它正在做某事-请耐心等待...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.