重用 rsync --dry-run 输出以加快实际传输速度

Man*_*uel 36 terminal rsync text-processing

我通常rsync -n在做一个实际的rsync. 问题是,我如何自动执行第二次运行以准确重用用 生成的列表--dry-run

我的意思是,如果我运行rsync -n然后我会模拟rsync会做什么,我的想法是获取该输出,处理它然后以某种方式rsync仅生成--include-from该输出,因此完整列表只需要计算一次。

如果这甚至没有意义,请告诉我。

顺便说一句,我倾向于使用rsync -hva --progress --stats --delete --exclude-from "$EXCLUDEFILE". 如果您对使用哪些选项也有建议,请告诉我。我正在尝试将外部硬盘驱动器(仅包含图像、视频和文档)的内容复制到另一个外部硬盘驱动器。

Tha*_*Guy 31

当然可以将试运行期间生成的文件列表用作包含文件。但是,理想情况下,应删除试运行输出顶部和底部的额外行。

示例输出:

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)
Run Code Online (Sandbox Code Playgroud)

要删除这些行,请将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/