連載
» 2016年08月17日 05時00分 UPDATE

Linux基本コマンドTips(40):【 tar 】コマンド――アーカイブファイルを作成する/展開する

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「tar」コマンドです。

[西村めぐみ,@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、アーカイブファイルを作成/展開するための「tar」コマンドを解説します。

tarコマンドとは?

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

アーカイブとは?

 「アーカイブ(archive)」は「書庫」という意味で、プログラムのソースコードなど、複数の関連するファイル群をまとめて保管したり、配布したりする際に使用します。

 細かいファイルが多数ある場合は、1つのファイルにまとめるだけでディスクスペースを節約できますが、さらにファイルを小さくしたい場合は「gzip」コマンドで圧縮するのが一般的です。現在、Linux環境で広く使われているtarコマンドの場合、標準でgzip形式による圧縮に対応しています。

 Windowsなどでも広く使われているZIP形式は、ファイルの圧縮と複数のファイルをまとめるアーカイブを同時に行いますが、tarコマンドは“アーカイブだけ行う”のが基本です。古くは「ar」というコマンドもありましたが、テープデバイスに対応したtarコマンドが誕生しました。


tarコマンドの書式

tar -czvf アーカイブ.tgz 対象ファイル

(ファイルのアーカイブを作成しgzip形式で圧縮する)

tar -xzvf アーカイブ.tgz

(gzipで圧縮されたアーカイブを展開する)

※tarコマンドが「-z」オプション(圧縮オプション)に対応していない場合は、「-z」を使用せず、別途「gzip」コマンドや「bzip2」コマンドを使用する(本連載第39回参照



tarコマンドの主なオプション

 tarコマンドの主なオプションは次の通りです。

●操作オプション
短いオプション 長いオプション 意味
-c --create 新しいアーカイブを作成する
-r --append アーカイブの最後にファイルを追加する
-A --catenate,
--concatenate
アーカイブにtarアーカイブを追加する
-u --update アーカイブのファイルを更新する(アーカイブ内の同名ファイルより新しいものだけを追加する)
-d --diff,
--compare
アーカイブとファイルシステムを比較する
--delete アーカイブから削除する
-t --list アーカイブの内容の一覧を表示する
-x --extract,--get アーカイブからファイルを抽出する

●共通オプション
短いオプション 長いオプション 意味
-f アーカイブ --file=アーカイブ アーカイブファイル名を指定する
-C ディレクトリ --directory=ディレクトリ カレントディレクトリを指定したディレクトリに変更してから実行する
--recursion ディレクトリを再帰的に処理する(デフォルト)
-h --dereference シンボリックリンクをたどる
--hard-dereference ハードリンクをたどる
-N 日付 --newer=日付,
--after-date=日付
指定した日付より新しいファイルだけを保存する(日付の代わりにファイルを指定することも可能。この場合、指定したファイルより新しいファイルだけが対象になる)
-P --absolute-names ファイル名から先頭の「/」を取り除かない
-p --preserve-permissions 所有者などのファイル属性を保持する(スーパーユーザーのデフォルト)
-k --keep-old-files 既存のファイルを置き換えない
--keep-newer-files アーカイブより新しい場合は既存ファイルを置き換えない
--overwrite 既存のファイルを上書きする
-U --unlink-first ファイルを上書きする前に削除する
--recursive-unlink ディレクトリを展開する際、いったん既存ディレクトリを空にする
--suffix=接尾辞 バックアップの接尾辞を指定する(環境変数「SIMPLE_BACKUP_SUFFIX」より優先する。どちらも指定されていない場合は「~」を使用する)
--remove-files アーカイブへ追加した後にファイルを削除する
-T ファイル --files-from=ファイル 対象とするファイル名を指定したファイルから読み込む
--unquote 「-T」で読み込んだファイル名の引用符を外す(デフォルト)
-X ファイル --exclude-from=ファイル 除外するファイル名をファイルから読み込む
-z --gzip アーカイブをgzip形式で圧縮する、gzip形式で圧縮されたアーカイブを展開する(拡張子は「.tar.gz」または「.tgz」)
-j --bzip2 アーカイブをbzip2形式で圧縮する、bzip2形式で圧縮されたアーカイブを展開する(拡張子は.tar.bz2)
-Z --compress,
--uncompress
アーカイブをcompress形式で圧縮する、compress形式で圧縮されたアーカイブを展開する(拡張子は「.tar.Z」)
-W --verify アーカイブを書き出した後に検証する
-v --verbose 処理したファイルを詳しく出力する


アーカイブファイルを作成する

 アーカイブファイルを作成するには「-c」オプション、アーカイブをgzip形式で圧縮するには「-z」オプションを指定し、「-f」オプションでアーカイブファイル名を指定します。

 対象ファイルにサブディレクトリが含まれている場合は、デフォルトでディレクトリ内のファイルもアーカイブの対象になります。「-z」オプションを併用すると、処理されたファイル、つまり、アーカイブに格納したファイル名が確認できます。

 アーカイブファイルの拡張子には、通常「.tar」を使います。gzip形式で圧縮する場合は、「.tar.gz」または「.tgz」にします。

 ここまでの説明をまとめると、実行時の指定は「tar -czvf アーカイブ.tgz 対象ファイル」となります(画面1)。

コマンド実行例

tar -czvf data0809.tgz *

(アーカイブファイル「data0809.tgz」を作成する)


画面1 画面1 tarコマンドで「Document/works」ディレクトリの全てのファイルを「data0809.tgz」にアーカイブしているところ


アーカイブファイルを展開する

 アーカイブファイルからファイルを取り出すことを、「展開」あるいは「抽出」と呼びます。

 展開には、先ほどの「-c」オプションの代わりに「-x」オプションを使います(画面2)。また、「-z」はgzip形式用のオプションなので、圧縮されていない場合は「-z」オプションなしで、bzip2形式(拡張子は「.tar.bz2」)の場合は「-j」オプションを使用します。

コマンド実行例

tar -xzvf data0809.tgz

(アーカイブファイル「data0809.tgz」を展開する)


画面2 画面2 tarコマンドでアーカイブファイル「data0809.tgz」を展開して、中のファイルを抽出しているところ


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。