最近在分析数据的时候,属实是一波好多折,在数据传输的时候也遇到了这么离谱的速度(使用的是国家重点实验室的集群)。
加上之前我还没太搞懂iMac的休眠机制,将几十G的数据传到服务器上着实是一件难事。经过一番折腾,终于传上去了,但是传了这么久,不得不让人思考,这个数据还是你想要的数据吗?保不齐中间会遇到bug导致数据不完整,因此得查一查数据的完整性,这就让我想到了md5文件。
什么是md5
MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,通过其不可逆的字符串变换计算,产生文件或字符串的MD5散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。
理论上,任意两个文件、字符串不会有相同的散列值。
MD5文件校验用途非常多,例如:游戏补丁包的校验,病毒文件确认,APP提审校验等;如果要确认某一个文件的完整性和正确性,都会使用MD5进行校验。[1]
因此md5文件可以简单的理解为可以用于验证数据完整性的文件。
用法
在测序结束后,公司一般会给客户发一个链接用来下载测序数据,这里面也包含了md5文件。一般情况下,我不会使用md5去检测数据是否完整,只有在遇到问题后才会再考虑这个问题。
如果发现下载的文件和公司提供的md5值不一样,需要慎重使用。
下载下来是这样的。
96eb8351feb34c6ec36f74f62c86600d ZM-Sbuk_FRAS220033949-2r/ZM-Sbuk_FRAS220033949-2r_1.fq.gz
0f4a5ba21c7ba2a22379fe953df96932 ZM-Sbuk_FRAS220033949-2r/ZM-Sbuk_FRAS220033949-2r_2.fq.gz
a109b9dd078b7ffc0c37f5bdb33eb594 ZM-Rbuk_FRAS220033948-2r/ZM-Rbuk_FRAS220033948-2r_1.fq.gz
26d2f6d9bb21158186f2db3f4e8eb7b0 ZM-Rbuk_FRAS220033948-2r/ZM-Rbuk_FRAS220033948-2r_2.fq.gz
122bc14eb09b8025cc098c67b3c87d9d ZM895_FRAS220033950-2r/ZM895_FRAS220033950-2r_1.fq.gz
a0027dfd84e88fd5262d146005a2c44f ZM895_FRAS220033950-2r/ZM895_FRAS220033950-2r_2.fq.gz
它的用法非常简单,日常使用往往只需要输入 md5sum [文件],有的时候需要保存到文件中也只需要将输出重定向,即 md5sum [文件]>md5.txt。
用法:md5sum [选项]... [文件]...
显示或检查 MD5(128-bit) 校验和。
若没有文件选项,或者文件处为"-",则从标准输入读取。
-b, --binary 以二进制模式读取
-c, --check 从文件中读取MD5 的校验值并予以检查
-t, --text 以纯文本模式读取(默认)
Note: There is no difference between binary and text mode option on GNU system.
以下三个选项在进行校验时非常有用:
--quiet 不为校验成功的文件输出OK
--status 不输出任何内容,使用退出状态号显示成功
-w, --warn 对格式不准确的校验和行进行警告
--help 显示此帮助信息并退出
--version 显示版本信息并退出
实战
同一个数据通过SFTP先从服务器1下到电脑上,再从电脑传到服务器2中,可以看到md5是完全相同的。
# 服务器 1
(base) zwang@ken_bioinfo:~/workplace/_SNP/sample$ md5sum ZM895_FRAS220033950-2r_1.clean.fq.gz
5c8c1450e5d80d41ee360e64aab871a0 ZM895_FRAS220033950-2r_1.clean.fq.gz
# 服务器 2
[zwang@login01 data]$ md5sum ZM895_FRAS220033950-2r_1.clean.fq.gz
5c8c1450e5d80d41ee360e64aab871a0 ZM895_FRAS220033950-2r_1.clean.fq.gz
参考资料
https://segmentfault.com/a/1190000017274152
网友评论