使用rsync时,有时rsync不会复制所有已完成的文件,以下是我使用的代码。它们是否可以在rsync之后执行校验和或检查,以查看是否所有文件都已复制,如果不是,则重试,直到所有文件都复制完毕?
TEMP="/home/user/temp"
OPTS="-rav -h"
rsync $OPTS --stats user@example.com:/home/user/Local $TEMP发布于 2013-04-03 20:46:53
我认为最好通过正确配置rsync来解决这个问题。阅读man页面:)有一些选项(比如--checksum )。
您也可以自己完成此操作:
对rsync'd directory.
xargs md5sum中的所有文件进行校验,以获得所有校验和的校验和如果你在两端(本地/远程)都这样做,你将有一个校验和进行比较。
发布于 2013-10-23 19:39:16
正如uʍopǝpısdn的答案所暗示的那样,rsync -c或rsync --checksum可能会满足您的需求。
校验和,--
-c :根据校验和跳过,而不是修改时间和大小
这将强制发送者使用128位MD4校验和对每个常规文件进行校验和。它在初始文件系统扫描期间执行此操作,因为它构建了所有可用文件的列表。然后,接收方对其每个文件的版本进行校验和(如果其存在并且与其发送方的对应文件具有相同的大小),以便决定需要更新哪些文件:选择大小改变或校验和改变的文件进行传输。由于除了在文件传输期间发生的自动校验和验证之外,还会对连接两端的所有文件进行整个文件校验和检查,因此此选项可能会相当慢。
请注意,rsync总是通过检查整个文件的校验和来验证每个传输的文件是否在接收端正确重建,但是传输后的自动验证与此选项的传输前“这个文件需要更新吗?”检查一下。
如今,关于速度慢的担忧可能已经无关紧要了,当你不能或不想依赖修改时间时,这似乎是一个很好的选择。
发布于 2018-07-08 05:29:07
使用rsync -Pahn --checksum /path/to/source /path/to/destination | sed '/\/$/d' | tee migration.txt
sed从校验和验证中删除目录。tee同时输出到屏幕和文件。
请记住,如果您有非常大的文件,这可能不是一个合适的方法,因为验证将需要很长时间。
https://stackoverflow.com/questions/15787676
复制相似问题