本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「tar」コマンドの応用編です。
本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、アーカイブファイルを作成/展開するための「tar」コマンドの応用編を解説します。
「tar」は、複数のファイルを1つにまとめた“アーカイブファイル”を作成/展開するコマンドです。
tar -czvf アーカイブ.tgz 対象ファイル
(ファイルのアーカイブを作成して、gzip形式で圧縮する)
tar -xzvf アーカイブ.tgz
(gzip形式で圧縮されたアーカイブを展開する)
tar -tf アーカイブファイル
(アーカイブファイルの内容を確認する)
※tarコマンドが「-z」オプション(圧縮オプション)に対応していない場合は、「-z」を使用せず、別途「gzip」コマンドや「bzip2」コマンドを使用する(本連載第39回参照)
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 | 処理したファイルを詳しく出力する |
アーカイブに含まれているファイルの内容を知りたい場合は、「-t」オプションを使います。「tar -tf アーカイブファイル名」でファイルのリストが表示されます。さらに、詳細を表示する「-v」オプションを追加して「tar -tvf アーカイブファイル名」とするとタイムスタンプやファイルサイズなど含めた内容が表示されます(画面1)。
tar -tf data0809.tgz
(アーカイブファイル「data0809.tgz」の内容を表示する)
tar -tvf data0809.tgz
(アーカイブファイル「data0809.tgz」の内容を詳細も含めて表示する)
アーカイブファイルから実行ファイルだけを取り出したい、または、ドキュメントだけを取り出したいなど、ファイルを指定して取り出したい場合は「-x」オプションを使用して「tar -xvzf アーカイブ.tgz」として、後ろに取り出したいファイル名を指定します。
例えば、先ほどの「data0809.tgz」から「list*.txt」を取り出す場合は、次のように指定します(画面2)。
tar -xvzf data0809.tgz "list*.txt"
(「data0809.tgz」から「list*.txt」を取り出す)
gzip形式で圧縮されたアーカイブファイルは、拡張子に「tar.gz」または「tgz」、bzip2形式の場合は「tar.bz2」を使う習慣になっていますが、「file」コマンドで圧縮形式を確認することもできます。
gzip形式で圧縮されたアーカイブファイルをgzipではなく、bzip2で再圧縮する場合は、いったん「gunzip」コマンドで伸張し(圧縮を元に戻す)、「bzip2」コマンドで圧縮します。これで、tarコマンドで「-j」オプションでアーカイブを作成したのと同等の結果になります(「-j」は、アーカイブをbzip2形式で圧縮したり、bzip2形式で圧縮されたアーカイブを展開したりするオプション)。
file data0809.tgz
(ファイルの形式を調べる)
gunzip data0809.tgz
(gzipで圧縮されているアーカイブを伸張する。「data0809.tgz」が「data0809.tar」になる)
bzip2 data0809.tar
(圧縮されていないアーカイブをbzip2形式で圧縮する。「data0809.tar」が「data0809.tar.bz2」になる)
以下の画面3では、「ls -l」とfileコマンドでファイルを確認し、gunzipコマンドで展開、あらためて「ls -l」とfileコマンドで確認後、bzip2コマンドで再圧縮して、再度「ls -l」とfileコマンドで確認しています。
PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。
Copyright © ITmedia, Inc. All Rights Reserved.