重复使用 rsync --dry-run 输出来加速稍后的实际传输

重复使用 rsync --dry-run 输出来加速稍后的实际传输

我通常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/

相关内容