29
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

tar コマンドで圧縮・解凍 まとめ

Last updated at Posted at 2019-05-29

1. tar コマンドとは?

tar複数のファイルやディレクトリを1つのアーカイブファイルにまとめるコマンドです。元々は「テープアーカイブ (tape archive)」の略ですが、今ではバックアップやデプロイ用途で広く使われています。

圧縮処理自体は gzipbzip2 などと組み合わせて行います。


2. 基本的な構文

tar [オプション] [アーカイブファイル名] [対象ファイルやディレクトリ]

よく使う主なオプション:

オプション 意味
c アーカイブの作成 (create)
x 展開・解凍 (extract)
t 内容の確認 (list)
v 処理中のファイルを表示 (verbose)
f ファイル名を指定 (file)
z gzip で圧縮・解凍
j bzip2 で圧縮・解凍
J xz で圧縮・解凍

3. 【圧縮】tarでよく使う圧縮パターン

🔹 ① ディレクトリを .tar にまとめる(圧縮なし)

tar cvf archive.tar mydir/
  • c: 作成
  • v: ファイル名表示
  • f: ファイル名指定
  • mydir/: 対象ディレクトリ

🔹 ② gzip で圧縮(.tar.gz / .tgz

tar czvf archive.tar.gz mydir/
# または
tar czvf archive.tgz mydir/
  • z: gzip 圧縮
  • ファイルサイズを抑えたいときの定番。

🔹 ③ bzip2 で圧縮(.tar.bz2

tar cjvf archive.tar.bz2 mydir/
  • j: bzip2 圧縮(gzipより圧縮率高いが遅め)

🔹 ④ xz で圧縮(.tar.xz

tar cJvf archive.tar.xz mydir/
  • J: xz 圧縮(bzip2よりさらに圧縮率が高い)

🔹 ⑤ 複数のファイルをまとめて圧縮

tar czvf project.tar.gz file1.txt file2.txt dir1/

🔹 ⑥ ワイルドカードで特定拡張子を圧縮

tar czvf logs.tar.gz *.log

🔹 ⑦ 圧縮対象から特定ファイルを除外

tar czvf archive.tar.gz mydir/ --exclude='mydir/tmp/*'

4. 【解凍】よく使う展開パターン

🔹 ① .tar ファイルの展開

tar xvf archive.tar

🔹 ② .tar.gz / .tgz の展開

tar xzvf archive.tar.gz
# または
tar xzvf archive.tgz

🔹 ③ .tar.bz2 の展開

tar xjvf archive.tar.bz2

🔹 ④ .tar.xz の展開

tar xJvf archive.tar.xz

🔹 ⑤ 特定のファイルだけを展開

tar xzvf archive.tar.gz path/to/file.txt

🔹 ⑥ 任意のディレクトリに展開する

tar xzvf archive.tar.gz -C /path/to/dest/

5. 応用テクニック

🔸 アーカイブ内の内容を一覧表示するだけ

tar tvf archive.tar.gz

🔸 特定の拡張子だけを抽出

tar xzvf archive.tar.gz --wildcards '*.log'

🔸 権限やタイムスタンプを保持せずに展開したい(--no-same-permissions)

tar xzvf archive.tar.gz --no-same-permissions

6. よくあるミスとその対策

ミス内容 対策・解説
tar: Error is not recoverable: exiting now f オプションの順番に注意。-cvf のように f は最後に。
展開先が汚れる -C /path/to/dest を使って展開先を指定しよう
--exclude が効かない パスは相対パス or 絶対パスで正しく指定する必要あり

7. まとめ

tar はオプションの組み合わせが多く、最初は混乱しがちですが、使うパターンはほぼ決まっているので、以下だけでも覚えておけば十分現場で通用します:

用途 コマンド例
圧縮(gzip) tar czvf xxx.tar.gz target/
解凍(gzip) tar xzvf xxx.tar.gz
中身確認 tar tvf xxx.tar.gz
展開先指定 tar xzvf xxx.tar.gz -C /tmp

📌 補足:覚え方のコツ

  • c → create(作成)
  • x → extract(展開)
  • t → table(一覧表示)
  • z → gzip
  • j → bzip2
  • J → xz
  • f → file(ファイル名指定)
  • v → verbose(進捗表示)

🎁 おまけ:ワンライナーで tar + ssh

tar czf - ./project | ssh user@host "tar xzf - -C /var/www/html"

ローカルからリモートにファイルを圧縮・送信・展開を一発で!


✍️ おわりに

現場でも tarバックアップ・デプロイ・ログ収集などのあらゆる場面で使われるコマンドです。最低限のパターンを覚えておくと、作業効率が一気に上がります!

この投稿が、Linux 初心者やインフラに不慣れな開発者の方の助けになれば嬉しいです🙌

29
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?