tarとは何か?
tarは「Tape Archive」の略で、元々は磁気テープにデータをバックアップするために作られました。現在は、複数のファイルやディレクトリを1つのファイルにまとめて管理したり、転送しやすくしたりするためのLinux標準ツールとして使用されています。tar自体はファイルをまとめるだけで、圧縮は別途オプション(-z, -j, -J)で指定します。
主要な動作モード
tarは一度に1つの主要なモード(作成、抽出、リスト)で動作します。
- -c (Create): 新しいアーカイブファイルを作成します。
- -x (Extract): アーカイブファイルからファイルを抽出します。
- -t (List): アーカイブファイルの内容(リスト)を圧縮せずに確認します。
- -f (File): 操作対象のアーカイブ「ファイル」を指定します。ほとんどすべての操作で必須です。
主要オプション (Shell)
tarはオプションを組み合わせて使用します。最も重要なのは、-c、-x、-tのいずれかを選択することです。
1. 動作モード (いずれか一つを選択)
2. ファイルと圧縮の指定
3. 対象と追加機能
生成されたコマンド:
コマンドを組み合わせてみてください。
説明:
`tar` コマンドを実行します。
これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。
使用シナリオ例 (Shell)
最もよく使われる組み合わせの例です。(オプションの前の「-」は省略可能ですが、明示することをお勧めします。)
gzipでアーカイブ作成 (.tar.gz)
tar -cvzf backup.tar.gz /home/user/data
c(作成), v(詳細), z(gzip), f(ファイル) + [結果ファイル] + [対象]
gzipアーカイブの展開 (.tar.gz)
tar -xvzf backup.tar.gz
x(抽出), v(詳細), z(gzip), f(ファイル) + [対象ファイル]
アーカイブの内容をリスト表示 (.tar.gz)
tar -tvf backup.tar.gz
t(リスト), v(詳細), f(ファイル) (最新のtarは-zを自動検出)
指定したディレクトリに展開
tar -xvzf backup.tar.gz -C /opt/restore
-Cオプションでパスを指定します。
bzip2でアーカイブ作成 (.tar.bz2)
tar -cvjf archive.tar.bz2 ./docs
zの代わりにj(bzip2)オプションを使用します。
bzip2アーカイブの展開 (.tar.bz2)
tar -xvjf archive.tar.bz2
特定のファイル/ディレクトリを除外してアーカイブ
tar -cvzf app.tar.gz ./app --exclude="*.log" --exclude="node_modules"
--excludeオプションを使用します。(複数回使用可能)
インストール
tarはほとんどすべてのLinuxディストリビューション(およびmacOS)にデフォルトでインストールされています。(通常はGNU tar)。もし何らかの理由でインストールが必要な場合は、「tar」というパッケージ名でインストールできます。
デフォルトでインストール済み
別途インストールはほとんど必要ありません。`tar --version`と入力してバージョンを確認してみてください。
Debian/Ubuntu (必要な場合)
sudo apt update && sudo apt install -y tar
RHEL/CentOS/Fedora (必要な場合)
sudo dnf install -y tar
ヒントと注意事項
役立つヒント
- ハイフン(-)の省略: 古い慣例として、`tar cvf ...`のように最初のオプショングループのハイフンを省略できます。(例: `tar cvf` = `tar -cvf`) しかし、明確さのために`-`を付けることをお勧めします。
- 圧縮の自動検出: 最新の`tar`は、抽出(-x)時に`-z`、`-j`、`-J`なしでもファイル拡張子を見て圧縮を自動検出します。(例: `tar -xf archive.tar.gz`とだけ入力しても動作します。)
- 権限の保持 (-p): システムバックアップ後に復元する際、`-p`オプションを使用してファイルの権限と所有権をそのまま保持することが重要です。
- パスの問題 (-C): ファイルを現在の場所ではない別の場所に展開したい場合は、ファイルを移動させるよりも`-C /パス`オプションを使用する方がはるかに効率的です。
- 絶対パスに注意: 作成(-c)時に`/home/user`のような絶対パスでファイルをアーカイブすると、抽出(-x)時にもその絶対パスにファイルが展開されます。(最新のtarはセキュリティ上の理由で先頭の`/`を削除することもあります) 可能な限り`cd /home && tar -cvf user.tar ./user`のように相対パスでアーカイブする方が安全です。