【Ubuntu】tar の基本:圧縮・解凍・よくある事故の防ぎ方

tar の基本 - 圧縮・解凍と事故防止

この記事で解決できること

  • tar で「圧縮」「解凍」「中身確認」ができるようになります
  • .tar.gz / .tgz / .tar の違いと基本コマンドが分かります
  • ありがちな事故(変な場所に展開、上書き、パス崩れ)を避けられます

💡 結論(最短)

最初はこれだけ覚えると困りません。

  • 作る(gzip圧縮)tar -czf archive.tar.gz DIR/
  • 解凍tar -xzf archive.tar.gz
  • 中身を見るtar -tzf archive.tar.gz
  • 展開先を指定tar -xzf archive.tar.gz -C /path/to/dir

目次

  1. tar のファイル形式の整理
  2. 圧縮(アーカイブ作成)
  3. 解凍(展開)
  4. 中身を確認する
  5. よくある事故と防ぎ方
  6. その他の形式(.tar / .tar.bz2 / .tar.xz)

⚠️ 前提(対象環境)

  • OS:Ubuntu
  • シェル:bash
  • 権限:通常ユーザー(必要なら sudo を付けます)

1. tar のファイル形式の整理(よく出るやつだけ)

  • .tar:ただまとめただけ(圧縮なし)
  • .tar.gz / .tgz:tar でまとめて gzip で圧縮
  • .tar.bz2:tar でまとめて bzip2 で圧縮
  • .tar.xz:tar でまとめて xz で圧縮

💡 よく見るのは .tar.gz / .tgz です。まずはそこからでOKです。

2. 圧縮(アーカイブ作成)

2-1. ディレクトリを .tar.gz にする(基本)

$ tar -czf archive.tar.gz DIR/
  • c:create(作る)
  • z:gzip圧縮
  • f:ファイル名を指定(これがないと意図しない動きになることがあります)

2-2. 複数のファイル/ディレクトリをまとめる

$ tar -czf archive.tar.gz DIR1/ DIR2/ file.txt

3. 解凍(展開)

3-1. カレントディレクトリに展開(基本)

$ tar -xzf archive.tar.gz
  • x:extract(展開)
  • z:gzip
  • f:ファイル指定

3-2. 展開先ディレクトリを指定(事故防止で推奨)

$ tar -xzf archive.tar.gz -C /path/to/dir

💡 どこに展開されるか分からないと事故るので、慣れるまでは -C を付けるのがおすすめです。

4. 中身を確認する(展開前に必ずやると安全)

4-1. 一覧を見る(.tar.gz)

$ tar -tzf archive.tar.gz

4-2. 先頭だけ見る(長すぎる場合)

$ tar -tzf archive.tar.gz | head

5. よくある事故と防ぎ方(ここが一番大事)

❌ 事故A:変な場所に展開してしまう

原因:

  • どこで実行したか分からない
  • -C を付けていない

対策:

  1. 展開前にカレントディレクトリを確認:pwd
  2. 展開先は -C で固定する
$ pwd
$ tar -xzf archive.tar.gz -C /tmp

❌ 事故B:展開すると変なパスが出てくる(先頭に / が付いている等)

危険な例:

  • アーカイブ内のパスが /etc/... のように絶対パスになっている
  • 展開で上書き事故のリスクが上がります

対策:

  • 展開前に tar -tzf でパスを確認する
  • 不安ならまず /tmp など安全な場所に展開する
$ mkdir -p /tmp/tar-test
$ tar -xzf archive.tar.gz -C /tmp/tar-test

❌ 事故C:同名ファイルがあって上書きしてしまう

対策:

  • いきなり本番ディレクトリに展開しない
  • まず空の作業ディレクトリに展開して内容を確認する
$ mkdir -p ~/work/extract-test
$ tar -xzf archive.tar.gz -C ~/work/extract-test

⚠️ 事故D:展開したら「1個のディレクトリにまとまっていない」

アーカイブの作り方によっては、展開するとファイルが散らばることがあります。

対策(作る側の基本):

  • まとめたいディレクトリの"親"に移動してから作る
  • 例:DIR/ という1つのディレクトリ配下に収めたい
$ cd /path/to
$ tar -czf DIR.tar.gz DIR/

6. 追加:.tar / .tar.bz2 / .tar.xz のコマンド

必要になった時だけ使います。

6-1. .tar(圧縮なし)

作る:

$ tar -cf archive.tar DIR/

展開:

$ tar -xf archive.tar

6-2. .tar.bz2

展開:

$ tar -xjf archive.tar.bz2

6-3. .tar.xz

展開:

$ tar -xJf archive.tar.xz

確認(直ったかチェック)

展開後は、想定どおりの場所に展開されたかを確認します。

$ ls -la

📋 検証環境

本記事のコマンドは Ubuntu 24.04 LTS / bash 5.2 で動作確認済みです。

次に読む