
Linuxで割とお世話になる tar コマンド。これの使い方をよく忘れるので、覚えるために記事にしました。ついでに zip rar gzip bzip2 xz の使い方と、解凍・圧縮で使いそうなコマンドをまとめて一覧表にしてみました。
zipとrarはファイルの分割や修復などができるので、知っておいて損は無いと思います。それ以外は単体での使い方を知りたかったので備忘録です。
解凍・圧縮コマンドの使い方 目次
- 解凍で使いそうなコマンド一覧
- 圧縮で使いそうなコマンド一覧
- TARとRARのインストール
- TARの使い方
- TARのオプション
- unzipの使い方
- unzipのオプション
- zipの使い方
- zipのオプション
この記事のTARコマンドに関する部分は GnuTar 1.26 での内容になります。Snow Leopard 以降のMacなどで使われてるBsd Tarでは、サポートされていない機能も含まれてます。
解凍で使いそうなコマンド一覧
赤字部分に解凍、展開するファイル名を入れます。
圧縮形式 | 拡張子 | 解凍コマンド |
---|---|---|
tar + 色々な形式
※.1 |
〜.tar
~.tgz ~.tar.gz ~.tar.bz2 ~.tbz 〜.tbz2 〜.tar.xz 〜.tar.lzma 〜.tlz 〜.tar.Z |
tar xvf file |
tar + gzip 形式 |
~.tgz
~.tar.gz |
古いtarの場合。
tar zxvf file.tar.gz かなり古いtarの場合。 gzip -dc file.tar.gz | tar xvf - |
tar + bzip2 形式 |
~.tar.bz2
~.tbz 〜.tbz2 |
古いtarの場合。
tar jxvf file.tar.bz2 かなり古いtarの場合。 bzip2 -dc file.tar.bz2 | tar xvf - |
tar + xz 形式 |
〜.tar.xz
〜.tar.lzma 〜.tlz |
古いtarの場合。
tar Jxvf file.tar.xz かなり古いtarの場合。 xz -dc file.tar.xz | tar xvf - |
TAR 形式 | ~.tar | tar xvf file.tar |
ZIP 形式 | ~.zip | unzip file.zip |
RAR 形式 | 〜.rar |
rar x file.rar
unrar x file.rar |
gzip 形式 | ~.gz | gunzip file.gz
gzip -d file.gz |
bzip2 形式 | ~.bz2 | bunzip2 file.bz2
bzip2 -d file.bz2 |
xz 形式 |
〜.xz
〜.lzma |
unxz file.xz
xz -z file.xz |
※.1:GNU、BSDともに、最近のtarは圧縮形式を自動で判別して解凍してくれます。
圧縮で使いそうなコマンド一覧
赤字部文に圧縮後のファイル名を。青字部分に圧縮、アーカイブ化するファイル名を入れます。
圧縮形式 | 拡張子 | 圧縮コマンド |
---|---|---|
tar + gzip 形式 | ~.tgz
~.tar.gz |
tar zcvf hoge.tar.gz file1 file2 |
tar + bzip2 形式 |
~.tar.bz2
~.tbz ~.tbz2 |
tar jcvf hoge.tar.bz2 file1 file2 |
tar + xz形式 |
〜.tar.xz
〜.tar.lzma 〜.tlz |
tar Jcvf hoge.tar.xz file1 file2 |
TAR 形式 | ~.tar | tar cvf hoge.tar file1 file2 |
ZIP 形式 | ~.zip | zip -r hoge.zip file1 file2 |
RAR 形式 | 〜.rar | rar a hoge.rar file1 file2 |
bzip2(BZ2) 形式 | ~.bz2 | bzip2 file |
gzip(GZ) 形式 | ~.gz | gzip file |
xz 形式 |
〜.xz
〜.lzma |
xz file |
解凍・圧縮する時に、詳細を表示したくない場合
- TAR :
-v
をつけないで実行 - ZIP:
-q
をつけて実行 - RAR :
-inul
をつけて実行
TAR と RAR のインストール
MacにGnuTarを入れる
MacでGnuTarを使う場合はhomebrewなどで入れます。
$ brew install gnu-tar --default-names
ちなみに、10.5 LeopardまでGnuTarが標準で使われてました。その名残りなのか、Mountain Lionにも /usr/binにGnuTarが入ってます。
$ gnutar
と打つか、リンクを貼りなおせば使えますが、バージョンが古いのでお勧めはしません。
UbuntuのTARを最新版に入れ替える
普段使ってるUbuntu(10.04)のtarが妙に古かったのでメモ。
最新版を使う場合はLaunchpadで適当なリポジトリを漁って追加するか…
$ sudo add-apt-repository ppa:dns/gnu $ sudo apt-get update $ sudo apt-get upgrade
自力で入れ替えます。
$ wget http://ftpmirror.gnu.org/tar/tar-1.26.tar.gz $ tar xfz tar-1.26.tar.gz $ cd tar-1.26.tar.gz $ ./configure $ make $ sudo make install
RAR
解凍のみの$ unrar
と、圧縮もできる $ rar
の2種類あります。前者はフリーウェアですが、後者は40日の試用期間つきシェアウェアです。
Ubuntuにrarやunrarを入れる場合はaptで入れます。
$ sudo apt-get install unrar $ sudo apt-get install rar
Macの場合、unrarならhomebrewなどで。
$ brew install unrar
rarを使いたい場合は以下から体験版が入手できます。
WinRAR and RAR archiver downloads
一緒にWindows版のWinRARも落としておくと、中に日本語のマニュアルが入っているので重宝します。
TAR の使い方
TARはTape ARchiveの略で、元々テープメディアのためのコマンドです。デフォルトでは /dev/rmt0(テープデバイス)にアクセスするので、f
でファイルを指定する必要があります。
本来のtarは複数のファイルをまとめたアーカイブ(書庫)を作成するのみで圧縮は行いません。圧縮したい場合は、z
、j
、J
などをつけて圧縮形式を指定します。
アーカイブの解凍(抽出)
解凍にはx
を使います。extract(抽出)の x と覚えとくといいと思います。
私の場合はですが、「解凍するコマンド」+「圧縮形式」と入れた方が覚えやすかったので、$ tar xvf
と入れ、圧縮形式に応じてオプションを追加してます。
## tarアーカイブ $ tar xvf ファイル名.tar ## gzipで圧縮されたtarアーカイブ $ tar xvfz 解凍するファイル.tar.gz ## bzip2で圧縮されたtarアーカイブ $ tar xvfj 解凍するファイル.tar.bz2 ## xzで圧縮されたアーカイブ $ tar xvfJ 解凍するファイル名.tar.xz
最近のtarは形式指定なしで解凍できますが、古いtarに遭遇したとき困るので指定するようにしてます。
アーカイブの作成
アーカイブの作成にはc
を使います。create の cと覚えとくといいと思います。
解凍と同じように、とりあえず $ tar cvf
と入れ、圧縮したい形式に応じてオプションを追加してます。
## tarアーカイブの作成 $ tar cvf ファイル名.tar ## gzipで圧縮 $ tar cvfz 圧縮後のファイル名.tar.gz 圧縮するファイル1, 2 … ## bzip2で圧縮 $ tar cvfj 圧縮後のファイル名.tar.bz2 圧縮するファイル1, 2 … ## xzで圧縮 $ tar cvfJ 圧縮後のファイル名.tar.xz 圧縮するファイル1, 2 …
アーカイブの内容を一覧表示
アーカイブ内のファイルを確認するにはt
を使います。list の t と覚えとくといいと思います。
先に中身を確認しておくと、「解凍したらファイルをぶちまけられた」ということが無くなるので安全です。
## アーカイブの内容を一覧表示 $ tar tf ファイル
展開先のディレクトリを指定
C
(大文字の C)をつけると、展開先を任意のディレクトリに指定できます。
## 展開先のディレクトリを指定 $ tar xvfC 解凍するファイル.tar 展開先のディレクトリ
バックアップを作成
--backup
をつけると、同名のアーカイブが既にあった場合に上書きせずバックアップを作成します。
## バックアップを作成 $ tar --backup -cvf ファイル名.tar ファイル1, 2 …
--backup=numbered
とすると、バックアップしたファイル名の末尾に番号をつけてくれます。
## 番号つきバックアップファイルを作成 $ tar --backup=numbered -cvf ファイル名.tar ファイル1, 2 …
アーカイブに追加後ファイルを削除
--remove-files
をつけると、アーカイブに追加した後、元のファイルを削除します。
## アーカイブに追加後ファイルを削除 $ tar --remove-files -cvf ファイル名.tar ファイル1, 2
特定のファイルなどを除外
--exclude
をつけると、アーカイブ作成時に、指定したファイルやディレクトリを除外します。例として、以下のような「aaa」というディレクトリがあったとします。
ここから特定のファイルを除外するには--exclude=aaa/bbb/bbb.txt
のように指定して実行します。
## aaa/bbb/bbb.txtを除外 $ tar --cxclude=aaa/bbb/bbb.txt -cf aaa.tar .
最後の「 . 」ドットはカレントディレクトリのことです。
--exclude=bbb.txt
と、ファイル名のみ指定すると、全ての「bbb.txt」ファイルを除外してアーカイブを作成します。
## bbb.txtを除外 $ tar --exclude=bbb.txt -cf aaa.tar .
ディレクトリを指定して除外する場合は--exclude=aaa/bbb
のようにします。/aaa/bbb
やaaa/bbb/
のように、先頭や末尾に「/」をつけると除外しないようなので注意してください。
## bbbディレクトリを除外 $ tar --exclude=aaa/bbb -cf aaa.tar .
正規表現が使えるので--exclude='*/.*'
と指定すると、.DS_Storeなどの不可視ファイルを全て除外してくれます。
## 不可視ファイルを除外 $ tar --exclude='*/.*' -cf aaa.tar .
複数のパターンを指定するこもできます。
## 複数指定 $ tar --exclude='*/.*' --exclude='bbb/*[b,c].txt' -cf aaa.tar aaa
上は、ドットで始まるファイルと、bbbディレクトリ以下にある、〜b.txt または 〜c.txt で終わるファイルを除外します。
除外パターンをファイルから読み込む
-X
(大文字の X)をつけると、ファイルからパターンを読み込むことができます。複数の除外パターンを指定したい場合に便利です。
aaa/aaa.txt */.* bbb/*[b,c].txt
例として上の内容のファイルをtar-exclude.listという名前で作成し、以下のように実行します。
## 除外パターンをファイルから読み込む $ tar cf aaa.tar aaa -X tar-exclude.list
TAR のオプション(機能指定文字)
「機能指定文字」は、必ず指定しなければならないオプションです。以下8つのオプションのうち、いずれかを指定しないと機能しません。
オプション | 説明 |
---|---|
-x
--extract --get |
tarファイルを解凍。 |
-c
--create |
tarファイルを作成。 |
-A
--catenate --concatenate |
既存のtarアーカイブの中に、別のtarアーカイブを追加。 |
-t
--list |
アーカイブの内容を一覧表示。
$ tar tvf ファイル と -v をつけるとアクセス権や所有者、グループも表示。 |
-r
--append |
指定したファイルをアーカイブの最後に追加。 |
-d
--diff --compare |
アーカイブ内のファイルと、実際のファイルの差分 を表示。 |
--delete | アーカイブ内の指定したファイルを削除。 |
-u
--update |
アーカイブ内の同名のファイルより、新しいものが存在
する場合、それを追加。 |
TAR のオプション(その他)
オプション | 説明 |
---|---|
-z
--gzip --ungzip |
gzip形式を利用して圧縮、解凍。 |
-j
--bzip2 |
bzip2形式を利用して圧縮、解凍。 |
-J | xz形式を利用して圧縮、解凍。 |
-f
--file |
(テープの代わりに)作成、解凍するファイルを指定。 |
-C | 指定したディレクトリにファイルを展開。 |
-p | 解凍時に元のアクセス権を保持。 |
--backup |
同じ名前のアーカイブがある場合は、
上書きせずにバックアップを作成。 --backup=numbered と指定すると末尾に番号をつける。
|
--remove-files | アーカイブ追加後にファイルを削除。 |
-v
--verbose |
詳細を表示。 |
--exclude= | アーカイブ作成時に除外したいパターンを指定。 |
-X | 除外パターンをファイルから読み込む。 |
ZIP と unzip の使い方
zipファイルの作成には$ zip
を。解凍には$ unzip
を使います。
unzip の使い方
基本的な使い方は、以下のように解凍したいファイルを指定するだけです。
## zipファイルの解凍
$ unzip 解凍したいファイル.zip
展開するディレクトリを指定
-d
をつけると、解凍先のディレクトリを任意の場所に指定できます。
## 展開するディレクトリを指定 $ unzip 解凍するファイル.zip -d 展開するディレクトリ
zipファイルの中を一覧表示
-l
、または-Z
をつけるとzipファイルの中を表示します。
## zipの中を一覧表示 $ unzip -l ファイル.zip Archive: ファイル.zip Length Date Time Name -------- ---- ---- ---- 0 09-02-12 08:34 ファイル/ 38 09-02-12 08:34 test/README.md 22598 09-02-12 06:47 test/test.css 3432010 09-02-12 22:04 test/test.html -------- ------- 3454646 4 files
-Zの場合、アクセス権や圧縮前後のサイズ、削減率も表示してくれます。これは$ zipinfo
というコマンドと同じ動作になります。
## zipの中を詳細表示 $ unzip -Z ファイル.zip Archive: ファイル.zip 809034 bytes 4 files drwxr-xr-x 3.0 unx 0 bx stor 2-Sep-12 08:34 ファイル/ -rw-r--r-- 3.0 unx 38 tx defN 2-Sep-12 08:34 test/README.md -rw-r--r-- 3.0 unx 22598 tx defN 2-Sep-12 06:47 test/test.css -rw-r--r-- 3.0 unx 3432010 tx defN 2-Sep-12 22:04 test/test.html 4 files, 3454646 bytes uncompressed, 808408 bytes compressed:76.6%
展開済みのファイルをスキップ
-n
をつけると、展開済みのファイルをスキップし、存在しないファイルのみ展開します。
## 展開済みファイルをスキップ $ unzip -n 解凍するファイル.zip
zipファイルの展開テスト
-t
をつけると、zipファイルの展開テストを行い、破損してるファイルがないかチェックすることができます。
## zipファイルの展開テスト $ unzip -t ファイル.zip Archive: ファイル.zip testing: test/ OK testing: test/README.md OK testing: test/test.css OK testing: test/test.html OK No errors detected in compressed data of ファイル.zip.
unzip のオプション
オプション | 説明 |
---|---|
-d | 展開先のディレクトリを指定。 |
-t | 解凍のテストを実施。 |
-n | 展開済みのファイルをスキップ。 |
-Z |
ZIPファイル内の情報を表示。
$ zipinfo と同等。
|
-l | ZIPファイル内の情報を、短い表示方式で表示。 |
-c | 標準出力にZIPファイの内容を表示。 |
-z | ZIPファイルのコメントを表示。 |
ZIP の使い方
基本的な使い方は tar と同じです。
## ファイルを圧縮
$ zip 圧縮後のファイル名.zip 圧縮するファイル1, 2
作成済みのzipファイルに再度$ zip
を実行すると、以下のような動作をします。
- 新しくファイルを指定した場合は、それを追加
- 格納済みのファイルを指定した場合は、最新の内容に更新
フォルダを圧縮
-r
をつけると、フォルダを再帰的に圧縮します。ファイルなどが入っているフォルダを圧縮する際に使います。
## フォルダを再帰的に圧縮 $ zip -r 圧縮後のファイル名.zip 圧縮するフォルダ
-r をつけずに実行すると空のフォルダのみ格納され、中のファイルを格納してくれません。
パスワードつきzipファイルを作成
-e
をつけると、パスワードつきzipファイルを作成します。
## ZIPでパスワードつきファイルを作成 $ zip -e 圧縮後のファイル名.zip 圧縮するファイル Enter password: (パスワードを入力) Verify password: (もう一度パスワードを入力)
破損したzipファイルの修復
-F
または--fix
をつけると、一部破損したzipファイルの修復を試みます。
## zipファイルの修復 $ zip -F 修復したいファイル.zip --out 修復後のファイル名.zip
ファイルの損傷が大きい場合は-FF
または--fixfix
というオプションを使います。
圧縮速度を指定
-0〜9
の数字を指定すると、圧縮にかかる時間を調整することができます。
0が最速で圧縮無し。9が最も遅く、高圧縮でzipを作成してくれます。デフォルト値は6です。
## 圧縮速度を指定 $ zip -9 圧縮後のファイル名.zip 圧縮するファイル
ZIPファイルの分割と結合
-s数字
をつけると、分割されたzipファイルを作成することができます。
## 分割ファイルを作成 $ zip -s60 -r 圧縮後のファイル名.zip 圧縮するファイル ## 既存のzipを分割 $ zip -s60 分割するファイル.zip --out 分割後のファイル名
上の場合60メガバイトごとに分割されます。数字の部分は以下の単位を指定できるようです。
- k キロバイト単位
- m メガバイト単位
- g ギガバイト単位
- t テラバイト単位
分割すると、拡張子が.z数字
と.zip
の2種類のファイルが作成されます。
アプリを使う場合は、.zip
のファイルを選べば結合と解凍を勝手にやってくれるはずです。
コマンドで結合するときも.zip
のファイルを使います。下のように-s0
をつけて実行します。
## 分割されたzipを結合 $ zip -s0 分割されたファイル名.zip --out 結合後のファイル名.zip
ZIP のオプション
オプション | 説明 |
---|---|
-d | ZIPファイルの中にある指定したファイルを削除。 |
-m |
指定したファイルをZIPファイルの中に移動。
元のファイルは削除される。 |
-u | 変更されたファイルや、新しいファイルのみアップデート。 |
-q | 処理状況を表示しない。 |
-0~9 |
圧縮速度を0〜9で指定。
数字が大きいほど圧縮率は上がるが、速度は遅くなる。 デフォルト値は6。 0を指定すると圧縮無しのZIPファイルを作成する。 |
-r | ディレクトリを再起的に圧縮。 |
-F
-fix |
一部破損しているzipファイルの修復を試みる |
-FF
--fixfix |
損傷が大きいファイルの修復を試みる。 |
-e | ZIPファイルを暗号化し、パスワードを追加。 |
-s# | 分割された圧縮ファイルを作成。 |
-l | 改行コードを LF から CR+LF に変更。 |
-ll | 改行コードを CR+LF から LF に変更。 |
-z | 作成するZIPファイルにコメントを付ける。 |
-c | 圧縮される、それぞれのファイルにコメントを追加。 |
-t | 指定した日付以降のファイルを対象にする。 |
-tt | 指定した日付以前のファイルを対象にする。 |
RAR の使い方
rarファイルを解凍
解凍にはx
を使います。これも extractのxと覚えとくと良いと思います。
## rar形式のファイルを解凍 $ unrar x ファイル.rar $ rar x ファイル.rar
解凍に使うオプションでe
というのもあります。これを指定するとサブディレクトリを作成せずに展開します。つまり「ファイルをぶちまける」状態になります。
新規rarファイルの作成、ファイルの追加
新規rarファイルの作成と、既存のrarへのファイル追加、どちらもa
オプションを使います。addのaと覚えとくと良いと思います。
## 新規作成、またはファイルの追加 $ rar a 圧縮後のファイル名.rar 圧縮するファイル1, 2
圧縮するファイルを指定しなかった場合、カレントディレクトリにある全てのファイルが圧縮されます。このときフォルダは含まれません。
サブフォルダも含んでrarファイルを作成
-r
をつけると、カレントディレクトリにある全てのファイルとサブフォルダを圧縮します。
## フォルダごとファイルをアーカイブ $ rar a -r 圧縮後のファイル名.rar
パスワードつきのrarファイルを作成
-p
をつけると、パスワードつきのrarファイルを作成します。
## パスワードつきで作成 $ rar a -p ファイル名.rar fiel1, file2 Enter password (will not be echoed): (設定するパスワードを入力) Reenter password: (もう一度パスワードを入力)
分割されたrarファイルを作成
-v数字
をつけて実行すると、指定したサイズごとに分割されたrarファイルを作成します。
## 指定したサイズごとに分割 $ rar a -v1024 圧縮後のファイル名.rar 圧縮するファイル
上の場合1024キロバイトごとに分割されます。数字の部分は以下の単位を指定することもできます。
- k キロバイト単位
- b バイト単位
- m メガバイト単位
- M 1,000,000バイト単位
- g ギガバイト単位
- G 1,000,000,000バイト単位
-v
を複数指定して、それぞれ異なるサイズを指定することもできます。
## 異なるサイズを指定 $ rar a -v1.5m -v2m -v2.5m 圧縮するファイル
上の場合、1番目のファイルは1.5メガバイト、2番目が2メガバイト、3番目が2.5メガバイトになります。
分割したファイルを元に戻す場合は、下のようにファイルが全てそろっている状態で、どれか1つ解凍するだけです。
結合と解凍を自動でやってくれます。zipみたいに面倒なことをする必要はないです。
破損したrarファイルを修復
r
をつけると、破損したrarファイルの修復を試みます。
## 破損したrarファイルを修復 $ rar r 破損したファイル.rar
リカバリレコードを追加
rr
をつけると、rarファイルに「リカバリレコード」と呼ばれる特殊なデータを追加します。圧縮ファイルの一部が破損した場合にリカバリレコードを用いてファイルを修復することができます。
## リカバリレコードを追加 $ rar rr ファイル名.rar $ rar a -rr 圧縮後のファイル名.rar 圧縮するファイル
rr数値
とすることで追加するリカバリレコードのサイズを指定するこもできます。1〜524288(セクタ)の数字、またはrr5%
と % で指定します。
リカバリレコードを追加してもダメなときはダメなので注意してください。
全ての質問をyesで答える
-y
をつけると、問いかけに全てyesで答えます。例えば展開先に同じ名前のファイルがあると、どうするか聞いてきますが…
-y
をつけると全てyesで実行してくれます。
## 全てyesで答える $ unrar x -y 解凍するファイル.rar $ rar x -y 解凍するファイル.rar
既存のファイルを上書きしない
-o-
(小文字のオー)をつけると、展開先に同じファイルがあっても上書きしないようにします。
## 既存のファイルを上書きしない $ unrar x -o- 解凍するファイル.rar $ rar x -o- 解凍するファイル.rar
既存のファイルを全て上書き
上の逆です。-o+
をつけると、展開先に同じ名前のファイルがあっても全て上書きします。
## 既存のファイルを全て上書き $ unrar x -o+ 解凍するファイル.rar $ rar x -o+ 解凍するファイル.rar
RAR のオプション
オプション | 説明 |
---|---|
-? | ヘルプを表示。 |
a | アーカイブにファイルを追加。 |
c | アーカイブにコメントを追加。 |
d | アーカイブ内の指定したファイルを削除。 |
e |
サブディレクトリを作成せず、
カレントディレクトリに展開。 |
x | フルパスで展開。 |
f |
指定したファイルが、アーカイブ内のものより
新しい場合は更新。 |
rn | アーカイブ内のファイル名を変更。 |
t |
アーカイブの展開テストを実施。
実際に展開はしない。 |
u | アーカイブの更新。 |
l | アーカイブの内容を一覧表示。 |
v |
アーカイブの内容を一覧表示。
アクセス権なども表示する。 |
-r | カレントディレクトリ圧縮の際にサブディレクトリも含む。 |
-r | 破損したrarファイルの修復を試みる。 |
rr | リカバリレコードを追加。 |
-y | 全ての質問にyesで答える。 |
k |
圧縮ファイルをロック。
アーカイブ内を編集不可にする。 |
-o- |
展開時に同じ名前のファイルがあっても、 上書きせずスキップ。 |
-o+ |
展開時に同じ名前のファイルがあったら、 上書き。 |
-p | パスワードつきのアーカイブを作成。 |
-v# | 分割された圧縮ファイルを作成。 |
m0〜5 |
圧縮レベルの指定。
m0 が最低値で、m5 が最大。
デフォルトは m3 。
|
-df | 圧縮後に元のファイルを削除。 |
gzip の使い方
圧縮ファイルを作成する$ gzip
、ファイルを解凍する$ gunzip
、圧縮ファイルを解凍して標準出力に書き出す$ zcat
と、役割の違う3つのコマンドがあるのですが、ハードリンクされているだけでファイルの実態は同じです。
どの名前で起動したかによって動作を変えていますが、どれで起動してもオプションを指定すれば全ての機能を実行できます。
なので、以下のどちらでもファイルを解凍できます。
## 圧縮ファイルを解凍 $ gunzip ファイル.gz $ gzip -d ファイル.gz
標準出力への書き出しも、以下のどちらでも実行可能です。
## 標準出力へ書き出す $ zcat ファイル.gz $ gzip -dc ファイル.gz
gzip で圧縮ファイルを作成
引数にファイルを指定すれば圧縮してくれます。
## 圧縮ファイルを作成
$ gzip 圧縮したいファイル
gzipには複数のファイルを1つにまとめてアーカイブ化する機能は備わってません。複数のファイルを指定すると1つずつ圧縮されたファイルを作成します。後述する$ bzip2
、$ xz
も同じです。
## 複数のファイルを指定
$ gzip test1.txt test2.txt
元の状態。
コマンド実行後。
フォルダ内のファイルを圧縮
-r
をつけると、圧縮するファイルにフォルダを指定することができます。フォルダ内で見つかったすべてのファイルを圧縮します。
以下のようになっているtestというフォルダを$ gzip -r
で圧縮すると…
各階層にあるファイルが圧縮されます。
gzip のオプション
オプション | 説明 |
---|---|
-d
--decompress --uncompress |
指定した圧縮ファイルを解凍。 |
-1~9
--fast --best |
圧縮速度を指定。
-1 または--fast は最も早いが、圧縮率は低い。
-9 または--best は最も遅いが、圧縮率は高い。
デフォルトは -6 。
|
-l
--list |
圧縮ファイルの情報を表示。
圧縮する前後のサイズ、圧縮率、fileを表示。 |
-r
--recursive |
指定したディレクトリ及び、その下の階層にある
ファイルを圧縮。 |
-t
--test |
圧縮ファイルの整合性をチェックする。 |
-q
--quiet |
警告の表示を抑制する。致命的なエラーは抑制されない。 |
-n
--no-name |
圧縮時に元のfileと、タイムスタンプ
を保存しない。 |
-N
--name |
圧縮時に元のfileとタイムスタンプを保存。
デフォルトで有効になっている。 fileの長さに制限があるシステムや、何らかの 原因でタイムスタンプが失われた場合に使用。 |
-c
--stdout |
処理結果を標準出力に書き出す。 |
-v
--verbose |
詳細を表示。 |
bzip2 の使い方
gzip同様に、$ bzip2
、$ bunzip2
、$ bzcat
とありますが、オプションを指定すれば全ての機能を実行できます。
ファイルを解凍
-d
をつけてファイルを解凍します。
## 圧縮ファイルを解凍 $ bzip2 -d 解凍したいファイル.bz2 $ bunzip2 解凍したいファイル.bz2
ファイルを圧縮
引数に圧縮したいファイルを指定します。$ bunzip -z
と実行しても圧縮します。
## ファイルを圧縮 $ bzip2 圧縮したいファイル $ bunzip2 -z 圧縮したいファイル
圧縮、解凍後にファイルを削除しない
圧縮、解凍すると元のファイルは削除されますが、-k
オプションを付けると削除されないようになります。
## 処理後にファイルを削除しない $ bzip2 -k ファイル $ bzip2 -dk ファイル.bz2
bzip2 のオプション
オプション | 説明 |
---|---|
-z
--compress |
起動されたコマンド名に関係なくファイルを圧縮。 |
-d
--decompress |
ファイルの解凍。
これも起動されたコマンド名に関係なく解凍する。 |
-t
--test |
指定されたファイルの完全性をチェックする。 |
-c
--stdout |
結果を標準出力に書き出す。 |
-k
--keep |
解凍、圧縮後に、元のファイルを削除しない。 |
-s
--small |
圧縮・解凍・テストの際のメモリ使用量を減らす。 |
-1〜9 |
圧縮時のブロックサイズを100KB〜900KBに設定。
デフォルトは -9 (900KB)
|
-q
--quiet |
警告の表示を抑制する。
致命的なエラーは抑制されない。 |
-v
--verbose |
詳細を表示。
-v の数を増やすと詳細表示のレベルが上がる。 主に診断を目的とする多くの情報を書き出す。 |
xz(lzma)の使い方
gzipやbzip2と同様、$ xz
、$ unxz
、$ xzcat
とありますが、xz+オプションで済みます。
ファイルを解凍
-d
をつけるとファイルを解凍します。
## 圧縮ファイルを解凍 $ xz -d 解凍したいファイル.bz2
ファイルを圧縮
引数に圧縮したいファイルを指定します。また、$ unxz -z
と実行しても圧縮します。
## ファイルを圧縮 $ xz 圧縮したいファイル $ unxz -z 圧縮したいファイル
圧縮、解凍後にファイルを削除しない
圧縮、解凍すると元のファイルは削除されますが、-k
オプションを付けると削除されないようになります。
## 処理後にファイルを削除しない $ xz -k ファイル $ unxz -dk ファイル.bz2
xz のオプション
オプション | 説明 |
---|---|
-z
--compress |
起動されたコマンド名に関係なくファイルを圧縮。 |
-d
--decompress |
ファイルの解凍。
これも起動されたコマンド名に関係なく解凍する。 |
-t
--test |
指定されたファイルの完全性をチェックする。 |
-l
--list |
圧縮ファイルの中を一覧表示。 |
-k
--keep |
解凍、圧縮後に、元のファイルを削除しない。 |
-f
--force |
解凍するファイルと同じ名前のファイルがあった場合、
上書きする。 |
-0〜9 |
-0 は最も早いが、圧縮率は最低。
-9 は最も遅いが、圧縮率が高い。
デフォルトは -6
|
-e
--extreme |
圧縮率を更に上げようとしてくれる。 |
-q
--quiet |
警告の表示を抑制する。
致命的なエラーは抑制されない。 |
-v
--verbose |
詳細を表示。
-v の数を増やすと詳細表示のレベルが上がる。 主に診断を目的とする多くの情報を書き出す。 |
-h
--help |
ヘルプを表示。 |
-H
--long-help |
詳細なヘルプを表示。 |
-V
--version |
バージョンを表示。 |
圧縮形式による違い
圧縮形式によって何が違うのか気になったので簡単にテストしてみました。
下はgcc-4.7.1.tar ※(527,104,000バイト)を使い、圧縮と解凍、それぞれ3回実施してユーザー時間の平均値を求めたものです。
※ gcc-4.7.1.tar.gzを一度解凍してtarボールにしたもの。
圧縮形式 | 圧縮後のサイズ | 圧縮率 | 所要時間(圧縮) | 所要時間(解凍) |
---|---|---|---|---|
zip | 107,313,569バイト | 20.4% | 43.17秒 | 7.19秒 |
gzip | 107,313,423バイト | 20.4% | 43.38秒 | 7.23秒 |
rar | 76,511,617バイト | 14.5% | 3分46.96秒 | 10.57秒 |
bzip2 | 82,558,974バイト | 15.7% | 3分48.33秒 | 53.63秒 |
xz | 66,960,916バイト | 12.7% | 12分39.67秒 | 17.06秒 |
検証環境:Ubuntu 10.04 Desktop | Intel Celeron M410 1.46GHz | メモリ 1.5GB
この結果をどう受け止めるかは人それぞれだと思いますが、使用環境や用途によって使い分けると良いんじゃないでしょうか。
参考リンク:
Linux OS 上での解凍・圧縮方法(コピペで使えるtarコマンド等)
アーカイブにゴミや見せたくないファイルを入れない方法 - 檜山正幸のキマイラ飼育記
LZMA圧縮されたファイルの扱いについて - 試験運用中なLinux備忘録
スポンサード リンク