インターネットを介したデータのやりとりにおいて、データを圧縮してサイズを減らしてやり取りするのが一般的である。データの圧縮は zip には gzip など様々な形式が見られる。よく目にする圧縮形式は次のようなものがある。
圧縮形式 | 拡張子 | |
ZIP | .zip | 一般的にみられる圧縮形式。Windows や Mac などでソフトウェアをインストールせずに利用でき、便利である。ただし、圧縮率はあまり高くない。 |
GZIP | .gzip .gz .tar.gz .tgz | テキストファイルの圧縮に強力である。テキストファイルならば、9 割近くサイズを減らすことが可能。オープンソースで配布されているソースコードは、ほとんどの場合、GZIP 形式で圧縮された状態で配布されている。 |
BZIP2 | .bzip2 .bz2 .tar.bz2 | GZIP よりも圧縮率が高い。ただし、圧縮や展開にやや時間がかかる。 |
バイオインフォマティクスの分野では、主に gzip または bzip2 が利用されている。特に、超高速シーケンサーで出力されるデータは 1 ファイルで数十 GB にも及ぶため、ほとんどの場合、このようなファイルを圧縮した状態で扱っている。
GZIP の圧縮と解凍
GZIP はテキストファイルの圧縮を得意とする圧縮フォーマットである。GenBank や Ensembl などのデータベースで配布されているデータは、GZIP 形式で圧縮されている。
GZIP 形式のファイルの解凍
GZIP 形式のファイルを解凍する(decompress)場合は、gzip
コマンドに -d
オプションを付けて実行する。
gzip -d data.gz
複数の GZIP 圧縮ファイルが、1 つのアーカイブにまとめられた状態で配布される場合が多い。この場合、
tar zxvf data.tar.gz
GZIP 形式のファイルの圧縮
ファイルを GZIP 形式で圧縮する場合は、gzip
コマンドを利用する。例えば、テキストファイル data.txt を圧縮する場合は次のようにする。
gzip data.txt
ファイルではなく、ディレクトリ全体を GZIP 形式で圧縮する場合は、tar
コマンドを用いると便利である。tar
コマンドを利用するとき、コマンドに続いてオプション zcvf
を加えて、圧縮&アーカイブ後の名前を書いてから、実際の圧縮対象のディレクトリを書く。順序を間違えると、圧縮対象のディレクトリが空っぽにされるため、注意して行う必要がある。例えば、data ディレクトリを圧縮する場合は次のようにする。
tar zcvf data.tar.gz data
ファイルの内容と行数の確認
GZIP 形式で圧縮されたファイルを展開せずに内容を調べる場合は、zcat
や less
などのコマンドを利用する。
zcat
コマンドを利用して、GZIP 形式のファイルの内容を表示させる場合は次のようにする。
zcat SRR000001.gz
gzip
と less
コマンドを組み合わせて利用してもよい。
gzip -dc SRR000001.gz | less
ディレクトリ中にあるすべての GZIP 形式のファイルの行数を調べるときは、ターミナルで次のようなシェルを実行すれば取得できる。
for f in *.gz; do
echo "$(zcat -f <"$f" | wc -l) $f"
done
BZIP2 の圧縮と解凍
BZIP2 は GZIP と同様にテキストファイルの圧縮を得意とするフォーマットである。日本の DDBJ が配布するデータが BZIP2 で圧縮されている。BZIP2 は、GZIP の代替アルゴリズムとして作成されていることもあり、その使い方は gzip
コマンドと似ている。
BZIP2 形式のファイルの解凍
BZIP2 形式のファイルを解凍する(decompress)場合は、bzip2
コマンドに -d
オプションを付けて実行する。
bzip2 -d data.bz2
アーカイブされた BZIP2 圧縮ファイルは、次のようにして圧縮・展開を行うことができる。
bzip2 -d data.tar.bz2
tar xvf data.tar
tar
コマンドを利用して 1 行で解凍および展開を行うことも可能である。
tar jxvf data.tar.gz
BZIP2 形式のファイルの圧縮
ファイルを BZIP2 形式で圧縮する場合は、bzip2
コマンドを利用する。例えば、テキストファイル data.txt を圧縮する場合は次のようにする。
bzip2 data.txt
ディレクトリ全体を圧縮する場合は、tar
コマンドを用いると便利である。使い方は、gzip
と同じで、圧縮する際に、圧縮&アーカイブ後の名前と圧縮対象のディレクトリの順序を間違えないように注意して行う必要がある。
tar jcvf data.tar.gz data