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 更好的选择。
当然还有每种方法的相关部分。