Ubuntu使用md5sum计算大文件的MD5值,总是在变,排查不出原因
windows下载了一个9G的大压缩包,然后拷贝到linux服务器上,windows用certutil校验md5,服务器用MD5sum校验MD5,windows通过,然后服务器失败。
怀疑为系统原因,将此文件拷贝到另外一台linux服务器校验成功
怀疑为此机器磁盘问题,磁盘无异常
同时在此服务器上每次调用md5sum该文件,计算值均不同
将linux服务器文件拷贝回到本地,解压文件最后提示CRC校验失败
Ubuntu使用md5sum计算大文件的MD5值,总是在变,排查不出原因
windows下载了一个9G的大压缩包,然后拷贝到linux服务器上,windows用certutil校验md5,服务器用MD5sum校验MD5,windows通过,然后服务器失败。
怀疑为系统原因,将此文件拷贝到另外一台linux服务器校验成功
怀疑为此机器磁盘问题,磁盘无异常
同时在此服务器上每次调用md5sum该文件,计算值均不同
将linux服务器文件拷贝回到本地,解压文件最后提示CRC校验失败
检查文件系统:
fsck
(针对ext系列文件系统)或相应的文件系统检查工具来检查并修复文件系统错误。内存测试:
memtest86+
之类的工具对服务器内存进行全面测试。禁用文件系统缓存:
dd
命令以直接I/O模式读取文件(例如,dd if=filename of=/dev/null bs=1M iflag=direct
),然后再次计算MD5,看结果是否一致。硬件诊断:
重新传输文件:
软件和环境检查:
文件完整性检查:
通过这些步骤,你应该能够诊断出导致MD5校验不稳定的原因,并采取相应的措施来解决问题。
试一下用这个命令来计算MD5
值:
md5sum -b file # 在源机器上
ssh user@host "md5sum /path/file" # 在目标机器上
或者,你可以先用rsync
传输,确保数据完整:
rsync -av --progress file user@host:/path
很明显大文件从windows拷贝到linux上,没有拷贝完整,丢失字节了
本身文件的sha512就是校验文件完整性的
9G确实挺大了,不清楚你是怎么拷贝的,如果是网络,你可以尝试将大文件split为500MB的part,然后计算每个part的sha512,然后将每个part传到linux,分别在linux上校验每个part的完整性,全部校验通过,再把所有的part合并为一个文件,最后校验sha512,一定是正确的