技術記事

tar コマンドの使い方

tar とは

tar コマンドとは、複数のファイルを1つにまとめた「アーカイブファイル」を作成・展開するためのコマンド。

オプション

(操作のオプション)

c:アーカイブを実行して新しいtarファイルを作成する(create)

x:アーカイブからファイルを抽出する(extract)

v:圧縮・解凍状況を表示させる(verbose)

f:アーカイブファイル名を指定する(file name)

r:アーカイブの最後にファイルを追加する(append)

t:アーカイブの内容一覧を表示する(list)

(圧縮形式のオプション)

圧縮時に圧縮形式を指定することでアーカイブと圧縮を一緒に行うことができる。解凍時も同じ。

z:アーカイブをgzip形式で圧縮・解凍する(拡張子は「.tar.gz」/「.tgz」)

j:アーカイブをbzip2形式で圧縮・解凍する(拡張子は「.tar.bz2」)

アーカイブ

圧縮をせずに、アーカイブのみを行う場合は以下のようなコマンドになる。

$ tar -cvf filename.tar <対象ディレクトリ>

展開方法

$ tar -xvf filename.tar

アーカイブ+圧縮

アーカイブと同時に圧縮も行う場合は圧縮形式のオプションをつける。

$ tar -czvf filename.tar.gz <対象ディレクトリ>
# または、
$ tar -czvf filename.tgz <対象ディレクトリ>

復元方法

$ tar -xzvf filename.tar.gz
# または、
$ tar -xzvf filename.tgz

圧縮(余談)

アーカイブと同時に圧縮する場合、アーカイブを行った後にファイルの圧縮(gzip コマンド等)が行われている。これらのコマンドについても触れておく。

gzipコマンド

# 圧縮して「file.gz」ファイルが作成する
$ gzip file

# 解凍する
$ gunzip file.gz
# または、
$ gzip -d file.gz

# 複数ファイルを圧縮して「fileA」「fileB」ファイルを作成する
# gzip fileA fileB

ここではgzipのみ。その他圧縮コマンドについては別途まとめる。(予定)

アーカイブファイルの中身を確認するとき

下記コマンドにて確認が可能

# ファイル名の一覧
$ tar -tf filename.tar.gz

# 詳細情報の一覧
$ tar -tvf filename.tar.gz

大量ファイルをアーカイブするとき

遭遇することはあまり無いかもしれないが、対象ファイルがだいたい1万を超えるとtarコマンドが正常に動作しない模様。

これはシェルがコマンドに渡せる引数の上限に起因するらしいのですが、詳しいことはわからんのでだいたい1万ファイルを超えるとエラーが発生するということ。

方法(対策)

事前にファイルリストを作成し、「file input」を使ってtar コマンドを実行することでエラーを回避することができる。

# リストの作成
$ ls <対象ディレクトリ> > filelist

# リストを使用してアーカイブ+圧縮
# tar -czvf filename.tar.gz --files-from=filelist