我备份大文件夹,首先我运行rsync ... --dry-run
来验证文件列表。
然后我再次执行相同的命令,但这次无需--dry-run
传输文件。
因为它要扫描文件两次,所以我想到了一个改进方法:我将的输出重定向rsync ... --dry-run
到一个文件,删除所有噪音,只留下文件名,然后将该列表传递给rsync ... --files-from=FILE
。
一切工作正常,直到有一个文件需要删除:
*deleting Downloads/2022-09.pdf
好吧,rsync 抱怨文件丢失并且没有在目的地删除......
rsync: link_stat "/mnt/c/Downloads/2022-09.pdf" failed: No such file or directory (2)
有什么方法可以重新进行试运行而不用两次扫描所有文件?
答案1
的输出rsync
并非旨在将其输入到其他实例。您可能能够使用该选项实现某些功能--out-format
,但在标记已删除文件时它仍然会失效。
扫描所花费的时间与复制所有文件所花费的时间相比应该可以忽略不计,因此尽管它似乎需要很长时间,但它仍然比简单的复制更好。
结论?不要试图欺骗系统;只需让它rsync
按照自己想要的方式做好它该做的事情。为了提高效率,请确保至少使用rsync -t
( ) ,--times
并且除非你-c
--checksum
真的了解在极少数情况下它是必要的。我见过太多人使用它,-c
因为他们认为它是必要的,但实际上并非如此,这会使速度减慢rsync
数百甚至数千倍。(如果有疑问,请将您的命令添加到问题中,我会对其进行审查。)