如何让 TimeMachine 备份任何路径或已安装卷的内容

如何让 TimeMachine 备份任何路径或已安装卷的内容

我将不同类型的数据保存在不同的加密稀疏包映像中(例如,每个客户端一个),这些映像会在登录时自动挂载,但除我之外任何人都无法打开。因此,登录后,我拥有多个虚拟卷,这些虚拟卷可/Volumes/确保我的客户端数据既安全又有序。

如何在里面包含数据这些TimeMachine 备份中的虚拟卷或者位于任何分区/卷上任何路径的数据?

我找到了一个很有前途的解决方案描述(博客文章不再在线),涉及编辑,com.apple.TimeMachine.plist但我能让 TimeMachine 做的就是备份稀疏包文件本身。不过,我希望它备份已安装映像内的文件 - 比如将 /Volumes/Client_abc/ 添加到 TimeMachine 的搜索路径。


请不要将我的重定向至先前这个问题因为这根本不能解决问题。也请不要告诉我原因思考不应该想要这个答案,因为那也不能解决任何问题。最后请不要说“这不可能”,除非你能从技术上证明这一说法。

答案1

通过阅读 Time Machine 手册和大量博客文章、问答网站答案等,我找到了解决方案。到处都说“Time Machine 不会备份可移动媒体上的数据,只能忍受它或使用奇怪的黑客手段。”。

但事实确实如此,而且非常明显!已安装的 .sparsebundle 映像被视为可移动媒体。

因此,您需要做的就是挂载您的 .sparsebundle(无论是否加密都无所谓),或者 USB 记忆棒或任何应该在 Time Machine 中备份的东西,作为不可移动媒体。

这小段 AppleScript 就可以达到这个目的:

do shell script "hdiutil attach /path/to/your.sparsebundle -notremovable" with administrator privileges

“-notremovable”开关将确保映像以不可移动方式安装,而“具有管理员权限”短语将弹出密码请求程序,要求以 root 身份而不是以您登录的用户帐户身份安装映像。现在,对于 Time Machine 来说,您安装的卷只是一个硬盘,它不再会忽略它。有趣的是,这样安装的媒体仍然可以随时卸载,因此,虽然它们在技术上保持可移动,但从逻辑上讲它们不再是可移动的。

您可以将 AppleScript 保存为 Automator 应用程序并将其包含在启动项中,这样您就可以在登录时始终让当前工作环境为您做好准备。

有一个警告但是:请确保每次 Time Machine 启动备份时都装载了您的映像。如果映像丢失一次,Time Machine 就会认为其中的所有数据都消失了。如果下次映像出现,Time Machine 会将所有数据视为新数据并对整个映像的内容进行完整备份 — 这会迅速填满您的备份驱动器,从而导致备份历史记录严重丢失,因为 Time Machine 会在空间不足时不经询问就开始删除旧备份。

编辑:由于 OS X Lion FileVault 2 可以加密外部备份驱动器所以没有人可以窃取您的备份并从那里恢复未加密的数据。

答案2

我认为你找到的文章是针对旧版本的 Time Machine 的,因为我关注的是较新的指导我可以确认它确实可以在 Mac OS 10.6.7 上使用。文章中的主要区别在于 Time Machine 似乎已不再使用 UUID,而是在其 plist 文件中使用 Alias 记录。

