将 --delete 选项与 rsync 一起使用

将 --delete 选项与 rsync 一起使用

rsync我们在脚本中使用以下命令将文件从源复制到目标。

rsync -av --exclude 'share/web/sessions/' --rsync-path "sudo rsync" /sdata/ 172.31.X.X:/sdata/ &>/home/fsync/rsyncjob/output

现在,我们在源主机上有一个清理脚本,它会根据我们的要求在特定的天数后删除一些文件。我们希望文件一旦从源主机中删除,rsync 也应该从目标主机中删除。

为此,我可以看到,rsync提供了从源主机中删除文件后从目标主机中删除文件的选项--delete-before--delete-after但正如手册页所述,我对使用这些选项持怀疑态度This option can be dangerous if used incorrectly! It is a very good idea to first try a run using the --dry-run option (-n) to see what files are going to be deleted.

我更新的命令如下

rsync -av --exclude 'share/web/sessions/' --delete-after --rsync-path "sudo rsync" /sdata/ 172.31.X.X:/sdata/ &>/home/fsync/rsyncjob/outpu

这些选项正确吗?这些是我们的生产主机,我想在使用这些选项之前确定一下。还请专家指教。

答案1

我不会使用,--delete-after因为它强制 rsync 重新扫描文件列表。今天最好的选择是使用--delete-during(或--del简称)。如果由于 I/O 错误问题而想要保留“删除后”效果,请使用--delete-delay.

请参阅手册页以供参考:

某些选项需要 rsync 才能知道完整的文件列表,因此这些选项禁用增量递归模式。其中包括:--delete-before、--delete-after、--prune-empty-dirs 和 --delay-updates。因此,当连接两端至少为 3.0.0 时,指定 --delete 时的默认删除模式现在为 --delete-during(使用 --del 或 --delete-during 来请求这种改进的删除模式)明确)。另请参阅 --delete-delay 选项,它是比使用 --delete-after 更好的选择。

当然还有每种方法的相关部分。

相关内容