はじめに
データのサイズを小さくする処理を 圧縮 と言う。単一のファイルに対して行われる。
複数のファイルやディレクトリを1つのファイルにまとめる処理を アーカイブ と言う。アーカイブされたファイルのデータサイズは、元のファイルと変わらない(アーカイブに圧縮処理は含まれない)。
「圧縮」と「アーカイブ」は別の概念だが、実際には アーカイブされたファイルは圧縮される ことも多く、一般的に「圧縮ファイル」と言うとアーカイブされたものを指すことがある。
$ tar
コマンドでは -z
オプションをつけることで、圧縮とアーカイブを同時に行う。
圧縮
圧縮形式に対応する拡張子は以下の通り。
-
$ gzip
:.gz
-
$ bzip2
:.bgz
-
$ xz
:.xz
$ gzip
/ $ bzip2
/ $ xz
$ gzip
よりも $ bzip2
の方が、$ bzip2
よりも $ xz
の方が圧縮効率が高いが、処理時間が長い。
$ gzip ファイル名
$ bzip2 ファイル名
$ xz ファイル名
$ xz -k ファイル名
-c
で圧縮ファイル(ストリーム)を標準出力に出力することができる。パイプ(|
) と リダイレクト(>
)を組み合わせると、元ファイルを残しながら圧縮することができる。
$ gzip -c 元ファイル名 > 圧縮ファイル名
$ bzip2 -c 元ファイル名 > 圧縮ファイル名
$ xz -c 元ファイル名 > 圧縮ファイル名
$ gzip -r
$ bzip2 -r
$ xz -r
$ gzip -d 圧縮ファイル名
$ bzip2 -d 圧縮ファイル名
$ xz -d 圧縮ファイル名
$ gunzip
/ $ bunzip2
/ $ unxz
$ ungzip 圧縮ファイル名
$ bunzip2 圧縮ファイル名
$ unxz 圧縮ファイル名
$ zgrep
/ $ bzgrep
/ $ xzgrep
圧縮ファイル専用の grep
コマンド。
$ zgrep "検索文字列" 圧縮ファイル名
$ bzgrep "検索文字列" 圧縮ファイル名
$ xzgrep "検索文字列" 圧縮ファイル名
$ zcat
/ $ bzcat
/ $ xzcat
圧縮ファイル専用の $ cat
コマンド。
$ zcat 圧縮ファイル名
$ bzcat 圧縮ファイル名
$ xzcat 圧縮ファイル名
アーカイブ
$ tar
$ cpio
$ tar
-v
(verbose)オプションで処理中の状態が出力される。
$ tar -cv ファイル1 ファイル2
$ tar -cvf アーカイブファイル名 ファイル1 ファイル2
$ tar -cvf アーカイブファイル名 ファイル1 ファイル2 ディレクトリ # ディレクトリもアーカイブ可能
tar
コマンドのオプションは、GNU tar では -
を省略可能 だが、BSD tar(macOS など)では -
が必要な場合がある。
ただし、オプション f
に -
をつけて -f
とした場合に限っては、直後の文字が引数扱いになってしまうため、f
をオプションの末尾にする必要がある。
オプション f
に -
をつける場合、 f
はオプションの末尾に記述する
$ tar -fc アーカイブファイル名 ファイル1 ファイル2
$ tar -cvf アーカイブファイル名 ファイル1 ファイル2
$ tar fvc アーカイブファイル名 ファイル1 ファイル2 # ハイフンなしなら順番は関係ない
$ tar cvfアーカイブファイル名 ファイル1 ファイル2 # スペースを開けなくても動作する
$ tar -zvf 圧縮アーカイブファイル名 ファイル1 ファイル2 # gzip
$ tar -jvf 圧縮アーカイブファイル名 ファイル1 ファイル2 # bzip2
$ tar -Jvf 圧縮アーカイブファイル名 ファイル1 ファイル2 # xz
$ tar -xvzf 圧縮アーカイブファイル # gzip(.tar.gz)
$ tar -xvjf 圧縮アーカイブファイル # bzip2(.tar.bz2)
$ tar -xvJf 圧縮アーカイブファイル # xz(.tar.xz)
$ tar -tvf アーカイブファイル
$ tar -tvzf 圧縮アーカイブファイル # gzip(.tar.gz)
$ tar -tvjf 圧縮アーカイブファイル # bzip2(.tar.bz2)
$ tar -tvJf 圧縮アーカイブファイル # xz(.tar.xz)
$ cpio
$ tar
と似ているが 標準入力・標準出力 を使ってデータを処理するのが特徴。
を組み合わせるとアーカイブ(.cpio
)を作成できる。
$ find . -type f | cpio -o > アーカイブファイル
$ cpio -i < アーカイブファイル
$ cpio -id < アーカイブファイル # アーカイブ内のサブディレクトリを展開時に自動で生成する
$ cpio -t < アーカイブファイル
$ find . -type f | cpio -p ディレクトリ # ディレクトリの存在が前提
$ find . -type f | cpio -pd ディレクトリ # 必要に応じてディレクトリを作成(推奨)
圧縮形式を調べる
$ file ファイル