这是我做的:

  1. 在系统偏好设置中停止 Time Machine,然后退出系统偏好设置(否则当系统偏好设置最终退出时,您的手动编辑可能会被覆盖)

  2. 使用您最喜欢的 plist 编辑器打开时间机器设置文件,位于此处:/Library/Preferences/com.apple.TimeMachine.plist

    我建议使用共享软件编辑器Plistedit 专业版而不是 Xcode,因为它允许您以 root 身份保存原始文件,并要求输入管理员密码,而 Xcode 则需要您将文件保存到用户空间,然后您需要使用命令行中的 root 权限覆盖原始文件。

  3. 在 TimeMachine.plist 中查找节点IncludedVolumes。如果不存在,则将其添加为根节点的子节点,它应该是一个数据项数组。

  4. 向 Data 类型的 IncludedVolumes 数组中添加一个新项,其值为已挂载加密卷的路径的别名记录。

    如果您使用 Plistedit Pro,则生成别名记录很容易。将新项目设置为类型后,Data您可以右键单击值字段并将View As属性更改为Alias Record。然后再次右键单击值字段并选择“编辑值...”,然后输入已安装卷的路径,例如/Volumes/MyEncryptedVolume。如果将视图类型更改回数据,则可以看到别名记录现在已转换为二进制字符串。确保事先安装加密卷,因为 Plistedit 将尝试验证别名,如果路径不存在,则会发出警告。

    Xcode 似乎不具备这种动态生成别名记录的能力。来源文章建议在 Finder 中挂载并打开稀疏图像,以便它出现在 Finder 的最近文件夹列表中,然后打开文件并从同级项与加密卷的名称匹配的键~/Library/Preferences/com.apple.finder.plist中复制值。FXRecentFolders/file-dataname

  5. 确保加密卷的路径没有在ExcludeByPathExcludedVolumesSkipPaths数组中的任何值中提及。

  6. 从 Time Machine 中排除稀疏包,这样您就不必备份卷两次。将路径添加到数组ExcludeByPathSkipPaths数组。我能看出的唯一区别是 SkipPaths 中的项目在 Time Machine 控制面板中显示且可编辑,而 ExcludeByPath 中的路径在控制面板中完全隐藏。无论哪种方式,TM 都会忽略该目录。

  7. 保存 TimeMachine.plist 文件,确保所有者:组仍然是 root:admin

就是这样。在“系统偏好设置”中重新打开 Time Machine,您现在应该可以在其自己的备份目录中看到已安装的稀疏包的内容,作为Macintosh HD目录的兄弟目录,例如/Volumes/Backup of ComputerName/Backups.backupdb/ComputerName/Latest/MyEncryptedVolume


但事实上,虽然我试用了大约 3 个月,并且效果很好,但我不再像这样配置 Time Machine,因为:

  1. 如果在 Time Machine 运行时卸载了稀疏包,那么在备份过程中可以理解地跳过了该卷。但是,当随后安装稀疏包时,Time Machine 将再次备份整个卷,将所有文件作为新文件复制到备份中,它不会只是创建指向早期备份文件夹中已经存在的任何文件的硬链接。这对我来说是一个令人震惊的问题,因为我并不是 100% 的时间都安装每个映像。

  2. 显然,这是 Time Machine 不受支持的自定义配置,因此可能会在 Apple 的下一个软件补丁中毫无预警地发生变化。因此,很难看出这种方法如何能被描述为可靠的长期备份解决方案。

  3. Time Machine 在备份期间在控制台日志中报告了错误的文件数量和文件大小,这让我无法相信 TM 适合这样配置,即使文件在 Time Machine 卷上看起来已正确备份(只是一种偏执?)

答案3

Time Machine 对加密容器的支持较差,只能备份整个容器。

这意味着你要么必须购买一个大容量的备份硬盘(如今一个 TB 的硬盘价格不到 100 美元)

...或者等到 OS X Lion 出来并希望他们改进加密卷支持。

当然,我假设将客户端数据以纯文本形式存储在备份驱动器上是不可能的。

答案4

Olfan:太棒了,非常感谢。

我编写了一个小 AppleScript 来挂载包含密码的卷映像:

property imagePath : "" -- preset path to image file
set path_to_resource to POSIX path of (path to resource "checkModifierKeys") -- this is the path to the command line utility to detect the modifier keys pressed
if (do shell script quoted form of path_to_resource & " option") = "1" then -- Option key is pressed
    set imagePath to ""
end if
if imagePath = "" then -- first run or Option key is pressed
    set imagePath to choose file with prompt "Image File:" -- let the user select the image file
end if
set thePass to text returned of (display dialog "Password for " & imagePath default answer "" with hidden answer) -- ask for the password
set cmd to "printf " & quoted form of thePass & " | hdiutil attach -notremovable -stdinpass " & quoted form of POSIX path of imagePath -- and set the command incliuding password
do shell script cmd with administrator privileges -- finally submit the command in supervisor mode

您必须将脚本保存为应用程序,并在应用程序包中包含“checkModifierKeys”命令行实用程序。您可以从http://www.klieme.ch/pub/checkModifierKeys.zip

以下是我对该脚本的描述:

这个小脚本在管理员模式下将卷映像挂载为不可移动磁盘。这会使 Time Machine 也备份此卷的内容。您应该从备份中排除映像文件,以避免备份卷混乱。

第一次运行此脚本时,会要求输入图像文件,并在后续调用时记住该位置。要选择其他图像文件,请按住“Option”键运行脚本。

checkModifierKeys: Stefan Kliemehttp://www.klieme.ch/pub/checkModifierKeys.zip

相关内容