【Linux】tarコマンドでファイルを(超)圧縮・解凍する方法

【Linux】tarコマンドでファイルを(超)圧縮・解凍する方法

記事の文字数:1117

tarコマンドでファイルを圧縮・解凍(展開)する方法を紹介します。gzip圧縮するにはzcvfオプションをコマンドに指定し、解凍するにはxvfオプションを指定します。


スポンサーリンク

tarコマンドでgzip圧縮するにはzcvfオプションを用います。
さらに圧縮率の高いbzip2はjcvfオプション、xzはJcvfオプションを指定します。
解凍して展開する場合は、xvfオプションを指定します。
それぞれvオプションは該当ファイル・ディレクトリ名の表示に使用し、指定は任意です。

gzip圧縮する(tar.gz)

構文(gzip圧縮)

tar -zcvf [圧縮ファイル名].tar.gz [対象ファイルorディレクトリ]

vの指定は任意で、圧縮ファイルを出力したい場合に指定します。

ファイルを圧縮

以下コマンドでファイルを圧縮します。

tar -zcvf archive.tar.gz sample_file1.txt

コマンドを実行すると圧縮したファイル名が出力されます。(vオプション指定時)

# 実行例
$ tar -zcvf archive.tar.gz sample_file1.txt
sample_file1.txt
# ファイルが作成されたことを確認
$ ls -l archive.tar.gz
-rw-r--r-- 1 test-user test-user 127 Jul 10 23:35 archive.tar.gz

ディレクトリを圧縮

tar -zcvf archive.tar.gz sample_dir1

コマンドを実行すると圧縮したファイル・ディレクトリ名が出力されます。(vオプション指定時)

# 実行例
$ tar -zcvf archive.tar.gz sample_dir1
sample_dir1/
sample_dir1/sample_file2.txt
sample_dir1/sample_file3.txt
sample_dir1/sample_file1.txt
# ファイルが作成されたことを確認
$ ls -l archive.tar.gz
-rw-r--r-- 1 test-user test-user 185 Jul 10 23:40 archive.tar.gz

複数(ファイル・ディレクトリ)を圧縮

tar -zcvf archive.tar.gz sample_file1.txt sample_file2.txt sample_dir1

コマンドを実行すると圧縮したファイル・ディレクトリ名が出力されます。(vオプション指定時)

# 実行例
$ tar -zcvf archive.tar.gz sample_file1.txt sample_file2.txt sample_dir1
sample_file1.txt
sample_file2.txt
sample_dir1/
sample_dir1/sample_file2.txt
sample_dir1/sample_file3.txt
sample_dir1/sample_file1.txt
# ファイルが作成されたことを確認
$ ls -l arcehive.tar.gz
-rw-r--r-- 1 test-user test-user 215 Jul 10 23:44 arcehive.tar.gz

bzip2で超圧縮する(tar.bz2)

gzipより強力な圧縮を実施します。

構文(bzip2圧縮)

tar -jcvf [圧縮ファイル名].tar.bz2 [対象ファイルorディレクトリ]

ファイルを超圧縮(bzip2)

以下コマンドでファイルを超圧縮します。

tar -jcvf archive.tar.bz2 sample_file1.txt

xzで超圧縮する(tar.xz)

gzipより強力な圧縮を実施します。

構文(xz圧縮)

tar -Jcvf [圧縮ファイル名].tar.xz [対象ファイルorディレクトリ]

ファイルを圧縮(xz)

以下コマンドでファイルを超圧縮します。

tar -Jcvf archive.tar.xz sample_file1.txt

各圧縮率の比較

以下の通り、1Gのダミーファイルでそれぞれ圧縮率を確認しました。

# ダミーファイル作成
$ dd if=/dev/zero of=sample.1G.dummy bs=1M count=1000
# 圧縮
$ tar -zcvf archive.tar.gz sample.1G.dummy
$ tar -jcvf archive.tar.bz2 sample.1G.dummy
$ tar -Jcvf archive.tar.xz sample.1G.dummy
# 圧縮率比較
$ ls -l
total 1025156
-rw-r--r-- 1 root root 841 Jun 7 12:25 archive.tar.bz2
-rw-r--r-- 1 root root 1017728 Jun 7 12:25 archive.tar.gz
-rw-r--r-- 1 root root 152716 Jun 7 12:31 archive.tar.xz
-rw-r--r-- 1 root root 1048576000 Jun 7 12:24 sample.1G.dummy

今回はbzip2が最も圧縮されましたが、 圧縮するファイルによって結果は異なると思われます。

解凍する

構文(解凍)

tar -xvf [対象ファイル]

vの指定は任意で、解凍ファイルを出力したい場合に指定してください。

ファイルを解凍

以下コマンドでファイルを解凍します。

tar -xvf archive.tar.gz

コマンドを実行すると解凍(展開)したファイル・ディレクトリ名が出力されます。(vオプション指定時)

# 実行結果
$ tar -xvf archive.tar.gz
sample_file1.txt
sample_file2.txt
sample_dir1/
sample_dir1/sample_file2.txt
sample_dir1/sample_file3.txt
sample_dir1/sample_file1.txt
# 解凍されたファイル・ディレクトリを確認
$ ls -l sample_*
-rw-r--r-- 1 test-user test-user 0 Jul 10 23:43 sample_file1.txt
-rw-r--r-- 1 test-user test-user 0 Jul 10 23:43 sample_file2.txt
sample_dir1:
total 0
-rw-r--r-- 1 test-user test-user 0 Jul 10 23:39 sample_file1.txt
-rw-r--r-- 1 test-user test-user 0 Jul 10 23:39 sample_file2.txt
-rw-r--r-- 1 test-user test-user 0 Jul 10 23:39 sample_file3.txt

上記はgzipの例ですが、bzip2,xzも同様のコマンドで解凍することができます。

オプションの意味

オプション意味
zgzip圧縮
jbzip2圧縮
Jxz圧縮
cアーカイブを作成
xアーカイブを展開(解凍)
v対象のディレクトリ・ファイル名を出力
fアーカイブファイル名を指定

余談

オプションのハイフンはあってもなくてもよいです。

tarファイルの中身をしたい場合はこちらのリンク を参照してください。


以上で本記事の解説を終わります。
よいITライフを!
スポンサーリンク
Scroll to Top