Linux Tips

複数のファイルを1つにまとめて圧縮するには

北浦訓行
2001/4/5

 Linuxでは、tarコマンドで複数のファイルを1つにまとめて(アーカイブ)、gzipコマンドで圧縮するケースが多い。ファイル名は、ほとんどの場合「xxx.tar.gz」である(まれに「xxx.tgz」のこともある)。

 まず最初に、複数のファイルをアーカイブする。アーカイブする際の書式は、

$ tar cvf アーカイブファイル名 アーカイブするファイル名

である。アーカイブファイル名は、.tarという拡張子を付ける。

$ ls
file.tif  free.tif  ftpsite.tif  gnorpm.tif  ktermfont0.tif  
ktermfont1.tif
$ tar cvf tif.tar *.tif
file.tif
free.tif
ftpsite.tif
gnorpm.tif
ktermfont0.tif
ktermfont1.tif
$ ls -l
合計 4596
-rw-r--r--    1 noriyu-k noriyu-k   212442 Jan 26 17:04 file.tif
-rw-r--r--    1 noriyu-k noriyu-k    15688 Jan 26 17:40 free.tif
-rw-r--r--    1 noriyu-k noriyu-k   600394 Jan 25 12:29 ftpsite.tif
-rw-r--r--    1 noriyu-k noriyu-k    48500 Mar 11 20:01 gnorpm.tif
-rw-r--r--    1 noriyu-k noriyu-k  1441865 Jan 26 17:27 ktermfont0.tif
-rw-r--r--    1 noriyu-k noriyu-k    13112 Jan 26 17:29 ktermfont1.tif
-rw-rw-r--    1 noriyu-k noriyu-k  2344960 Mar 23 18:46 tif.tar

 ファイルを圧縮するには、gzipコマンドを使用する。圧縮する際は、

$ gzip ファイル名

という書式になる。これによって、ファイルはLempel-Zivコーディング(LZ77)で圧縮され、.gzというファイルが生成される。

 また、gzipよりも圧縮効率の高いbzip2というコマンドもある。bzip2の場合、圧縮ファイルの拡張子は、.bz2になる。bzip2の書式はgzipと同じだ。

$ ls -l
合計 2296
-rw-rw-r--    1 noriyu-k noriyu-k  2344960 Mar 23 18:46 tif.tar
$ gzip tif.tar
$ ls -l
合計 292
-rw-rw-r--    1 noriyu-k noriyu-k   293087 Mar 23 18:46 tif.tar.gz

 さて、圧縮されたアーカイブファイルを展開するにはで紹介したとおり、Linuxのディストリビューションに付属しているGNU版のtarには、Lempel-Zivコーディングによる圧縮・展開機能が追加されている。従って、gzipを使用せずにxxx.tar.gzを一気にアーカイブ、圧縮が可能だ。

$ ls
file.tif  free.tif  ftpsite.tif  gnorpm.tif  ktermfont0.tif  
ktermfont1.tif
$ tar cvzf tif.tar.gz *.tif
file.tif
free.tif
ftpsite.tif
gnorpm.tif
ktermfont0.tif
ktermfont1.tif
$ ls -l
合計 2592
-rw-r--r--    1 noriyu-k noriyu-k   212442 Jan 26 17:04 file.tif
-rw-r--r--    1 noriyu-k noriyu-k    15688 Jan 26 17:40 free.tif
-rw-r--r--    1 noriyu-k noriyu-k   600394 Jan 25 12:29 ftpsite.tif
-rw-r--r--    1 noriyu-k noriyu-k    48500 Mar 11 20:01 gnorpm.tif
-rw-r--r--    1 noriyu-k noriyu-k  1441865 Jan 26 17:27 ktermfont0.tif
-rw-r--r--    1 noriyu-k noriyu-k    13112 Jan 26 17:29 ktermfont1.tif
-rw-rw-r--    1 noriyu-k noriyu-k   293079 Mar 23 17:29 tif.tar.gz

 LZH形式で圧縮・アーカイブする場合は、lhaコマンドを使用する。手順は以下のとおりだ。

$ ls
file.tif  free.tif  ftpsite.tif  gnorpm.tif  ktermfont0.tif  
ktermfont1.tif
$ lha a tif.lzh *.tif
file.tif        - Frozen(2%)  oooo
free.tif        - Frozen(14%) o
ftpsite.tif     - Frozen(7%)  oooooooooo
gnorpm.tif      - Frozen(86%) o
ktermfont0.tif  - Frozen(12%) ooooooooooooooooooooooo
ktermfont1.tif  - Frozen(60%) o
$ ls -l tif.lzh
-rw-rw-r--    1 noriyu-k noriyu-k   278702 Mar 23 20:24 tif.lzh

 UNIXでよく使用されるcompressコマンドを使ったファイル圧縮は、以下の手順で行う。

$ ls -l
合計 2296
-rw-rw-r--    1 noriyu-k noriyu-k  2344960 Mar 23 20:27 tif.tar
$ compress tif.tar
$ ls -l
合計 348
-rw-rw-r--    1 noriyu-k noriyu-k   349737 Mar 23 20:27 tif.tar.Z

Linux Tips Index


 Linux Squareフォーラム Linux Tipsカテゴリ別インデックス
インストール/RPM ブート/ブートローダ
ファイル操作 環境設定
ユーザー管理 コンソール/ターミナル
X Window System セキュリティ
トラブルシューティング 他OS関係
ネットワーク ハードウェア
Webサーバ Samba
GNOME KDE
OpenOffice.org エミュレータ
ソフトウェア そのほか/FAQ
全Tips公開順インデックス Linux Tips月間ランキング
Linux Squareフォーラム全記事インデックス

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間