我在 Mac 上使用 rsync 备份到 USB 驱动器或网络映像(也是 HFS+ 格式)。我在处理 .svn 子目录中的文件时遇到了问题,例如“all-wcprops”或“entries”——在签出或更新时,Subversion 将它们标记为只读(权限位为 444)。
我的 rsync 命令因此而受阻;它们在第一次运行期间被正确备份,但任何更改都会导致目标(备份卷)出现“权限被拒绝”错误。
也许这是 Tortoise SVN 的产物 - 我实际上是在 XP 虚拟机上使用它来执行 svn 操作。但不使用 Tortoise 不是一个选择。
我该如何修复它?我花了一些时间仔细阅读 rsync 手册,似乎所有正确的标志都已设置。在 Tortoise 首选项中也找不到任何内容让我告诉它不要将这些文件标记为只读。
这是我的 rsync 命令:
rsync -aNHAX --inplace --verbose --delete --delete-excluded --fileflags --force-change --exclude-from=.rsync/exclude-list ~ $backup_dir
答案1
我认为你可以不使用“--inplace”,或者分两步同步。
这增强rsync 也可以帮助您。
答案2
我认为问题可能是外部驱动器或网络映像在卷路径中可能有一个空格,而 rsync 无法避开该空格。
如果你的卷名为“Big Honking USB”,则路径可能类似于
/Volumes/Big Honking USB
而 rsync 还不够智能,无法意识到这一点并转义空格。尝试 rsyncing 到某个地方,例如 /home/username/Downloads,看看是否可行。
答案3
如果您仍想使用--inplace
并且可以忍受目标中的只读文件不是只读的,则可以使用--chmod=Fu+w
。
该选项强制所有者对每个文件(目录除外)具有写入权限。
要更新目标中已存在的任何只读文件,您可以运行一次不带该--inplace
选项的 rsync。