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


この記事の監修:宮崎智広(Linux教育歴15年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips, ディレクトリ・ファイル操作 > tarコマンドでディレクトリを圧縮(アーカイブ)する方法|除外設定も
tarコマンドでディレクトリを圧縮(アーカイブ)できると、サーバーの引っ越しやバックアップで、ディレクトリを丸ごと圧縮して保存することができるようになります。運用保守の現場では、数十万個のファイルがあるディレクトリを1つのファイルにまとめる(アーカイブする)作業が頻繁に発生します。

この記事では、Linuxの tar コマンドを使ってディレクトリを圧縮・アーカイブする実践的な手順を解説します。単一のディレクトリだけでなく、複数ディレクトリのまとめ方や、不要なファイルを除外する(--exclude)、解凍先の指定といった現場のノウハウまで網羅しました。

【この記事でわかること】
tar czvf コマンドでディレクトリを丸ごとgzip圧縮できる
--exclude オプションでキャッシュやログファイルを除外できる
・複数ディレクトリをスペース区切りで指定すれば1つにまとめられる
tar tzvf で展開せずに中身を確認する習慣が現場の鉄則
・解凍先を変えたい場合は -C、権限を保持する場合は -p オプションを使う

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

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権限での実行を推奨します。

tar.bz2ファイルを解凍・展開する方法

.tar.bz2形式はbzip2で圧縮されたtarアーカイブです。展開するには -j オプションを使います。

# .tar.bz2を展開する基本コマンド(カレントディレクトリに展開) tar -jxvf archive.tar.bz2 # 展開先ディレクトリを指定する tar -jxvf archive.tar.bz2 -C /tmp/ # 展開せずに中身を確認する tar -jtvf archive.tar.bz2

オプションの意味

-j:bzip2形式の圧縮/解凍を指定
-x:アーカイブから展開する
-v:展開中のファイル名を表示する
-f:アーカイブファイル名を指定する(直後にファイル名を書く)
-C:展開先ディレクトリを指定する
-t:展開せずに中身を一覧表示する

実行例(.tar.bz2の展開)

[ec2-user@server ~]$ tar -jxvf sample.tar.bz2 sample/ sample/README.txt sample/config.conf sample/scripts/run.sh [ec2-user@server ~]$ ls sample/ README.txt config.conf scripts/

.tar.gz と .tar.bz2 の違い

.tar.gz(-z):gzip圧縮。圧縮・解凍が速い。一般的なLinuxパッケージ配布に多い
.tar.bz2(-j):bzip2圧縮。圧縮率が高いがやや遅い。カーネルソースやソフトウェアの配布に使われることが多い

本記事のまとめ

やりたいこと コマンド
ディレクトリを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 展開先/

tarコマンドだけでなく、Linuxサーバーのバックアップ・運用を安全に行うための「型」を身につけたいですか?

圧縮・除外・展開の手順を正しく理解することは、本番サーバー運用での事故を防ぐ第一歩です。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。


無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録

宮崎 智広

この記事を書いた人

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

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

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。