我通常rsync -n
在做实际的rsync
.问题是,我如何自动化第二次运行以准确地重用使用 生成的列表--dry-run
?
我的意思是,如果我运行,rsync -n
那么我会得到一个模拟rsync
,我的想法是获取该输出,对其进行处理,然后以某种方式rsync
仅生成--include-from
该输出,因此完整列表只需计算一次。
如果这没有意义,请告诉我。
顺便说一句,我倾向于使用rsync -hva --progress --stats --delete --exclude-from "$EXCLUDEFILE"
.如果您对使用哪些选项还有建议,请告诉我。我正在尝试将外部硬盘驱动器的内容(仅包含图像、视频和文档)复制到另一个外部硬盘驱动器。
答案1
当然可以使用试运行期间生成的文件列表作为包含文件。然而,理想情况下,应该删除空运行输出顶部和底部的额外行。
输出示例:
sending incremental file list
[LIST OF FILES]
sent 226 bytes received 34 bytes 520.00 bytes/sec
total size is 648,373,274 speedup is 2,493,743.36 (DRY RUN)
要删除这些行,请将rsync
输出通过管道输送到head
和 中tail
。然后,将处理后的输出保存到包含文件中:
rsync --dry-run -avz source/ destination/ | head --lines=-3 | tail --lines=+3 > include.txt
最后,告诉rsync
使用生成的包含文件(根据需要添加其他选项):
rsync --include-from=include.txt --exclude=* source/ dest/