我曾经在 Raspberry Pi 上运行夜间 rsync 客户端来备份 Windows 10 计算机上的某些文件夹。此脚本已运行了 10 多年,没有出现任何问题。我最近将客户端从 Pi 移到了运行 High Sierra 的旧 Mac。备份脚本相当复杂,但我已将问题缩小到 Mac 上的以下几点:如果我有多个源目录(Windows10 PC 上的路径),rsync 命令就会失败。如果我只有一个源目录,该命令就会起作用。源目录是什么并不重要。其中任何一个作为源目录都可以正常工作。两个或更多会失败。这个完全相同的 rsync 命令行在 Raspberry Pi 上运行良好,并且曾经在 Ubuntu 上运行良好。
此命令有效,将一些音乐从 PC 备份到 Mac:
rsync -azv -e /usr/bin/ssh --progress --delete --exclude tbird.bkup --exclude .DS_Store --link-dest=/Volumes/backups/ronopolis/5_thu \
rsync_user@ronopolis:/cygdrive/d/Music /Volumes/backups/ronopolis/6_fri
此命令有效,备份一些 DVD:
rsync -azv -e /usr/bin/ssh --progress --delete --exclude tbird.bkup --exclude .DS_Store --link-dest=/Volumes/backups/ronopolis/5_thu \
rsync_user@ronopolis:/cygdrive/d/DVD /Volumes/backups/ronopolis/6_fri
这失败,因为我有两个源路径:
rsync -azv -e /usr/bin/ssh --progress --delete --exclude tbird.bkup --exclude .DS_Store --link-dest=/Volumes/backups/ronopolis/5_thu \
rsync_user@ronopolis:/cygdrive/d/DVD rsync_user@ronopolis:/cygdrive/d/Music /Volumes/backups/ronopolis/6_fri
这是错误信息:
rsync error: syntax or usage error (code 1) at /BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-52.0.1/rsync/main.c(1170) [receiver=2.6.9]
答案1
在 Mac OSX 版本rsync
(版本2.6.9
)中,仅允许使用单个远程主机和路径。在3.0.0
版本增强包括允许多个远程源:
Rsync 现在允许指定多个远程源参数,而不必依赖远程 shell 的特殊空间分割副作用。其他远程参数必须指定相同的主机或空主机(例如空的::file1 或 ::module/file2)。例如,这意味着现在可以在本地使用括号扩展:rsync ‑av host:dir/{f1,f2}。
不过,这很有用,它提醒了我如何使用单个远程源定义来复制两个目录树,同时仍然运行旧版本rsync
:
rsync -azv -e /usr/bin/ssh --progress --delete --exclude tbird.bkup --exclude .DS_Store --link-dest=/Volumes/backups/ronopolis/5_thu \
rsync_user@ronopolis:'/cygdrive/d/DVD /cygdrive/d/Music' /Volumes/backups/ronopolis/6_fri