Linux 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

当使用rsync时,有时rsync不会复制所有完成的文件,下面是我使用的代码。它们是一种在rsync之后进行校验和或检查的方法,以查看是否所有文件都已复制,如果没有,请重试,直到所有文件都已复制

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
    不复制所有文件”时产生这种情况吗?