最近,我不得不将 Mac 的文件系统从保留大小写更改为完全区分大小写。我通过使用 CCC 并将数据复制到另一个磁盘,然后返回到新格式化的主磁盘来做到这一点。
现在,我想在我的旧 Time Machine 磁盘上进行 Time Machine 备份,该磁盘托管在我的基于 FreeBSD 的 NAS 上,通过 AFP 导出。但是,我收到文件系统不匹配的错误,因为 Time Machine 仍然具有不区分大小写的 fs。这一次,我不能使用 CCC,因为它不支持 Time Machine 卷的文件级复制。
自然地,我直接选择了 rsync,但这会引发一个问题——如果我使用以下命令运行它:
/usr/local/bin/rsync --super -aEHAXNvx --fileflags --delete /Volumes/Time\ Machine\ Backups/ /Volumes/NewDisk/
Run Code Online (Sandbox Code Playgroud)
它一碰到Backups.backupdb/<machinename>
文件夹就开始抱怨,带有failed to set permissions, operation not permitted
. 这里的问题是复制 ACL,这是非常严格的:
ll -dle /Volumes/Time\ Machine\ Backups/Backups.backupdb/<machinename>/
drwxr-xr-x@ 19 root staff 646 Dec 23 09:38 /Volumes/Time Machine Backups/Backups.backupdb/<machinename>/
0: group:everyone deny add_file,delete,add_subdirectory,delete_child,writeattr,writeextattr,chown
Run Code Online (Sandbox Code Playgroud)
所以,我-A
从上面的命令中删除了,rsync 现在很高兴地移动 GB 的数据。
唉,我也想保留 ACL。这有可能吗?OS X 没有 getfacl/setfacl,我想避免解析ls -le
. 我在这里看到的解决方案是以某种方式告诉 rsync 向后应用 ACL,即从叶文件到目录,但没有选择。
小智 4
使用 Homebrew 下载 rsync 版本 3。然后您可以尝试“--acls”选项。Mac 上的 rsync 的命令行语法似乎与其他操作系统略有不同。您可能想查看此链接:http://nicolasgallagher.com/mac-osx-bootable-backup-drive-with-rsync/。它描述了如何获取 rsync 3 以及他使用的命令行参数。
我不是 OSX 用户,但我使用 rsync 将我妻子的 Mac 备份到 Linux 服务器。