在我的 RHEL6 服务器对上,我使用 SSH 测试了从 server-1 到 Server-2 的 rsync。一切都如预期的那样好。但是,当我将 A 目录下的文件 A/x.file 移动到 Server-1 上 /home/user 的 B/ 时,使用 --delete (或类似选项)重复相同的 rsync 并没有删除 A 上的 x.file /并将x.file备份到Server-2上的B/。这是 rsync 脚本:
rsync -avhu -e ssh --delete home/user/ remote_user@remote_host:/home/user/.
ssh 设置时没有密码。我尝试了这些选项的不同顺序,但它们都不起作用,这意味着 x.file 仍在目的地(server-2)的 A/ 下,而不是在 B/ 上。什么地方出了错?
答案1
以下是有关如何使用您在脚本中选择的选项让 rsync 执行您希望执行的操作的一些一般指南:
从目录复制目录的内容来源目录到远程目的地目录(第一次),您可以执行以下操作:
rsync --archive --verbose --human-readable source -e ssh username@servername:/home/user/ .
一旦您对以下内容进行了一些更改来源您想要与您的同步的目录目的地目录,执行:
rsync --archive --verbose --human-readable --delete source/ -e ssh username@servername:/home/user/source .
做记录:
当您第一次将源目录复制到目标目录时,您不要需要在源代码后面加上 /(正斜杠)。
当你同步源目录到目标目录,您做需要在source后面加一个/(正斜杠)。这个/表示源目录的内容,并且不是目录本身。
您可以使用此选项测试驱动您的脚本: --dry-run 。
答案2
这个稍微修改过的代码对我有用:
rsync -avhu -e ssh --delete /home/user/ remote_user@remote_host:/home/user/.
如果您的生产代码确实引用了home/user/
而不是/home/user/
那么,那么这很容易成为失败的原因。你也会得到一个错误rsync: change_dir "/home/user//home/user" failed: No such file or directory (2)