お金をかけずにサーバーの勉強をしよう

tarコマンド

2022年8月15日

メニューへ戻る

[.tar.gz][.tgz]のファイルを展開する方法。

何かサーバープログラムをインストールしようとして、どこぞのサイトからファイルをダウンロードしてきたとします。

[.deb] で終わるファイル名なら aptコマンドでインストールすれば良いし、[.rpm]なら dnf(または yum)コマンドですが、たまに [.tar.gz] や [.tgz] となっているものに出会うと思います

これらは tarコマンド(an archiving utilit)で複数のファイルやディレクトリを 1つに纏めた上で gzip圧縮されたファイルです。

「複数のファイルやディレクトリを 1つに纏めた」って言うのは、Windowsなら [.zip]ファイルを思い出してもらえれば、アレと似たようなものと理解できると思います。


以下これらのファイルを解凍する手順です。

環境は Ubuntu Desktop 22.04 でやっていますが、Linuxなら皆同じでしょう。


[aaa] というディレクトリがあるとします。

subro@Ubuntu2204:~/work/tar$ ls -l
total 4
drwxrwxr-x 3 subro subro 4096  8月 15 11:26 aaa

中身はこの通り。
・[aaa.txt]ファイル
・[bbb]サブディレクトリ
・[bbb]サブディレクトリの中に [bbb.txt]ファイル

subro@Ubuntu2204:~/work/tar$ tree
aaa
├── aaa.txt
└── bbb
    └── bbb.txt

[aaa]ディレクトリを tarコマンドで 圧縮しつつ1つのファイルに纏めます。
コマンドの使い方はこうです。

tar -c(まとめる) -z(gzip圧縮/解凍する) -v(作業内容を表示する) -f(まとめられたファイル名) まとめる対象

実際にやってみます。
オプションを表す「-」は 1つでOK。

subro@Ubuntu2204:~/work/tar$ tar -czvf aaa.tgz aaa
aaa/
aaa/bbb/
aaa/bbb/bbb.txt
aaa/aaa.txt

できました。

結果はこうです。
-fオプションで指定した [aaa.tgz]ファイルができています。

subro@Ubuntu2204:~/work/tar$ ls -l
total 8
drwxrwxr-x 3 subro subro 4096  8月 15 11:26 aaa
-rw-rw-r-- 1 subro subro  266  8月 15 11:37 aaa.tgz

[.tar.gz] や [.tgz] のファイルの中に何が入っているかの確認は、-c(まとめる) オプションの代わりに -t(一覧)オプションを使います。
これは解凍作業をする前に必ずやっておきましょう

subro@Ubuntu2204:~/work/tar$ tar -tzvf aaa.tgz
drwxrwxr-x subro/subro 0 2022-08-15 11:26 aaa/
drwxrwxr-x subro/subro 0 2022-08-15 11:26 aaa/bbb/
-rw-rw-r-- subro/subro 6106 2022-08-15 11:26 aaa/bbb/bbb.txt
-rw-rw-r-- subro/subro 6651 2022-08-15 11:26 aaa/aaa.txt

返す返すも言いますが、中身の確認は必ずやりましょう
予期しない場所に解凍されてしまうという重大事故を起こすことがよくあって、大事なことなので 2度言いました。

次は解凍をしますので、一旦 [aaa]ディレクトリは削除した状態でやります。

解凍には、-x(解凍)オプションを使います。

subro@Ubuntu2204:~/work/tar$ ls -l
total 4
-rw-rw-r-- 1 subro subro 266  8月 15 11:37 aaa.tgz

subro@Ubuntu2204:~/work/tar$ tar -xzvf aaa.tgz
aaa/
aaa/bbb/
aaa/bbb/bbb.txt
aaa/aaa.txt

subro@Ubuntu2204:~/work/tar$ ls -l
total 8
drwxrwxr-x 3 subro subro 4096  8月 15 11:26 aaa
-rw-rw-r-- 1 subro subro  266  8月 15 11:37 aaa.tgz

[aaa]ディレクトリができました。

[aaa]ディレクトリの中を見てみます。

subro@Ubuntu2204:~/work/tar$ ls -lR aaa
aaa:
total 12
-rw-rw-r-- 1 subro subro 6651  8月 15 11:26 aaa.txt
drwxrwxr-x 2 subro subro 4096  8月 15 11:26 bbb

aaa/bbb:
total 8
-rw-rw-r-- 1 subro subro 6106  8月 15 11:26 bbb.txt

以下の特徴があります。
・ファイル/ディレクトリのオーナー/グループは解凍したユーザーのものになる
・パーミッションは纏められた時のものになる
・タイムスタンプは纏められた時のものになる


==========
これだけのことなんですが、tarコマンドを使うのは常識になってしまっていて、どこのインストールチュートリアルでもこの手順は触れていないと思います。

ダウンロードファイルを見てから「これからどうすりゃいいの?」となってしまった人のために書きました。

ごきげんよう。


この本はリファレンスでありながら、通読してみると「おっ?あそこの作業ではこれを使えば良かったのか。」って思うことがあります。
持っててたまに読んでみると良い、隠れた名作です。