Linux rsync如何在rsync上进行校验和
当使用rsync时,有时rsync不会复制所有完成的文件,下面是我使用的代码。它们是一种在rsync之后进行校验和或检查的方法,以查看是否所有文件都已复制,如果没有,请重试,直到所有文件都已复制Linux rsync如何在rsync上进行校验和,linux,bash,rsync,checksum,Linux,Bash,Rsync,Checksum,当使用rsync时,有时rsync不会复制所有完成的文件,下面是我使用的代码。它们是一种在rsync之后进行校验和或检查的方法,以查看是否所有文件都已复制,如果没有,请重试,直到所有文件都已复制 TEMP="/home/user/temp" OPTS="-rav -h" rsync $OPTS --stats user@example.com:/home/user/Local $TEMP 我认为最好通过正确配置rsync来解决这个问题。阅读man页面:)这里有一些选项(比如--checksu
TEMP="/home/user/temp"
OPTS="-rav -h"
rsync $OPTS --stats user@example.com:/home/user/Local $TEMP
我认为最好通过正确配置
rsync
来解决这个问题。阅读man
页面:)这里有一些选项(比如--checksum
)
您也可以自己完成这项工作:
查找rsync'd目录中的所有文件
xargs md5sum
获取所有文件的校验和md5sum
校验和如果你在两边(本地/远程)都这样做,你将有一个校验和进行比较。正如uʍopǝpısdn的回答所暗示的,
rsync-c
或rsync--checksum
可以满足你的需要
-c、 --校验和:基于校验和跳过,而不是修改时间和大小
这将强制发送方使用
128位MD4校验和。它在初始文件系统中执行此操作
在生成所有可用文件的列表时进行扫描。接受者
然后对每个文件的版本进行校验(如果它存在并且具有
与发送方对应项的大小相同),以决定
需要更新的文件:大小已更改或
选择更改的校验和进行传输。因为这整个文件
连接两侧的所有文件的校验和都发生在
添加到自动校验和验证中,该校验和验证在
文件传输时,此选项可能会非常慢
请注意,rsync总是
验证每个传输的文件是否已在计算机上正确重建
接收端通过检查其整个文件的校验和,但是
自动转移后验证与否无关
此选项位于传输之前“是否需要更新此文件?”
检查
现在对这种速度慢的担忧可能与此无关,当您不能或不想依赖修改时间时,这似乎是一个不错的选择。使用rsync-Pahn--checksum/path/to/source/path/to/destination | sed'/\/$/d'| tee migration.txt
sed
从校验和验证中删除目录。
tee
同时输出到屏幕和文件
请记住,如果您有非常大的文件,这可能不是一个合适的方法,因为验证将花费很长时间
感谢您的快速回复-我现在正在阅读rsync的手册页-公平地说,我们这里有很多选项-我应该查看的是校验和吗?为什么
rsync
一开始就没有复制这些文件?应该这样。我没有在这里保留信息,我不记得EitherSync复制文件的标志,只是第一次尝试时并不总是这样(可能是由于网络问题等),但我想用checksum重新运行命令以验证事情(您可以按照上面所述的方式执行checksum,find | md5sum
)。或者在Git中工作并在具有更改文件的分支之间切换时非常有用,这会不断更改您不打算从特定分支发送的文件的更新时间。有人知道如何在“rsync
不复制所有文件”时产生这种情况吗?