Linuxのアーカイブ・圧縮入門|tarコマンドでファイルをまとめる方法を初心者向けに解説

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)【Linux入門】初心者のための基礎知識・講座 > Linuxのアーカイブ・圧縮入門|tarコマンドでファイルをまとめる方法を初心者向けに解説
「Linuxのコマンドでファイルを圧縮しようとしたら、やたらオプションが多くてどれを使えばいいのかわからない。」
「tar.gzってよく見るけど、普通のzipと何が違うの?」

WindowsやMacを使ってきた人がLinuxを学び始めたとき、「アーカイブ・圧縮」の扱いで必ずと言っていいほど戸惑います。
Windowsのように右クリックで「ZIPに圧縮」とはいかず、コマンドを打つ必要があるうえに、オプションの種類が多くて何が何だかわからなくなってしまうのです。

この記事では、Linux初心者が最初に覚えるべきtarコマンドの使い方を、「なぜLinuxはtarなのか」という疑問への答えから始めて、実際にファイルをまとめて圧縮・解凍するまでの手順をわかりやすく解説します。
「とりあえずこれだけ覚えれば実務で困らない」というコマンドのセットも紹介しますので、ぜひ手を動かしながら読んでみてください。

この記事のポイント

・Linuxでは tar でまとめてから gzip で圧縮するのが標準
・tar -czvf archive.tar.gz 対象 でまとめて圧縮できる
・tar -xzvf archive.tar.gz でカレントに解凍できる
・f オプションはファイル名の直前に書くルールがある


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

なぜLinuxでは「tar.gz」が使われるのか

Windowsを使っていると、ファイルを圧縮するときは自然に「.zip形式」を選びます。
では、なぜLinuxでは「.tar.gz」という形式がよく使われるのでしょうか。

これを理解するには、「まとめる」と「圧縮する」が別々の作業であることを知っておく必要があります。

1. tarは「まとめる」だけのツール

tarは、複数のファイルやディレクトリを1つのファイルにまとめるためのコマンドです。
正式名称は「Tape ARchive」で、もともとはテープメディアへのバックアップ用に開発されました。

tarを使っただけでは、ファイルサイズは小さくなりません。単純にひとつにまとめるだけです。

2. gzipで「圧縮する」

まとめたtarファイルをさらに小さくするために、gzip(または bzip2・xz)で圧縮します。
この組み合わせが「.tar.gz(または.tgz)」という形式です。

Windowsのzipは「まとめる+圧縮」を一度にやってくれますが、Linuxはこれを段階的に行う設計思想を持っています。
これにより、「まとめるだけ(バックアップ)」「圧縮するだけ(転送用に軽量化)」という使い分けができます。

3. 3つの形式の使い分け

形式 拡張子 特徴 よく使う場面
gzip .tar.gz / .tgz 速い・互換性が高い 日常的な圧縮・転送
bzip2 .tar.bz2 圧縮率がやや高い・遅い ストレージ節約が重要な場面
xz .tar.xz 最高圧縮率・かなり遅い 配布パッケージ等
日常的な作業ではgzip(.tar.gz)を使っておけば問題ありません。

tarコマンドの基本的な使い方

実際に手を動かしながら覚えていきましょう。
以下の例では、Ubuntu 24.04 LTSで動作確認しています。Rocky Linux / RHEL 9でも同様に使えます。

1. ファイルをまとめて圧縮する(最重要)

最も使う操作です。ディレクトリや複数ファイルをひとまとめにして圧縮します。

# ディレクトリをまとめて.tar.gzに圧縮する tar -czvf archive.tar.gz /path/to/directory/ # 複数ファイルをまとめて圧縮する tar -czvf archive.tar.gz file1.txt file2.txt file3.txt

オプションの意味を一つずつ確認しましょう。
-c:アーカイブを作成(create)
-z:gzipで圧縮(.tar.gzを作る場合に必要)
-v:詳細表示(verbose)。処理中のファイル名を表示する
-f:ファイル名を指定(file)。このオプションの直後にファイル名を書くことがルール

実際にコマンドを実行すると、以下のような出力が得られます。

$ tar -czvf backup.tar.gz /home/tomohiro/documents/ /home/tomohiro/documents/ /home/tomohiro/documents/report.txt /home/tomohiro/documents/data.csv /home/tomohiro/documents/images/ /home/tomohiro/documents/images/photo01.jpg

2. 圧縮ファイルを解凍する

受け取ったファイルや、バックアップから復元するときに使います。

# カレントディレクトリに解凍する tar -xzvf archive.tar.gz # 解凍先のディレクトリを指定する tar -xzvf archive.tar.gz -C /tmp/

-x:アーカイブを展開(extract)
-C:解凍先のディレクトリを指定する(change directory)

解凍先を指定しない場合は、コマンドを実行したディレクトリに展開されます。

3. アーカイブの中身を確認する(解凍せずに)

ファイルを解凍する前に「何が入っているか」を確認したいときに使います。

# アーカイブの中身を一覧表示する(解凍しない) tar -tzvf archive.tar.gz

-t:ファイルの一覧を表示(list)

これを使うと、解凍前に「このtarファイルには何が入っているか」を確認できます。

