tar.gzファイルの圧縮・解凍には、gzip, gunzipコマンドがあります。でもじつは、tarコマンドでも圧縮・解凍できます。
ぼくはtarコマンドのこの使い方をしょっちゅう忘れます。もう15年以上も使っているのに。
ということでボケてきたロートル・エンジニアの備忘録です。
tarファイルの作成(アーカイブ)
まずは、tarファイルの作成から。
tarファイルは圧縮ファイルではありません。『アーカイブファイル』です。アーカイブは複数のファイルをひとつのファイルにまとめることを言います。
ディレクトリとファイルで階層化されているファイル群を、ひとつのファイルにまとめるのに使います。
ディレクトリやリンクもファイルの一種なのでぜんぶまとめることができます。
メールなどを使って、どこか別の場所へ転送するときに使うコマンドがtarです。
ファイルのアーカイブコマンド
tar -cvf filename.tar target_dir_or_file
オプション
c | 新規のアーカイブファイルを作成する |
v | コマンド結果を標準出力する |
f | アーカイブファイル名を指定する |
tarコマンドで、アーカイブファイルを作ることを『圧縮』という人がいますが、ちがいます。
『アーカイブ』です。
アーカイブ(archive)はもともと、公記録の保存場所、履歴の意味です。
tarファイルの展開
次はアーカイブファイルを元のディレクトリ・ファイルに復元します。
『展開』といいます。これを『解凍』という人がいますがこれもちがいます。
ファイルの展開コマンド
tar -xvf filename.tar
オプション
x | ファイルの展開をする |
v | コマンド結果を標準出力する |
f | 展開するファイルを指定する |
アーカイブと同時に圧縮まで行う
ここまではtarコマンドの『あたりまえ』の使い方でした。ここからは本題の『tarコマンドのファイル圧縮』です。
tarコマンドは、アーカイブと同時に圧縮までやってしまうオプションがあります。
ファイル圧縮のオプション
tar -zcvf filename.tar.gz target_dir_or_file
z | アーカイブのあと圧縮する |
オプションに『z』を追加するだけ。このオプションで作成されるファイルは『.tar.gz』です。
zip圧縮の"z"です。
展開と解凍をまとめて行う
圧縮の次は解凍です。
ファイル解答のオプション
tar -zxvf filename.tar.gz
オプション
z | 解凍する |
このオプションでは、まず圧縮されたファイルを解凍します。
(.tarファイルを復元します。)
そして解凍された.tarファイルを展開します。
最終的にアーカイブされる前の状態まで戻します。
まとめ
ファイルの圧縮形式をzipにするならtarコマンドで十分です。gzip, gunzipコマンドもありますがあまり使うことはありません。
ぼくが使い方を忘れてしまう原因は、このgzipコマンドです。両方のコマンドを知っているため、使い方がごっちゃになるから。
gzipは解凍するオプションもあって、gunzipと同じことができることもややこしい。
またtarコマンドには、ほかにたくさんのオプションがありますが、『zcvf』『zxvf』以外に使うことはあまりないです。
(よっぽど制約があって求められない限りは。)
15年以上使ってて、
アーカイブ | cvf |
アーカイブ・圧縮 | zcvf |
展開 | xvf |
解凍・展開 | zxvf |
以外のオプションを使ったのは、指でかぞえるくらい。
なので、これ以外は知らなくてもやっていけます。この4セットを指感覚で覚えておけばいいでしょう。
さいごに、アーカイブと圧縮、展開と解凍はごちゃまぜで使われることが多いですが、正確にはちがうことは覚えておきましょう。
(ベテランエンジニアでも使い分けしない人が意外に多いです。)
アーカイブ | 複数のファイルをまとめるだけ |
圧縮 | ファイルを指定された形式で圧縮する |
展開 | アーカイブファイルから復元する |
解凍 | 圧縮されたファイルを復元する |
とくに『展開』は解凍と同じ意味で使う人が多いです。
ひとつの圧縮ファイルからファイル群(ディレクトリ階層)に復元されるようすが『展開する』からでしょう。
でも展開は、アーカイブファイルの復元でも使って意味もちがいます。アーカイブファイルはまとめるだけで圧縮しません。
細かいことをひとつひとつツッコむ人が多いのもIT業界ですが、ぼくは話の前後で意味を理解して、てきとうにスルーします。
細かいことをいちいち指摘してたら話が進みませんから。