使用 rsync 同步两个外部硬盘,不断出现权限错误

使用 rsync 同步两个外部硬盘,不断出现权限错误

我正在尝试使用 automator 为办公室中的一位用户设置 rsync 脚本,但我不断收到错误。我从最简单的代码行开始:

 rsync -a /Volumes/DiskA/ /Volumes/DiskB

但我不断收到此错误:

rsync: opendir "/Volumes/DiskA/.Trashes" failed: Permission denied (13)
rsync error: some files could not be transferred (code 23) at /BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-47/rsync/main.c(992) [sender=2.6.9]

我搜索了整个互联网并尝试了许多不同的方法/代码,但仍然出现错误。我还尝试了全新安装并格式化了硬盘。我计划在解决此问题后添加其他命令。如果您能帮助我解决这个问题,我将不胜感激。

答案1

这里可能有两个问题

  1. 您的脚本没有足够的权限(特权)来访问 diskA 垃圾箱中的文件。这似乎是 OSX,所以我无法建议您如何获得 root 权限;sudo或者su是我在其他类 UNIX 平台上使用的。

  2. 无论如何,您可能不想复制“垃圾箱”。为此,将选项添加--exclude '/.Trashes'到您的中。rsync

答案2

就我而言,这是某些文件的 ACL 规则。运行getfacl /folder/file以查看扩展规则(如果设置了)。

就我而言,某些文件具有扩展的权限规则,因此rsync无法读取它们。

答案3

我曾经遇到过同样的问题,我认为你应该更仔细地选择 rsync 的选项。该选项-a等于-rlptgoD,因此rsync尝试将文件的权限、所有者和组从一个磁盘保留到另一个磁盘。例如,对于我的备份,我使用以下选项:

rsync -urtDvx --delete /volume/diskA/ /volume/diskB/

它对我来说效果很好。这些选项的含义是:

 -u, --update                skip files that are newer on the receiver
 -r, --recursive             recurse into directories
 -t, --times                 preserve modification times
 -D                          preserve special and device files (super-user only)
 -v, --verbose               increase verbosity
 -x, --one-file-system       don't cross filesystem boundaries
 --delete                    delete extraneous files from dest dirs

我建议您查看手册,rsync找出最适合您的选项。

相关内容