初心者がよくはまるエラーと対処法

tarコマンドを使い始めた人が必ずといっていいほど直面するエラーを紹介します。

【エラー1】「f オプションのあとにファイル名がない」

最も多いミスがこれです。

# NG例:-fzvfのように並べると動かない tar -czfv backup.tar.gz /home/tomohiro/ # エラーの例 tar: backup.tar.gz: Cannot stat: No such file or directory tar: /home/tomohiro/: Cannot stat: No such file or directory # OK例:-f の直後にファイル名 tar -czvf backup.tar.gz /home/tomohiro/

-f オプションは必ず「ファイル名の直前」に書くというルールがあります。
`tar -czvf` という順番を丸ごと覚えてしまうのが早道です。

【エラー2】解凍したら大量のファイルがカレントに散らばった

解凍先のディレクトリを作らずに展開すると、ファイルが全部カレントに広がってしまいます。

# 解凍前に中身を確認する tar -tzvf archive.tar.gz # 解凍先を事前に作っておく mkdir /tmp/extracted tar -xzvf archive.tar.gz -C /tmp/extracted/

解凍の前に `-t` で中身を確認し、必要であれば解凍先のディレクトリを先に作っておきましょう。

【エラー3】「Permission denied」で解凍できない

指定した解凍先ディレクトリに書き込み権限がない場合に発生します。

# エラーの例 tar: /var/backup/: Cannot open: Permission denied # 対処1:書き込みできる場所に解凍する tar -xzvf archive.tar.gz -C /home/tomohiro/ # 対処2:sudo を使う(注意して使うこと) sudo tar -xzvf archive.tar.gz -C /var/backup/

実務でよく使う応用パターン

1. バックアップのファイル名に日付を入れる

定期バックアップでよく使われる方法です。

# ファイル名に今日の日付を入れてバックアップ tar -czvf backup_$(date +%Y%m%d).tar.gz /home/tomohiro/ # 例:2026年4月30日に実行すると以下のファイルが生成される # backup_20260430.tar.gz

2. 特定のファイルやディレクトリを除外する

ログファイルや一時ファイルをバックアップ対象から外したいときに使います。

# /var/log/ を除外してバックアップ tar -czvf backup.tar.gz /var/ --exclude='/var/log/' # 複数のファイルや拡張子を除外する tar -czvf backup.tar.gz /home/tomohiro/ --exclude='*.log' --exclude='*.tmp'

3. bzip2形式で圧縮する(.tar.bz2)

gzipより圧縮率を高めたい場合に使います。-z の代わりに -j を指定します。

# bzip2で圧縮する tar -cjvf archive.tar.bz2 /path/to/directory/ # bzip2アーカイブを解凍する tar -xjvf archive.tar.bz2

4. 圧縮せずにまとめるだけ(バックアップ目的)

圧縮処理を省いて速度を優先したい場合や、すでに圧縮済みのファイルをまとめる場合に使います。

# 圧縮なし(-z / -j なし)でまとめるだけ tar -cvf archive.tar /path/to/directory/ # 解凍する場合 tar -xvf archive.tar

本記事のまとめ

Linuxのアーカイブ・圧縮の基本を整理しておきます。
やりたいこと コマンド
ディレクトリを.tar.gzに圧縮 tar -czvf archive.tar.gz /path/to/dir/
.tar.gzを解凍する tar -xzvf archive.tar.gz
解凍先ディレクトリを指定 tar -xzvf archive.tar.gz -C /tmp/
アーカイブの中身を確認(解凍なし) tar -tzvf archive.tar.gz
bzip2形式で圧縮 tar -cjvf archive.tar.bz2 /path/to/dir/
特定ファイルを除外して圧縮 tar -czvf archive.tar.gz /path/ --exclude='*.log'
日付入りファイル名でバックアップ tar -czvf backup_$(date +%Y%m%d).tar.gz /path/
tarコマンドは「-czvf のセットで覚える」「f の直後にファイル名を書く」この2点を押さえれば、日常的な作業はほとんどカバーできます。

次のステップとして、rsyncコマンドを使ったリモートバックアップや、cronによる自動バックアップの設定に進むと、より実務的なスキルが身につきます。

Linuxをもっと深く学びたい方へ

この記事はLinux入門シリーズの一部です。tarを使いこなした後は、以下の記事も合わせて読むと理解が深まります。
ファイル検索findコマンドでファイルを検索する方法
文字列検索grepコマンドで文字列を検索する方法
ファイル同期・バックアップrsyncコマンドでファイルを同期・転送する方法
定期実行の設定crontabコマンドの設定と書き方
ネットワーク確認ssコマンドでソケット情報を確認する方法
シェルスクリプト引数処理getoptsコマンドでbashスクリプトの引数を処理する方法
ストレージ管理blkidコマンドでブロックデバイスのUUIDとラベルを確認する方法
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、
無料の「Linuxサーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
コマンド学習の先にある「サーバーをゼロから組み立てる力」を、初心者が迷わない順序で学べる一冊です。
無料マニュアルを受け取る >>

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

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

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

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

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

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

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

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

この記事を書いた人

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

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

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