![是否有更可靠的 cp 和 mv 来验证传输的文件和/或文件夹是否相同? (比如通过rsync?)](https://linux22.com/image/205882/%E6%98%AF%E5%90%A6%E6%9C%89%E6%9B%B4%E5%8F%AF%E9%9D%A0%E7%9A%84%20cp%20%E5%92%8C%20mv%20%E6%9D%A5%E9%AA%8C%E8%AF%81%E4%BC%A0%E8%BE%93%E7%9A%84%E6%96%87%E4%BB%B6%E5%92%8C%2F%E6%88%96%E6%96%87%E4%BB%B6%E5%A4%B9%E6%98%AF%E5%90%A6%E7%9B%B8%E5%90%8C%EF%BC%9F%20%EF%BC%88%E6%AF%94%E5%A6%82%E9%80%9A%E8%BF%87rsync%EF%BC%9F%EF%BC%89.png)
有没有办法使用cp
and/ormv
来验证文件是否相同。对于 来说尤其如此mv
,它会删除原始文件,因此如果目标文件损坏,则数据可能会永远丢失。
当我们不太意识到这一点时,例如当我们将文件从一个文件管理器窗口拖放到另一个文件管理器窗口时,并且认为一切都很好时,可能会发生这种情况。
我们可以通过一系列命令来完成它,例如
cp file01.dat /Volumes/storage01/file01.dat && __________ # the verification
但是,由于该命令可以作为第 3 方程序的“执行此命令”来执行,因此该命令也需要正确处理该命令(不能依赖于打印给用户的错误消息,因为用户看不到它)。
可以rsync
验证文件是否已正确传输?另外,由于RAM中的缓存可能会说目标文件中的数据02 fc 3a
只是在硬盘上,因此它已损坏为00 00 00
,因此验证是否可以在可能的情况下禁用目标文件的RAM缓存?
答案1
同步不需要任何特殊的东西来做到这一点。从手册页:
请注意,rsync 始终会验证通过检查文件传输时生成的整个文件校验和,可以在接收端正确重建每个传输的文件。
这与 -c 或 --checksum 选项不同,后者使用校验和来查看是否只需要传输文件的一部分,而不是整个文件。
你应该能够设置同步通过网络在本地运行,或者通过 SSH 隧道在网络上运行时显示为本地运行。
正如文件复制可能因磁盘损坏等原因而失败一样,从文件生成校验和也可能因相同原因而失败,即由于磁盘读取错误。所以没有什么是完美的。