この記事では、Linuxの
tar コマンドを使ってディレクトリを圧縮・アーカイブする実践的な手順を解説します。単一のディレクトリだけでなく、複数ディレクトリのまとめ方や、不要なファイルを除外する(--exclude)、解凍先の指定といった現場のノウハウまで網羅しました。1. ディレクトリを丸ごと圧縮する(基本)
特定のディレクトリを丸ごと1つのアーカイブファイル(.tar.gzなど)にまとめるには、tar コマンドに czvf オプションを付けます。基本構文は以下の通りです。
# tar czvf [作成する圧縮ファイル名] [圧縮したいディレクトリ名]
例えば、「work」というディレクトリを「work.tar.gz」という名前で圧縮する場合は以下のようになります。
$ ls -l drwxrwxr-x 2 user user 4096 2月 21 10:00 work $ tar czvf work.tar.gz work/ work/ work/list.txt work/config.php
work.tar.gz が作成されます。よく使うオプション(czvf)の意味
・c (create):新しいアーカイブを作成する・
z (gzip):gzip形式で圧縮してサイズを小さくする・
v (verbose):処理しているファイル名の一覧を画面に表示する・
f (file):アーカイブファイル名を指定する(必ず最後に書く)圧縮せずにアーカイブだけする場合(.tar)
gzip圧縮をせず、単純にファイルをひとまとめにするだけでよい場合は、z オプションを外します。転送や圧縮に時間をかけたくない場合や、後から別の方法で圧縮する際に使います。# 圧縮なしのアーカイブ(.tar)を作成する $ tar cvf work.tar work/
2. 複数のディレクトリを1つにまとめて圧縮する
「appディレクトリとlogsディレクトリの両方を1つのバックアップファイルにまとめたい」という場合は、圧縮したい対象をスペース区切りで並べるだけでOKです。$ tar czvf backup.tar.gz app/ logs/
3. 特定のファイルやディレクトリを圧縮から除外する(--exclude)
現場のバックアップ作業で最もよく使われるのが、この--exclude オプションです。「ディレクトリ全体を圧縮したいけど、中にあるキャッシュ(cache)やログファイルは容量が大きいから含めたくない」という場合に活躍します。
除外したいファイル名やディレクトリ名を
--exclude=名前 という形式で指定します。オプションの位置は czvf の前後どちらでも動作しますが、可読性のため圧縮ファイル名の直後に書くのが一般的です。# workディレクトリ内の「cache」ディレクトリを除外して圧縮する $ tar czvf work.tar.gz --exclude="work/cache" work/ # 拡張子が「.log」のファイルをすべて除外して圧縮する $ tar czvf work.tar.gz --exclude="*.log" work/
4. 圧縮ファイルの中身を確認する(展開せずに一覧表示)
圧縮が完了したら、実際に展開する前に中身を確認する習慣をつけましょう。t(list)オプションを使うと、アーカイブを展開せずにファイルの一覧だけを表示できます。$ tar tzvf work.tar.gz drwxrwxr-x user/user 0 2026-02-21 10:00 work/ -rw-r--r-- user/user 1234 2026-02-21 09:00 work/list.txt -rw-r--r-- user/user 5678 2026-02-21 09:00 work/config.php
5. 圧縮したファイルを元に戻す(解凍・展開)
作成した.tar.gz ファイルを展開(解凍)して元のディレクトリに戻すには、c(作成)の代わりに x(抽出)オプションを使用します。$ tar xzvf work.tar.gz
work/ ディレクトリが復元されます。解凍先のディレクトリを指定する(-C オプション)
カレントディレクトリではなく、別の場所に展開したい場合は-C オプションで展開先を指定します。復元先が決まっている本番環境での作業や、テスト展開の際によく使います。# /tmp/restore/ ディレクトリに展開する(展開先は事前に作成しておく) $ tar xzvf work.tar.gz -C /tmp/restore/
mkdir で作成しておいてください。パーミッション(権限)を保持して展開する(-p オプション)
通常の展開では、実行ユーザーのumask 設定によってファイルのパーミッションが変わってしまう場合があります。バックアップからの復元時に元の権限をそのまま再現したい場合は、-p オプションを追加します。# パーミッションを保持したまま展開する(root権限推奨) $ sudo tar xpzvf work.tar.gz -C /var/www/
本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| ディレクトリをgzip圧縮する | tar czvf 圧縮ファイル名.tar.gz 対象ディレクトリ/ |
| 圧縮なしでアーカイブする | tar cvf アーカイブ名.tar 対象ディレクトリ/ |
| 複数ディレクトリをまとめる | tar czvf 圧縮ファイル名.tar.gz 対象1/ 対象2/ |
| 特定のファイルを除外する | tar czvf 圧縮ファイル名.tar.gz --exclude="除外名" 対象/ |
| 中身を確認する(展開しない) | tar tzvf 圧縮ファイル名.tar.gz |
| 圧縮ファイルを解凍する | tar xzvf 圧縮ファイル名.tar.gz |
| 解凍先ディレクトリを指定する | tar xzvf 圧縮ファイル名.tar.gz -C 展開先ディレクトリ/ |
| パーミッションを保持して解凍する | tar xpzvf 圧縮ファイル名.tar.gz -C 展開先/ |
ファイルの権限やコマンドのオプション間違いで、冷や汗をかいていませんか?
バックアップ時に権限(パーミッション)を保持し忘れたり、コマンドの実行ディレクトリを間違えると、「復元したのにシステムが動かない」といった致命的なトラブルに直面します。
ネットの切れ端の情報をコピペするだけでなく、現場で通用するLinuxサーバー構築の"型"を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
登録10秒/自動返信でDL/合わなければ解除3秒
<<関連記事>>
・MIMEでエンコードされたテキストを読めるように変換する
・viエディタで文字をコピーする
・ハードディスクの使用状況を調べるには
・tar.bz2ファイルの解凍・圧縮コマンド|tar.gzとの違いやオプション一覧
・tar.gz形式のファイルを解凍、展開するには
