気の向くままに ~備忘録@wiki~

Linux - 圧縮・解凍

最終更新:

shirayuu

- view
管理者のみ編集可
各種圧縮ファイルの解凍と圧縮にいつも手間取るのでメモしておきます。

以下のページが見やすくかつ分かりやすいです。
http://uguisu.skr.jp/Windows/tar.html

例としてディレクトリ構成を以下のようにして圧縮解凍してみます。
hoge
hoge/foo.txt
hoge/bar.txt



各種コマンド一覧

軽くまとめる
形式 圧縮コマンド 解凍コマンド 備考(ubuntu)
tar tar -cvf hoge.tar hoge/ tar -xvf hoge.tar 最初から入ってるはず
tar+z (taz) tar -Zcvf hoge.tar.gz hoge/ tar -Zxvf hoge.tar.z ncompress パッケージが必要
tar+gz (tgz) tar -zcvf hoge.tar.gz hoge/ tar -zxvf hoge.tar.gz 最初から入ってるはず
tar+bz2 (tbz) tar -jcvf hoge.tar.bz2 hoge/ tar -jxvf hoge.tar.bz2 最初から入ってるはず
tar+xz tar -Jcvf hoge.tar.xz hoge/ tar -Jxvf hoge.tar.xz xz-utils パッケージが必要 (lzma から置き換る)
zip zip -rv hoge.zip hoge/ unzip hoge.zip zip, unzip パッケージが必要
lzh lha -cv hoge.lzh hoge/ lha -v hoge.lzh lha パッケージが必要
7-zip 7z a hoge.7z hoge/ 7z x hoge.7z p7zip, p7zip-full パッケージが必要
rar rar a hoge.rar hoge unrar x hoge.rar rar, unrar パッケージが必要
cab lcab -r hoge/ hoge.cab cabextract hoge.cab lcab, cabextract パッケージが必要
註) tar コマンドは GUN tar


tar: manページwikipedia

アーカイブの作成。複数のファイルを一つにまとめることができる。
tar アーカイブからさらに、compress, gzip, bzip, xz 各種形式に渡して圧縮するのが UNIX風。

圧縮

もっとも簡単なオプションでのアーカイブ方法
$ tar -c <ディレクトリおよびファイル> > <tarアーカイブ名>
$ tar -c hoge/ > hoge.tar

ファイル名を指定し、詳細の表示も行う。
$ tar -cvf <tarアーカイブ名> <ディレクトリおよびファイル>

ディレクトリごと圧縮するときは以下のようにする。
$ tar -cvf hoge.tar hoge/
hoge/
hoge/foo.txt
hoge/bar.txt
複数ファイル(ディレクトリ)を圧縮するときは以下のようにする。
$ tar -cvf foobar.tar foo.txt bar.txt
foo.txt
bar.txt

解凍

tar アーカイブを解凍する。ついでに詳細を表示する。
$ tar -xvf  <tarアーカイブ名>
$ tar -xvf hoge.tar
hoge/
hoge/foo.txt
hoge/bar.txt


compress: Wikipedia

compress 形式で圧縮する。ディレクトリ(もしくは複数のファイル)ごと圧縮はできないので、ディレクトリを圧縮するときは tar に渡してから圧縮する。tar+compress で圧縮した時は、慣例的に拡張子は、.tar.Z もしくは、.taz となっている。

# compress 形式は特許の問題でややこしいようです。ubuntu では、ncompressパッケージを入れる必要があります。

圧縮

$ compress <ファイル>
$ compress -v hoge.txt
ディレクトリを圧縮する時は tar コマンドの -Z オプションをつけるか、tar に渡してから compress で圧縮する。
$ tar -cvf hoge.tar hoge/
hoge/
hoge/foo.txt
hoge/bar.txt
$ compress hoge.tar
hoge.tar:  -- replaced with hoge.tar.Z Compression: 96.24%
もしくは、一発で次のように圧縮。
$ tar -Zcvf hoge.tar.Z hoge/
hoge/
hoge/foo.txt
hoge/bar.txt


解凍

圧縮とまったく逆の操作を行えば良い。ファイルの解凍なら。
$ uncompress -v <ファイル>
$ uncompress -v hoge.txt

tar.Z 形式なら
$ uncompress -v <tar.zファイル>
$ tar -xvf <tarファイル>
zcat を用いて解凍する。
$ zcat -v <tar.zファイル> | tar -cvf -
$ zcat -v hoge.tar.z | tar -cvf -
hoge.tar.Z:      96.2%
hoge/
hoge/foo.txt
hoge/bar.txt
tar コマンドで一発で解凍する。
$ tar -Zxvf <tar.Zファイル>
$ tar -Zxvf hoge.tar.Z
hoge/
hoge/foo.txt
hoge/bar.txt


gzip: manページwikipedia

