目次
01. まとめる
・まとめた複数のファイルのtarを展開する(tar xvf)
・ディレクトリ(内部にファイルあり)をまとめる(tar cvf)
・まとめたディレクトリ(内部にファイルあり)を展開する(tar xvf)
02. 圧縮する
03. まとめる+圧縮する
04. 補足
まとめる
tarは複数のファイルやディレクトリを1つのアーカイブにまとめるコマンドです。
tarだけでは基本的に圧縮されません。
gzipやbzip2、xzなどと組み合わせることで圧縮できます。
tarは、Windowsでも7-Zip等で使用できます。
複数のファイルをまとめる(tar cvf)
$ ls -lrt
-rw-rw-r-- 1 test test 0 1月 20 22:00 test1.txt
-rw-rw-r-- 1 test test 0 1月 20 22:12 test2.txt
$ tar cvf tar-test.tar test*.txt
test1.txt
test2.txt
$ ls -lrt
-rw-rw-r-- 1 test test 0 1月 20 22:00 test1.txt
-rw-rw-r-- 1 test test 0 1月 20 22:12 test2.txt
-rw-rw-r-- 1 test test 10240 1月 20 23:22 tar-test.tar
tarのオプションのcはcreate、vは処理内容の出力、fの直後には作成するtarファイル名を指定します。
vは、処理対象を表示するだけなので、ログを減らしたい場合に省略できます。
まとめた複数のファイルのtarを展開する(tar xvf)
$ tar xvf tar-test.tar
test1.txt
test2.txt
$ ls -lrt
-rw-rw-r-- 1 test test 0 1月 20 22:00 test1.txt
-rw-rw-r-- 1 test test 0 1月 20 22:12 test2.txt
-rw-rw-r-- 1 test test 10240 1月 20 23:22 tar-test.tar
tarのオプションのxはextract(展開)、vは処理内容の出力、fはファイル名を指定します。
展開先に同じ名前のファイルがある場合、上書きされる可能性があります。
必要に応じて別ディレクトリで展開して確認します。
必要に応じて別ディレクトリで展開して確認します。
現在のGNUtarは拡張子を見て自動で圧縮形式を判断するため、展開時に-zを付けなくてもtar xvf file.tar.gzで動作します。
展開前に中身を見るコマンド(tar -t)
$ tar -tvf tar-test.tar
$ tar -tzvf test.tar.gz
-tはlistの意味で、アーカイブの中身を表示します。
ディレクトリ(内部にファイルあり)をまとめる(tar cvf)
$ tar cvf tar-dir1.tar dir1
dir1/
dir1/test2.txt
dir1/test1.txt
$ ls -lrt
drwxrwxr-x 2 test test 40 1月 20 23:36 dir1
-rw-rw-r-- 1 test test 10240 1月 20 23:39 tar-dir1.tar
tarのオプションのcはcreate、vは処理内容の出力、fはファイル名を指定します。
コマンドを実行するとディレクトリ名とその中にあるファイルが表示されます。
まとめたディレクトリ(内部にファイルあり)を展開する(tar xvf)
$ ls -lrt
-rw-rw-r-- 1 test test 10240 1月 20 23:39 tar-dir1.tar
$ tar xvf tar-dir1.tar
dir1/
dir1/test2.txt
dir1/test1.txt
$ ls -lrt
drwxrwxr-x 2 test test 40 1月 20 23:36 dir1
-rw-rw-r-- 1 test test 10240 1月 20 23:39 tar-dir1.tar
tarのオプションのxはextract(展開)、vは処理内容の出力、fはファイル名を指定します。
展開先を指定する(tar -C)
$ tar -xvf tar-test.tar -C /tmp
$ tar -zxvf test.tar.gz -C /tmp
-C は展開先ディレクトリを指定するオプションです。
圧縮する
Windowsでも7-Zip等でtarを圧縮/展開できます。
ファイルを圧縮する(gzip)
$ ls -lrt
-rw-rw-r-- 1 test test 6 1月 20 23:36 test1.txt
$ gzip test1.txt
$ ls -lrt
-rw-rw-r-- 1 test test 34 1月 20 23:36 test1.txt.gz
圧縮完了後は、ファイル名の末尾に.gzが追加されます。
元のtest1.txtは削除され、test1.txt.gzが作成されます。
元のファイルを残す場合は以下のようにします。
$ gzip -c test1.txt > test1.txt.gz
gzファイルを展開する(gzip -d)
$ ls -lrt
-rw-rw-r-- 1 test test 34 1月 20 23:36 test1.txt.gz
$ gzip -d test1.txt.gz
$ ls -lrt
-rw-rw-r-- 1 test test 6 1月 20 23:36 test1.txt
指定したファイルが展開されます。
圧縮ファイルを残したままにする場合は、gzip -dc test1.txt.gz > test2.txtにします。
-dcの-dは展開、-cは標準出力への出力です。
まとめる+圧縮する
gzipで圧縮したtarを作成する(tar zcvf)
$ ls -lrt
drwxrwxr-x 2 test test 40 1月 20 23:36 dir1
$ tar zcvf test.tar.gz dir1
dir1/
dir1/test2.txt
dir1/test1.txt
$ ls -lrt
drwxrwxr-x 2 test test 40 1月 20 23:36 dir1
-rw-rw-r-- 1 test test 167 1月 20 23:59 test.tar.gz
拡張子はtar.gzまたは.tgzです。
展開は、tar -zxvf ファイル名.tar.gzです。
tarのオプションのzはgzip形式です。
代表的な圧縮形式の作成と展開
| 形式 | 作成 | 展開 |
|---|---|---|
| .tar | tar -cvf file.tar dir | tar -xvf file.tar |
| .tar.gz | tar -zcvf file.tar.gz dir | tar -zxvf file.tar.gz |
| .tgz | tar -zcvf file.tgz dir | tar -zxvf file.tgz |
| .tar.bz2 | tar -jcvf file.tar.bz2 dir | tar -jxvf file.tar.bz2 |
| .tar.xz | tar -Jcvf file.tar.xz dir | tar -Jxvf file.tar.xz |
実際の処理例
# 作成
tar -zcvf backup.tar.gz dir1
# 中身確認
tar -tzvf backup.tar.gz
# 展開
tar -zxvf backup.tar.gz
# /tmp に展開
tar -zxvf backup.tar.gz -C /tmp
# 元ファイルを残して gzip 圧縮
gzip -c test1.txt > test1.txt.gz
関連の記事
