tarコマンドでディレクトリを圧縮(アーカイブ)する方法|除外設定も


図解60p「Linuxサーバー構築入門マニュアル」無料
登録10秒/自動返信でDL/合わなければ解除3秒
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips, ディレクトリ・ファイル操作 > tarコマンドでディレクトリを圧縮(アーカイブ)する方法|除外設定も
tarコマンドでディレクトリを圧縮(アーカイブ)できると、サーバーの引っ越しやバックアップで、ディレクトリを丸ごと圧縮して保存することができるようになります。運用保守の現場では、数十万個のファイルがあるディレクトリを1つのファイルにまとめる(アーカイブする)作業が頻繁に発生します。

この記事では、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/

※一般ユーザーで実行すると所有者情報が保持されない場合があります。root権限での実行を推奨します。

本記事のまとめ

やりたいこと コマンド
ディレクトリを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日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。



無料プレゼント
図解60p「Linuxサーバー構築入門マニュアル」
独学で詰まる前に、“型(手順書)”で最初の環境構築をサクッと終わらせましょう。
登録10秒/自動返信でDL/合わなければ解除3秒
無料で受け取る ※メールアドレスだけでもOK(必須項目は最小限)

宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

<<関連記事>>
・MIMEでエンコードされたテキストを読めるように変換する
・viエディタで文字をコピーする
・ハードディスクの使用状況を調べるには
・tar.bz2ファイルの解凍・圧縮コマンド|tar.gzとの違いやオプション一覧
・tar.gz形式のファイルを解凍、展開するには

図解60pのLinux無料マニュアル
登録10秒/自動返信でDL
無料で受け取る