gzip 形式で圧縮する。ディレクトリの圧縮はできないので、ディレクトリを圧縮したいときは、tar を通して圧縮する。tar を通したときは慣例的にファイル名は、tar.gz もしくは .tgz となる。

圧縮

$ gzip -v <ファイル>
$ gzip -v hoge.txt

まとめて複数のファイルを圧縮する時は tar コマンドを使う。例えば、
$ tar -cvf <tarファイル名> <ディレクトリもしくは複数のファイル>
$ gzip -v <tarファイル>
とするか tar コマンドの -z オプションを用いて一気に圧縮する。
$ tar -zcvf <tar+gzファイル名> <ディレクトリもしくは複数のファイル>
$ tar -zcvf hoge.tar.gz hoge/
hoge/
hoge/foo.txt
hoge/bar.txt


解凍

解凍も compress 形式と同じような感じで
$ gzip -dv <ファイル名>
$ gzip -dv hoge.gz

tar+gz 形式の時は以下の方法で解凍できます。
2段階踏むときは
$ gzip -dv <tar+gzファイル名>
$ tar -cvf <tarファイル名>
zcat を用いても行えます。
$ zcat -v <tar+gzファイル> | tar -cvf -
tar コマンドで一気に解凍する。
$ tar -zxvf <tar+gzファイル名>
$ tar hoge.tar.gz
hoge/
hoge/foo.txt
hoge/bar.txt


bzip2: manページWikipedia

圧縮

ディレクトリの圧縮や複数ファイルの圧縮はできないため。ディレクトリの圧縮を行うときは tar を通します。そのときのファイル名は、tar.bz2 もしくは、 tbz となります。

ファイルを圧縮する時は以下のようにします。
$ bzip2 -v <ファイル>
$ bzip2 -v hoge.txt

ディレクトリまたは複数ファイルを圧縮する時は、
$ tar -cvf <tarファイル名> <ディレクトリ>
$ bzip2 -v <tarファイル名>
もしくは tar コマンドで一気に圧縮する。
$ tar -jcvf <tar+bz2ファイル名> <ディレクトリ>
$ tar -jcvf hoge.tar.bz2 hoge/
hoge/
hoge/foo.txt
hoge/bar.txt


解凍

compress 形式、gzip 形式と同じ感じで解凍する。
$ bzip2 -dv <bzip2ファイル>

tar+bz2 の時は
$ bzip2 -dv <tar+bz2ファイル>
$ tar -xvf <tarファイル>
bzcat を用いて解凍。
$ bzcat -v <tar+bz2ファイル> | tar -xvf -
tar を用いて一気に解凍
$ tar -jxvf <tar+bz2ファイル名>
$ tar -jxvf hoge.tar.bz2
hoge/
hoge/foo.txt
hoge/bar.txt


xz:

新しく xz 形式の圧縮ファイルが行えるようになりました。
http://codezine.jp/article/detail/3658

圧縮

基本的に以下のコマンドで圧縮
$ xz -v <ファイル名>

これも、同じくディレクトリや複数ファイルを圧縮する時は tar を通してから圧縮します
$ tar -cvf <tarファイル名> <ディレクトリ>
$ xz -v <tarファイル>
もしくは一気に
$ tar -Jcvf <tar+xzファイル名> <ディレクトリ>
$ tar -Jcvf hoge.tar.xz hoge/
hoge/
hoge/foo.txt
hoge/bar.txt

解凍

$ xz -dv <xzファイル名>

tar+xz を解凍する時は、
2段階
$ xz -dv <tar+xzファイル>
$ tar -xvf <tarファイル>
xzcat を用いて
$ xzcat -dv <tar+xzファイル> | tar -xvf -
tar で一気に
$ tar -Jxvf <tar+xzファイル>
$ tar -Jxvf hoge.tar.xz
hoge/
hoge/foo.txt
hoge/bar.txt


zip: Wikipedia

もっとも有名な圧縮形式ではないでしょうか、Windows でも頻繁に使われてます。
zip はアーカイブ機能も備えているので、tar で固めてからzip する必要はありません。

ubuntu では、zip(圧縮), unzip(解凍) パッケージが必要となります。
$ sudo apt-get install zip unzip

圧縮

ファイルの圧縮は、
$ zip -v <zipファイル名> <ファイル名(複数可)>
$ zip -v foobar.zip foo.txt bar.txt
とこのような感じで圧縮できます。
ディレクトリを圧縮するときは少し注意が必要で -r オプションを付け加える必要があります。
$ zip -rv <zipファイル名> <ディレクトリ>
$ zip -rv hoge.zip hoge/

解凍

解凍は特にオプションの指定をしなくても詳細に解凍されるファイルが表示されます。
$ unzip <zipファイル>
$ unzip hoge.zip

lzh

圧縮

$ lha -cv <lzhファイル名> <ディレクトリ>
$ lha -cv hoge.lzh hoge/

解凍

$ lha -v <lzhファイル>
$ lha -v hoge.lzh
目安箱バナー