ネットから変異データベースなどの大容量ファイルをダウンロードした時や、HDDからデータを移動した時、データ破損なくダウンロードできているか不安になりませんか?
あるいは、書き換えがあっては困るデータに対して、経時的に何回も改変有無をチェックしたいことはありませんか?
- オリジナルファイルとコピーファイル
- ネット上のファイルとダウンロードしたファイル
- 過去のファイルと現在のファイル
- 圧縮前のファイルと解凍後のファイル
などでファイル同士の内容の同一性を確かめたい。そして何より、目視確認の手間と不正確さからは逃れたい!
そんなあなたにおすすめなのが、linuxコマンドの md5sum
です。
md5sum
は、ファイルのハッシュ値を算出・比較するコマンドです。
【ハッシュ値とは?】
文字列から、ある決まった計算手法によって導かれる値です。
決まった計算手法なので、同じ文字列からは必ず同じ値が導かれます。
ファイル内容の同一性を確かめるには、各ファイルに書かれた文字列(アルファベット、漢字、数字、0/1など何でも)のハッシュ値を照合すれば良いのです。
md5sum
の使い方をいくつかご紹介します。
【md5sumの使い方(基本)】
md5sum
は、引数に指定されたファイル内の文字列について、ハッシュ値計算手法の一種であるMD5によるハッシュ値を表示します。
$ md5sum original.txt a76289353e865de26911a266a564b632d original.txt
この a76289353e865de26911a266a564b632d
がハッシュ値です。
ファイルを複数並べれば全てのハッシュ値を同時に表示します。
$ md5sum original.txt original_copied.txt a76289353e865de26911a266a564b632d original.txt b94e143127614029862f41177f61939b4 original_copied.txt
これらを見比べて一致していれば文字列も完全一致、してなければ不一致です。
【md5sumの使い方(ダウンロード後チェック)】
変異データベースなどはダウンロードファイルのMD5ハッシュ値も公開していることがあります。
例えば、こちらはClinVarのダウンロードファイルが置かれているサイトですが……
clinvar_20181028.vcf.gz
のMD5ハッシュ値が clinvar_20181028.vcf.gz.md5
に書かれています。
中はこのように、ハッシュ値とファイル名になっています。
512318a04638225668b26ccc2cee50be clinvar_20181028.vcf.gz
こういったファイルの名前はサイトによりまちまちですが、 (ダウンロードファイル名).md5
md5sum.txt
などであることが多いですね。
MD5ハッシュ値のファイルも配布されている場合、一緒にダウンロードしておくと良いことがあります。
md5sum
コマンドにより、ネット上のファイルとダウンロードしたファイルで、ハッシュ値の計算のみでなく比較まで自動で済ませられるのです。
ダウンロードしたファイルとMD5ファイルを同じディレクトリに置き、 -c
オプションでMD5ファイルを指定します。
すると、ネット上のファイルとダウンロードしたファイル(のハッシュ値)の一致・不一致が表示されます。
$ ls clinvar_20181028.vcf.gz clinvar_20181028.vcf.gz.md5 $ md5sum -c clinvar_20181028.vcf.gz.md5 clinvar_20181028.vcf.gz: OK
OKと出たなら、ダウンロード時にデータ破損はなかったと言えます。逆に、
$ md5sum -c clinvar_20181028.vcf.gz.md5 clinvar_20181028.vcf.gz: FAILED md5sum: WARNING: 1 computed checksum did NOT match
このように出たなら、おそらくダウンロードに失敗しています。
【md5sumの使い方(圧縮・解凍後チェック、経時チェック)】
-c
オプションは、もちろん自分で作ったMD5ファイルに対しても使えます。
ファイルの現在のハッシュ値を控えておき、圧縮・解凍後、または将来などに、同一性を確認することができます。
$ md5sum sample.txt > sample.txt.md5 $ cat sample.txt.md5 0fe9878f295b10f222c0123799c27da6 sample.txt 一年後… $ md5sum -c sample.txt.md5 sample.txt: OK
いかがでしたか?
バイオインフォでは大容量ファイルの転送などは日常茶飯事ですから、md5sum
コマンドひとつ覚えておくととっても便利ですよ!
ぜひご活用ください。