时间机器在做什么?

时间机器在做什么?

有时 OS X 会告诉我“正在准备备份...”需要很长时间。所花的时间似乎与要备份的数据量无关。“完成备份...”阶段也是如此。

问题:当 OS X 处于“准备备份...”和“完成备份...”状态时它在做什么?

我知道它正在确定要备份什么,然后记录更改,但这所需的时间肯定应该与更改的数据量成正比。磁盘空间充足(所以我假设它不会删除旧备份)。如果这有什么不同的话,我正在使用 TimeCapsule。它没什么问题,我只是好奇。

答案1

以下是另一个论坛的答案(我不认识原始发帖人):

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

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

在 Leopard 安装的早期阶段,最常见的做法之一就是从 Leopard 安装 DVD 启动,这会使日志不可信。每次这样做时,Time Machine 下次运行时都会发现您的硬盘驱动器可能已被修改,但更改不会反映在日志中。因此,它会进行全面扫描(一个漫长的“准备”阶段),以确保一切正常。

答案2

为了补充 Keen 指挥官的回答,我建议你深入阅读时光机器由 Earthling Soft 提供。此外,backupd 还会将更多信息记录到 system.log 中(这将说明为什么准备状态如此之长等等)

答案3

轻松查看backupd日志看看时光机伙伴小部件。还请注意,备份磁盘本身还有另一个日志,位于.Backup.log每个备份文件夹中的隐藏文件中。这提供了除backupd日志之外的一些其他信息。

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

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

上图显示,实际复制的文件数量比最初预测的要少。由于 Time Machine 依赖于FS事件它只报告更改的目录,我假设在上面的例子中,这些目录总共包含 821.4 MB 的文件。在实际复制文件时,Time Machine 会将硬盘上更改的目录与备份进行比较,发现实际上只有 3.8 MB 的文件发生了更改。

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

cd“/Volumes/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 7月 2 20:05 数据

在这些情况下,两种工具都会(悄悄地)报告总备份大小和文件数量低于backupd控制台中的日志。因此,如果数字与日志不匹配,那么对于 TimeTracker:

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

同样,对于 timedog:

cd“/Volumes/XX 的备份/Backups.backupdb/XX”
sudo ~/下载/timedog

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

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

从备份中删除文件(例如,如果你碰巧发现 Time Machine 实际上正在备份一些大文件,例如失控的 MySQL 日志文件),苹果写道

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

现在,如果您要删除的文件只有 root 才能看到,那么您也应该以 root 身份调用“Enter Time Machine”。这需要先以 root 身份启动 Finder:

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

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

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

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

开始预备份细化:请求 53.57 GB(包括填充),
    9.90 GB 可用
不存在过期备份 - 删除最旧的备份以腾出空间
已删除备份 /Volumes/Backup of XX/Backups.backupdb/XX/2007-12-20-172543:
    9.90 GB 现已上市
已删除备份 /Volumes/Backup of 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 对上述内容进行测试;请参阅他的博客更多细节!

答案4

当卡在“准备”状态时(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 身份运行) 查看备份正在访问哪些文件 - 最后一个文件应该正在更改:

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

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

相关内容