tarコマンドとは
「tar」は、複数のファイルを1つにまとめたアーカイブファイルを作成/展開するコマンドである。また、作成・展開する時に圧縮・解凍を行うこともできる。
オプションが多いため覚えるのが大変だが、単語の意味を覚えれば記憶に残りやすい。
アーカイブとは
アーカイブとは複数のファイルを一つにまとめることである。
オプション
・操作オプション(-c
と-x
は対で覚える)
オプション | 英語(長いオプション) | 意味 |
---|---|---|
-c | --create | アーカイブを作成する |
-x | --extract | アーカイブを展開する |
-t | --list | 一覧表示する |
・共通オプション(圧縮形式)
オプション | 英語(長いオプション) | 意味 |
---|---|---|
-z | --gzip | gzip形式 |
-j | --bzip2 | bzip2形式 |
-J | --xz | xz形式 |
・共通オプション(その他)
オプション | 英語(長いオプション) | 意味 |
---|---|---|
-v | --verbose | 処理したファイルを詳しく出力する |
-f | --file | アーカイブファイル名を指定する |
##事前準備
アーカイブするためのファイルを作成する
$ mkdir filearchive
$ cd filearchive
$ touch test_{1..5}.txt
$ ls test*
test_1.txt test_2.txt test_3.txt test_4.txt test_5.txt
複数ファイルをアーカイブする
$ tar cvf ファイル名 アーカイブ対象ディレクトリ
//拡張子は.tarにすることが慣例
$ tar cvf filearchive.tar filearchive
filearchive/
filearchive/test_1.txt
filearchive/test_2.txt
filearchive/test_3.txt
filearchive/test_4.txt
filearchive/test_5.txt
$ ll //作成されたかの確認
drwxr-xr-x 2 root root 96 11月 13 15:55 filearchive
-rw-r--r-- 1 root root 20480 11月 13 16:01 filearchive.tar
###アーカイブファイルを展開する
$ tar xvf tarファイル名
//解凍されたか確認のために元のディレクトリを削除
$ rm -rf filearchive/
$ tar xvf filearchive.tar
filearchive/
filearchive/test_1.txt
filearchive/test_2.txt
filearchive/test_3.txt
filearchive/test_4.txt
filearchive/test_5.txt
//展開されたかの確認
$ ll
drwxr-xr-x 2 root root 96 11月 13 15:55 filearchive
圧縮してアーカイブ、解凍して展開する
tarコマンド
は複数のファイルをアーカイブするものであり、圧縮はされているわけではない。しかし、圧縮形のオプションを使うことでアーカイブと圧縮を同時(連続して)に行うことが可能である。
###アーカイブし、gzipで圧縮する(-z)
$ tar cvzf ファイル名 圧縮対象ディレクトリ
//拡張子は.tar.gzにすることが慣例
$ tar cvzf filearchive.tar.gz filearchive/
filearchive/
filearchive/test_1.txt
filearchive/test_2.txt
filearchive/test_3.txt
filearchive/test_4.txt
filearchive/test_5.txt
$ ll //作成、圧縮されたかの確認
drwxr-xr-x 2 root root 96 11月 13 15:55 filearchive
-rw-r--r-- 1 root root 270 11月 13 16:24 filearchive.tar.gz
###gzipを解凍して展開する(-z)
$ tar xvzf ファイル名
//解凍されたか確認のために元のディレクトリを削除
$ rm -rf filearchive/
$ tar xvzf filearchive.tar.gz
filearchive/
filearchive/test_1.txt
filearchive/test_2.txt
filearchive/test_3.txt
filearchive/test_4.txt
filearchive/test_5.txt
$ ll //解凍、展開されたかの確認
drwxr-xr-x 2 root root 96 11月 13 15:55 filearchive
-rw-r--r-- 1 root root 270 11月 13 16:24 filearchive.tar.gz
###bzip2(-j)、xz(J)も同様
####アーカイブして圧縮
//bzip2
$ tar cvjf ファイル名 圧縮対象ディレクトリ
$ tar cvjf filearchive.tar.bz2 filearchive/
//xz
$ tar cvJf ファイル名 圧縮対象ディレクトリ
$ tar cvJf filearchive.tar.xz filearchive/
####解凍して展開
//bzip2
$ tar xvjf ファイル名
$ tar xvjf filearchive.tar.bz2
//xz
$ tar xvJf ファイル名 圧縮対象ディレクトリ
$ tar xvJf filearchive.tar.xz
##展開せずに中身を確認
-t
オプションで展開せずに中身を確認することが出来る。
//gzip
tar tvzf filearchive.tar.gz
//bzip2
tar tvjf filearchive.tar.bz2
//xz
tar tvJf filearchive.tar.xz
##圧縮形式の確認
たとえ拡張子がtar.gz
となっていても本当にgzip
形式で圧縮しているか分からないため、圧縮形式を確認するコマンドを知っていた方が良いかもしれない。
$ file ファイル名
$ file filearchive.tar.gz
filearchive.tar.gz: gzip compressed data, from Unix, last modified: Sat Nov 13 16:46:36 2021
$ file filearchive.tar.bz2
filearchive.tar.bz2: bzip2 compressed data, block size = 900k
$ file filearchive.tar.xz
filearchive.tar.xz: XZ compressed data
参考記事
https://atmarkit.itmedia.co.jp/ait/articles/1608/15/news015.html
http://hydrocul.github.io/wiki/commands/tar.html