試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

LZMA圧縮されたファイルの扱いについて

(2008/9/1)ここで扱っているのは、LZMA圧縮/伸長に関するコマンドについて。GUIツールに関しては、GNOMEの書庫マネージャ(File Roller)が(バージョン2.22系の時点では)対応していて、他の書庫ファイルの形式と同様に書庫の作成、書庫内ファイル/ディレクトリの閲覧・追加・削除・取り出しといった操作が行える。また、ドラッグ・アンド・ドロップにより、ファイルマネージャと併用しての書庫への追加と書庫からの取り出しが行えるのも便利。
(2009/12/16)ここで扱うツールはXZ Utilsとして新しくなり、形式もXZという形式へと置き換えられている。今後はこちらを用いることが推奨される。XZ圧縮されたファイルの扱いについて(前半)」と「XZ圧縮されたファイルの扱いについて(後半)」も参照。

LZMA Utilsについて

1つのファイルを圧縮/伸長するコマンドとして、gzipbzip2がある。これらには、圧縮以外のzcatzlessなど、圧縮されたファイルを簡単に扱えるような処理を持つツールも付属する。
LZMA Utilsというツール群は、bzip2よりも圧縮率の高いLZMAアルゴリズム*1を使用していて、扱い方も先の2つのツール群にならっている。

関連URL:

コマンドの比較

gzip/bzip2/LZMA Utilsのコマンド比較
処理gzipbzip2LZMA Utils
圧縮*2gzipbzip2lzma
伸長*3gunzipbunzip2unlzma
圧縮された各ファイルをそれぞれ伸長し、それらを結合したものを標準出力へzcatbzcatlzcat
圧縮されたファイルを伸長してページャ*4表示*5zlessbzlesslzless
圧縮されたファイルを伸長して比較*6zdiffbzdifflzdiff
圧縮されたファイルを伸長して検索*7zgrepbzgreplzgrep

tarボールをLZMA圧縮

gzipbzip2と同様、tarボール*8の圧縮に使用されることもある。圧縮されたファイルの拡張子は「.tar.lzma」が用いられる他、「.tlz」が使用されることもある。

tar 1.19以下の場合

gzipbzip2と違い、コマンドを1つ実行するだけではダメなので、パイプを使用して2段階で処理する。

(作成・端末出力なし)
$ tar cf - [ファイルやディレクトリ...] | lzma > [ファイル名].tar.lzma
(作成・詳細出力)
$ tar cvf - [ファイルやディレクトリ...] | lzma > [ファイル名].tar.lzma

(展開・端末出力なし)
$ lzcat [ファイル名].tar.lzma | tar xf -
(展開・詳細出力)
$ lzcat [ファイル名].tar.lzma | tar xvf -
tar 1.20以上の場合

バージョン1.20以上のtarでは、パイプを使用した上の方法の他に、--lzmaオプションを付けることで、1つのコマンドで処理ができる。バージョン1.20の時点では短縮オプション*9はないようだ。

(作成・端末出力なし)
$ tar cf [ファイル名].tar.lzma --lzma [ファイルやディレクトリ...]
(作成・詳細出力)
$ tar cvf [ファイル名].tar.lzma --lzma [ファイルやディレクトリ...]

(展開・端末出力なし)
$ tar xf [ファイル名].tar.lzma --lzma
(展開・詳細出力)
$ tar xvf [ファイル名].tar.lzma --lzma

関連記事:

使用したバージョン:

  • LZMA Utils 4.32.5
  • tar 1.19(1.19-r1), 1.20

*1:圧縮率が非常に高く、圧縮にかかる時間が長く、その割に伸長は軽めというのがの特徴

*2:属性を保持して元ファイルを削除

*3:属性を保持して元ファイルを削除

*4:データの内容をスクロールしながら表示するツール

*5:「less」の代わりに「more」もある

*6:「diff」の代わりに「cmp」もある

*7:grep」の代わりに「egrep」「fgrep」もある

*8:ファイルやディレクトリを1つにまとめたもので、無圧縮。アクセス権も保持される

*9:gzipではzbzip2ではj