UNIX でよく用いられる圧縮と伸張のコマンドとして, gzipと gunzipがあります.これらは,GZIPという形式の圧縮と伸張を行うコマンドです. ここでは,この2つのコマンドを使って,圧縮と伸張を試してみましょう.
まず,次の3つのファイルを自分のディレクトリにダウンロードしてください. それぞれのファイル名を,マウスの右ボタンでクリックして,出てきたメニューから,
を選びます (ダウンロード先は自分で適当に決めましょう).00(16) のバイト (ASCII で NUL) のみのファイル
普通の ASCII テキストファイル (主にアルファベットと空白)
1 から 99 までのランダムなバイトが詰まったファイル
ls コマンドによって, どのファイルも大きさが 1000バイトであることが分かります.
ls -l -rw------- 1 yama teacher 1000 Apr 19 19:55 filenull.txt -rw------- 1 yama teacher 1000 Apr 19 19:55 filerand.txt -rw------- 1 yama teacher 1000 Apr 19 19:55 filetext.txt
各ファイルfilenameについて,以下のいずれかのコマンドを実行することで, ファイルの内容を確認できますから試してみましょう. また,Emacs を用いても,それぞれのファイルの内容を確認できます.
less -f filename od -a filename
gzip コマンドは,与えられたファイル filename を圧縮して, filename.gz というファイルを生成します. 次のように,3つのファイルを圧縮してから,サイズを比較してみましょう.
gzip filenull.txt gzip filerand.txt gzip filetext.txt ls -l -rw------- 1 yama teacher 42 Apr 19 19:55 filenull.txt.gz -rw------- 1 yama teacher 892 Apr 19 19:55 filerand.txt.gz -rw------- 1 yama teacher 560 Apr 19 19:55 filetext.txt.gz
元のファイルはいずれも同じ1000バイトであったのに, 00(16) のバイトのみが入っていた単調なファイル filenull.txt は非常に小さくなり, ランダムなバイトの入っていたファイル filerand.txt はそれほど小さくなっていないのがわかります.
gzip コマンドによる圧縮は,損失のない圧縮ですので, 伸張することが可能です. 伸張用のコマンド gunzip によって, 圧縮されたファイル filename.gz を元のファイル filename に戻します.
gunzip filenull.txt.gz gunzip filerand.txt.gz gunzip filetext.txt.gz ls -l -rw------- 1 yama teacher 1000 Apr 19 19:55 filenull.txt -rw------- 1 yama teacher 1000 Apr 19 19:55 filerand.txt -rw------- 1 yama teacher 1000 Apr 19 19:55 filetext.txt
また,tarコマンドを使うと,複数のファイルを1つにまとめてgzipによる圧縮をすることができます.
cvzfというオプションを指定して使います. cがまとめるという操作を指定し,vはどのファイルをまとめているかの情報を出力します. zがgzipによる圧縮であることを表します. fの後に,対象となるファイルを指定します.
以下のようにして,file.tar.gzというファイルに3つのファイルをまとめて圧縮します.
tar cvzf file.tar.gz filenull.txt filerand.txt filetext.txt filenull.txt filerand.txt filetext.txt ls -l -rw------- 1 yama teacher 1681 Apr 19 19:55 file.tar.gz -rw------- 1 yama teacher 1000 Apr 19 19:55 filenull.txt -rw------- 1 yama teacher 1000 Apr 19 19:55 filerand.txt -rw------- 1 yama teacher 1000 Apr 19 19:55 filetext.txt
ファイル名やファイルのつなぎ目を表す情報などが含まれるために,ファイルサイズが,それぞれのファイルを圧縮して足し合わせたもの(42+892+560=1494)よりは,大きくなるようです.
元のファイルを取り出すには,オプションで,cの代わりにxを指定します.
rm filenull.txt filerand.txt filetext.txt ls -l -rw------- 1 yama teacher 1681 Apr 19 19:55 file.tar.gz tar xvzf file.tar.gz filenull.txt filerand.txt filetext.txt ls -l -rw------- 1 yama teacher 1681 Apr 19 19:55 file.tar.gz -rw------- 1 yama teacher 1000 Apr 19 19:55 filenull.txt -rw------- 1 yama teacher 1000 Apr 19 19:55 filerand.txt -rw------- 1 yama teacher 1000 Apr 19 19:55 filetext.txt
19.7 圧縮 | 19.7.1 コマンドラインからの圧縮 | 19.7.2 Finderからの圧縮 | ||
発展項目をスキップ | 19.9 確認テスト | |||
2009年度版に向けて現在作業中です.
このページに関してお気づきの点がありましたら
コメント投稿システムまでお願いします.
|
Wed, 19 Mar 2008 10:44:26 JST (499d) |