我有两台服务器,我想将备份 tar.bz 文件(50G)从一台移动到另一台。
我使用 AXEL 从源服务器下载文件。但是现在当我想提取它时,它给了我错误unexpected EOF
。它们的大小相同,内容似乎有问题。
我想知道是否有一个程序/应用程序/脚本可以比较这两个文件并仅纠正损坏的部分?!还是我需要手动拆分并比较每个部分的哈希码?
问题在于源服务器的带宽有限且传输速度低,因此我无法从零再次传输它。
您可以使用校验和实用程序(例如 md5 或 sha)来查看两端的文件是否相同。例如
$ md5 somefile
MD5 (somefile) = d41d8cd98f00b204e9800998ecf8427e
通过在两端运行这样的命令并比较结果,您可以确定文件是否相同。
至于只下载文件的错误部分,这将需要双方对数据的“片段”进行校验和,例如使用bittorrent 协议。
好的,我发现“rdiff”是解决这个问题的最佳方法。只是在做:
在目标服务器上:
rdiff signature destFile.tar.bz destFile.sig
然后将 destFile.sig 传输到源服务器并再次在源服务器上执行 rdiff:
rdiff delta destFile.sig srcFile.tar.bz delta.rdiff
然后将 delta.rdiff 传输到目标服务器并在目标服务器上再次执行 rdiff:
rdiff patch destFile.tar.bz delta.rdiff fixedFile.tar.bz
这个过程真的不需要单独的程序。您可以通过使用几个简单的命令来简单地做到这一点。如果任何 md5sum 不相加,则复制不匹配的并将它们重新连接在一起。为了使比较 md5sum 更容易,只需在两个文件的输出之间运行一个差异(或对输出进行 md5sum 以查看是否存在差异,而无需复制输出)。
split -b 1000000000 -d bigfile bigfile.
for i in bigfile.*
do
md5sum $i
done