我有两个服务器,我想将备份tar.bz文件(50G)从一个移动到另一个。
我使用AXEL从源服务器下载文件。但是现在当我想要提取它时,它会给我错误unexpected EOF
。它们的大小相同,似乎内容存在问题。
我想知道是否有一个程序/应用程序/脚本可以比较这两个文件并只纠正损坏的部分?!或者我需要手动拆分并比较每个部分的哈希码?
问题在于源服务器的带宽有限,传输速度低,所以我不能再从零传输它。
答案 0 :(得分:2)
您可以使用校验和实用程序(例如md5或sha)来查看两端的文件是否相同。例如
$ md5 somefile
MD5 (somefile) = d41d8cd98f00b204e9800998ecf8427e
通过在两端运行这样的命令并比较结果,你可以确定文件是否相同。
至于只下载文件的错误部分,这需要双方的校验和以获取数据的“部分”,例如使用bittorrent protocol。
答案 1 :(得分:2)
好的,我发现“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
答案 2 :(得分:1)
这个过程实际上不需要单独的程序。您可以使用几个简单的命令来完成它。如果任何md5sums没有加起来,请复制不匹配的md5sums并将它们连接在一起。为了更容易地比较md5sums,只需在两个文件的输出之间运行差异(或者输出md5sum以查看是否存在差异而不必复制输出)。
split -b 1000000000 -d bigfile bigfile.
for i in bigfile.*
do
md5sum $i
done