圧縮と解凍

インターネットを介したデータのやりとりにおいて、データを圧縮してサイズを減らしてやり取りするのが一般的である。データの圧縮は zip には gzip など様々な形式が見られる。よく目にする圧縮形式は次のようなものがある。

圧縮形式拡張子
ZIP.zip一般的にみられる圧縮形式。Windows や Mac などでソフトウェアをインストールせずに利用でき、便利である。ただし、圧縮率はあまり高くない。
GZIP.gzip .gz .tar.gz .tgzテキストファイルの圧縮に強力である。テキストファイルならば、9 割近くサイズを減らすことが可能。オープンソースで配布されているソースコードは、ほとんどの場合、GZIP 形式で圧縮された状態で配布されている。
BZIP2.bzip2 .bz2 .tar.bz2GZIP よりも圧縮率が高い。ただし、圧縮や展開にやや時間がかかる。

バイオインフォマティクスの分野では、主に gzip または bzip2 が利用されている。特に、超高速シーケンサーで出力されるデータは 1 ファイルで数十 GB にも及ぶため、ほとんどの場合、このようなファイルを圧縮した状態で扱っている。

GZIP の圧縮と解凍

GZIP はテキストファイルの圧縮を得意とする圧縮フォーマットである。GenBank や Ensembl などのデータベースで配布されているデータは、GZIP 形式で圧縮されている。

GZIP 形式のファイルの解凍

GZIP 形式のファイルを解凍する(decompress)場合は、gzip コマンドに -d オプションを付けて実行する。

gzip -d data.gz

複数の GZIP 圧縮ファイルが、1 つのアーカイブにまとめられた状態で配布される場合が多い。この場合、tar コマンドを利用してファイル解凍およびアーカイブ展開を同時に行う。

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 形式で圧縮されたファイルを展開せずに内容を調べる場合は、zcatless などのコマンドを利用する。

zcat コマンドを利用して、GZIP 形式のファイルの内容を表示させる場合は次のようにする。

zcat SRR000001.gz

gzipless コマンドを組み合わせて利用してもよい。

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