【Ubuntu】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
⚠️ 前提(対象環境)
- 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:gzipf:ファイル指定
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を付けていない
対策:
- 展開前にカレントディレクトリを確認:
pwd - 展開先は
-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 で動作確認済みです。