我正在尝试使用 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
这里可能有两个问题
您的脚本没有足够的权限(特权)来访问 diskA 垃圾箱中的文件。这似乎是 OSX,所以我无法建议您如何获得 root 权限;
sudo
或者su
是我在其他类 UNIX 平台上使用的。无论如何,您可能不想复制“垃圾箱”。为此,将选项添加
--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
找出最适合您的选项。