ツイート
シェア
LINEで送る
B! はてぶでブックマーク
Pocketでブックマーク
RSSフィード

Linux tar, tar.gzファイルをアーカイブ・圧縮・解凍・展開する

programing image

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業界ですが、ぼくは話の前後で意味を理解して、てきとうにスルーします。

細かいことをいちいち指摘してたら話が進みませんから。

前の投稿
Linux chmod, ファイル・ディレクトリのパーミッション(権限)を変更する
Linux systemctl, Systemdのサービス名一覧
次の投稿
コメントを残す

*