tar コマンドのオプション一覧と解凍・圧縮のやり方を、目的別にコピペで使える形でまとめました。「圧縮したい(tar czf)」「解凍したい(tar xzf)」「中身を確認したい(tar tzf)」をまず一覧表で確認できます。「解凍でエラーが出る」場合の対処法も後半でまとめています。
tar.gz / tar.bz2 / tar.xz の違いや、よく使うオプションの意味まで、この記事1本で完結します。
| 用途 | コマンド |
|---|---|
| 圧縮する | tar -czf archive.tar.gz directory/ |
| 解凍する | tar -xzf archive.tar.gz |
| 中身を見る | tar -tzf archive.tar.gz |
| 展開先を変える | tar -xzf archive.tar.gz -C /path/to/destination |
| 一部だけ取り出す | tar -xzf archive.tar.gz path/in/archive/file.txt |
Windows・macOSを含めたGUIツールでの解凍手順はtar.gz/tgzの解凍方法|Windows・Mac・Linuxをコマンド1つで開くやり方、バックアップ運用の実践例はtar.gzで丸ごと保存|バックアップ圧縮の実用レシピと注意点で個別に解説しています。tarコマンド自体の基本と用途をひと通り押さえたい場合は、このまま読み進めてください。
tar コマンドとは?アーカイブと圧縮を理解しよう
tar コマンドは Linux・macOS で複数のファイルを1つにまとめ、必要に応じて圧縮するコマンドです。「Tape Archive」の略で、ファイルの バックアップ・配布・転送 に幅広く使われています。
tar コマンドの特徴は「まとめる(アーカイブ)」と「縮小する(圧縮)」を組み合わせて使える点です。圧縮形式も gzip / bzip2 / xz から選べるため、用途に応じた使い分けができます。
アーカイブ = まとめるだけ
tar コマンドの本質は「まとめること」です。
たとえば以下のようにすると、複数のファイルを1つの .tar ファイルにまとめることができます。
tar -cvf backup.tar ファイルA ファイルB ディレクトリC
この段階では「圧縮」はされていません。中身のサイズは変わらず、単に1つにくっついただけです。
圧縮 = 容量を小さくすること
圧縮は .tar ファイルに対して別途行う処理です。tar コマンドは -z(gzip)、-j(bzip2)、-J(xz)などのオプションを組み合わせることで、アーカイブと圧縮を同時に実行できます。
tar -czvf backup.tar.gz ファイルやディレクトリ
.zipとの違いは?
| 比較項目 | tar + 圧縮 | zip |
|---|---|---|
| 処理 | アーカイブ+圧縮を分けて行う | アーカイブと圧縮を同時に行う |
| 拡張子 | .tar, .tar.gz, etc | .zip |
| 一部展開 | 可能 | 可能 |
| 圧縮率 | 圧縮形式によって異なる | 通常は中程度 |
| 対応環境 | UNIX系に標準的 | Windowsで標準的 |
zip / unzip コマンドの具体的な使い方はzip / unzip コマンド|Linux での圧縮・解凍の使い方で解説しています。
tarコマンドの圧縮・解凍、まずはこれだけ見ればOK!
まずは tar コマンドを使った「圧縮」と「解凍」の基本的なコマンドだけを、用途別に一覧で紹介します。これさえ覚えておけば、日常的な tar の利用はほぼカバーできます。
🔽 圧縮(アーカイブ)のコマンド
# アーカイブ(圧縮なし)を作成
tar -cvf archive.tar ディレクトリ名やファイル名
# gzip形式で圧縮(.tar.gz)
tar -czvf archive.tar.gz ディレクトリ名やファイル名
# bzip2形式で圧縮(.tar.bz2)
tar -cjvf archive.tar.bz2 ディレクトリ名やファイル名
# xz形式で圧縮(.tar.xz)
tar -cJvf archive.tar.xz ディレクトリ名やファイル名
🔼 解凍(展開)のコマンド
# アーカイブ(.tar)を展開
tar -xvf archive.tar
# gzip形式(.tar.gz)を展開
tar -xzvf archive.tar.gz
# bzip2形式(.tar.bz2)を展開
tar -xjvf archive.tar.bz2
# xz形式(.tar.xz)を展開
tar -xJvf archive.tar.xz
💡 オプションの意味(よく使うもの)
| オプション | 意味 | 備考 |
|---|---|---|
-c | アーカイブ作成(create) | 圧縮時に使用 |
-x | 展開(extract) | 解凍時に使用 |
-v | 詳細表示(verbose) | 進捗が見えるので安心 |
-f | ファイル指定(file) | 対象ファイル名を後に続ける |
-z | gzip圧縮対応 | .tar.gz に対応 |
-j | bzip2圧縮対応 | .tar.bz2 に対応 |
-J | xz圧縮対応 | .tar.xz に対応 |
tar コマンドで圧縮する方法 | 拡張子の違い
tarコマンドでは、圧縮形式を指定することで .tar.gz や .tar.bz2 などの形式で出力できます。用途に応じて圧縮形式を選び、適切なオプションを使うのがポイントです。
gzip形式(.tar.gz)
tar -czvf archive.tar.gz ディレクトリ名やファイル名
-z:gzip圧縮を有効にする- 最も一般的な形式で、展開も速く広く使われている
bzip2形式(.tar.bz2)
tar -cjvf archive.tar.bz2 ディレクトリ名やファイル名
-j:bzip2圧縮を有効にする- gzipよりも高い圧縮率だが処理時間はやや長め
xz形式(.tar.xz)
tar -cJvf archive.tar.xz ディレクトリ名やファイル名
-J:xz圧縮を有効にする- 高圧縮率かつ比較的新しい形式。ソースコード配布などで使われることが多い
zstd形式(.tar.zst)
# 圧縮
tar --zstd -cvf archive.tar.zst ディレクトリ名やファイル名
# 解凍
tar --zstd -xvf archive.tar.zst
--zstd:Facebook(Meta)製の圧縮アルゴリズムzstandardを使う。GNU tar 1.31以降で標準サポート- gzip並みの圧縮速度でxzに迫る圧縮率が出せるため、CI/CDのキャッシュ保存やコンテナイメージなど「速さと圧縮率の両立」が必要な用途で採用が広がっている
- 古いtar(GNU tar 1.30以前やmacOS標準のBSD tar)では
--zstdが使えない場合があるため、tar --versionで対応状況を確認するかzstd -d archive.tar.zst -c | tar -xf -のようにzstdコマンドと組み合わせる
圧縮形式の比較:速度・圧縮率・主な用途
| 拡張子 | 圧縮形式 | オプション | 圧縮速度 | 圧縮率の目安 | 主な用途 |
|---|---|---|---|---|---|
.tar | なし | -cvf | 最速 | なし | 圧縮不要な局所バックアップ |
.tar.gz | gzip | -czvf | 速い | 中(★★★) | 一般的な配布・転送。最もよく使われる |
.tar.bz2 | bzip2 | -cjvf | やや遅い | 高(★★★★) | 容量節約が優先のテキストファイル |
.tar.xz | xz | -cJvf | 遅い | 最高(★★★★★) | ソースコード配布・長期保存 |
.tar.zst | zstd | –zstd -cvf | 速い | 高(★★★★) | CI/CDキャッシュ・コンテナイメージなど速度と圧縮率の両立 |
どの圧縮形式を選ぶべきか
- 迷ったら
.tar.gz:最も汎用的で、展開速度も速く、どの環境でも使える - 圧縮率を重視するなら
.tar.xz:時間がかかるが最もサイズを小さくできる。ソースコード配布に多い - 速度と圧縮率のバランスなら
.tar.zst:gzip並みの速さでxzに近い圧縮率。CI/CDやコンテナ用途で採用が増えている - 速度を重視するなら
.tar(圧縮なし):同じネットワーク内の移動など、処理速度を優先したい場合
ファイル名を圧縮後に自動でつけたいとき
filename=backup
tar -czvf ${filename}_$(date +%Y%m%d).tar.gz 対象フォルダ
Linux で tar 解凍する方法(tar xzf / xjf / xJf)
Linux で tar.gz を解凍(展開)するには tar -xzf コマンドを使います。-x は「展開(extract)」、-z は「gzip 圧縮の処理」、-f は「ファイル指定」を意味します。拡張子に応じてオプションを切り替えるのがポイントです。
| 拡張子 | 解凍コマンド | ポイント |
|---|---|---|
.tar | tar -xvf archive.tar | 圧縮なし・展開のみ |
.tar.gz / .tgz | tar -xzf archive.tar.gz | 最もよく使う形式 |
.tar.bz2 | tar -xjf archive.tar.bz2 | 高圧縮率の bzip2 |
.tar.xz | tar -xJf archive.tar.xz | 最高圧縮の xz |
基本的な解凍コマンド
# .tar ファイルの展開(圧縮なし)
tar -xvf archive.tar
# .tar.gz の展開(gzip)— Linux で最も一般的な解凍
tar -xzvf archive.tar.gz
# .tar.bz2 の展開(bzip2)
tar -xjvf archive.tar.bz2
# .tar.xz の展開(xz)
tar -xJvf archive.tar.xz
展開先のディレクトリを指定する
tar -xzvf archive.tar.gz -C /path/to/output
※ /path/to/output ディレクトリは事前に作成しておく必要があります。
解凍せずに中身だけ確認する
tar -tvf archive.tar
tar -tzvf archive.tar.gz
一部のファイルだけ解凍する
tar -xzvf archive.tar.gz path/to/file.txt
配布物の余分な親ディレクトリを取り除く(–strip-components)
GitHubのソースアーカイブなどは、展開すると プロジェクト名-v1.2.3/ のような1階層のディレクトリで包まれていることがよくあります。この階層を取り除いて中身だけを展開したいときは --strip-components を使います。
# 先頭の1階層(プロジェクト名-v1.2.3/ など)を取り除いて展開
tar -xzf archive.tar.gz --strip-components=1 -C ./project
数字は取り除きたい階層の深さです。指定した階層数より浅いパスのファイルは展開されないため、事前に tar -tzf で構造を確認してから使うと安全です。
解凍での注意点
- 相対パスで展開されるので、現在の作業ディレクトリに注意
- アーカイブによっては展開時に大量のファイルが展開されることがあるため、事前確認(
-t)がおすすめです - 既存の同名ファイルは基本的に上書きされる。上書きしたくない場合は
-k(--keep-old-files)を使う - 一般ユーザーで展開すると所有者は実行ユーザーになる。root権限での復元やバックアップ展開でパーミッション・所有者を維持したい場合は
-p(--preserve-permissions)を付ける
よく使うオプション一覧と覚え方
tarコマンドはオプションの組み合わせによって多彩な使い方ができますが、基本的なオプションだけを覚えておけば、ほとんどの用途に対応できます。
基本オプション一覧
| オプション | 意味 | よく使う場面 | 覚え方 |
|---|---|---|---|
-c | create(作成) | アーカイブを作る | create = 作成 |
-x | extract(展開) | アーカイブを展開 | xtract = 取り出す |
-v | verbose(詳細表示) | 処理中のファイルを見る | visible(見える) |
-f | file(ファイル指定) | 出力ファイル名の指定 | file = ファイル名を指定 |
-z | gzip圧縮 | .tar.gz を扱う | zipの z(gzip) |
-j | bzip2圧縮 | .tar.bz2 を扱う | j = bjip2(語呂) |
-J | xz圧縮 | .tar.xz を扱う | Just xz(Jで覚える) |
-t | list(中身を表示) | 展開せずに確認 | table(一覧表示) |
-C | Change directory | 展開先の指定 | Change directory |
--strip-components=1 | 展開時に先頭のディレクトリ階層を取り除く | 配布物展開時に不要な親ディレクトリを外したいとき | strip = はがす、components = パスの部品 |
-k(--keep-old-files) | 既存ファイルがある場合に上書きしない | 誤って既存ファイルを壊したくないとき | keep old files = 古いファイルを残す |
-p(--preserve-permissions) | 展開時にパーミッションや所有者情報を保持する | バックアップの復元など権限を維持したいとき | preserve permissions = 権限を保持 |
--exclude-from=file | 除外したいパターンをファイルから読み込む | バックアップで除外対象が多いとき | exclude from file = 除外条件をファイルから読む |
-T(--files-from=file) | 対象ファイル一覧をファイルから読み込む | 圧縮対象を一覧で管理したいとき | T = target list を渡すイメージ |
--one-top-level | 展開時に1つのトップレベルディレクトリを作ってその中に展開する | 展開先にファイルが散らかるのを防ぎたいとき | one top level = いちばん上を1つにまとめる |
オプションの覚え方のコツ
- 「c / x / t」:基本操作のモードを決める(作成・展開・一覧)
- 「v / f」:補助的に常につける(出力確認・ファイル指定)
- 「z / j / J」:圧縮形式を選ぶ(gzip / bzip2 / xz)
- 順番は重要:
-cvfのようにfの後ろにファイル名が必要
例:よくある組み合わせパターン
| 操作内容 | コマンド例 | コメント |
|---|---|---|
| アーカイブ作成 | tar -cvf backup.tar dir/ | 圧縮なし |
| gzip圧縮 | tar -czvf backup.tar.gz dir/ | 最も一般的な形式 |
| 展開 | tar -xvf backup.tar | 圧縮されていない場合 |
| gzip展開 | tar -xzvf backup.tar.gz | .tar.gzの展開 |
| 中身だけ確認 | tar -tvf backup.tar | 展開前にチェックできる |
| 指定先に展開 | tar -xzvf backup.tar.gz -C output/ | 特定ディレクトリに展開 |
応用テクニック・実務で便利な使い方
基本的な圧縮・解凍の使い方を覚えたら、次はtarコマンドをより柔軟に使いこなすための応用テクニックです。
特定のファイルやディレクトリを除外する(–exclude)
tar -czvf archive.tar.gz ディレクトリ名 --exclude="*.log"
除外条件は複数指定できます。開発プロジェクトを配布用にアーカイブする際、node_modules や .git のような不要なディレクトリをまとめて除外すると軽量化できます。
tar -czf project.tar.gz \
--exclude="./node_modules" \
--exclude="./.git" \
./project/
SSH経由でリモートサーバーへ送る
tar -czf - ディレクトリ名 | ssh user@remote "tar -xzf - -C /path/to/destination"
SSHの接続方法や認証設定についてはssh コマンド|ssh接続の基本から主要オプションまで解説も参考にしてください。
find コマンドと組み合わせて圧縮
find ./logs -name "*.log" | tar -czvf logs.tar.gz -T -
findコマンドの詳細な絞り込み条件(日時・サイズ・拡張子など)についてはfind コマンド / locate|Linuxでファイルを検索する方法をあわせて確認してください。
ファイル更新の差分だけアーカイブ(–update)
tar --update -f archive.tar 変更されたファイル
これらのテクニックを知っておくと、tarコマンドを単なる「圧縮・解凍ツール」ではなく、柔軟で高機能なファイル操作ツールとして使いこなせるようになります。
tar コマンドでよくあるエラーと対処
tar コマンドは便利ですが、オプションの違いや展開先の指定ミスで失敗しやすいコマンドでもあります。ここでは、よくあるエラーと原因、対処法をまとめます。
権限エラーが出る
展開先や圧縮対象のディレクトリに書き込み権限がないと、Permission denied のようなエラーが出ます。
tar -xzf archive.tar.gz -C /var/www/html
まず展開先に書き込み権限があるか確認しましょう。必要に応じて、権限のあるディレクトリへ展開するか、管理者権限で実行します。Linuxのファイル権限の仕組みや chmod・chown の使い方は【初心者向け】Linux 権限管理を徹底解説!chmod と chown の使い方をわかりやすくで確認できます。
展開先を間違えてファイルが散らかる
tar -xzf archive.tar.gz -C ./output
事前に展開先ディレクトリを作成し、-C オプションで明示すると安全です。受け取ったアーカイブを開くときは、まず -t で中身を確認してから展開すると事故を防げます。
既存ファイルを上書きしてしまう
tar -xzkf archive.tar.gz
上書きを避けたい場合は -k(--keep-old-files)を使います。既存ファイルがある場合は上書きせず、そのファイルを残したまま処理できます。
オプション違いで解凍できない
# .tar.gz
tar -xzf archive.tar.gz
# .tar.bz2
tar -xjf archive.tar.bz2
# .tar.xz
tar -xJf archive.tar.xz
なお、GNU tar と BSD tar(macOS)で使えるオプションが一部異なります。見慣れないエラーが出たときは、圧縮形式とオプションの組み合わせ、使っている tar の種類を確認しましょう。
GNU tar と BSD tar(macOS)の主な違い
Linux の多くのディストリビューションは GNU tar を採用していますが、macOS 標準の tar は BSD tar です。同じオプションでも挙動が異なる場合があるので注意しましょう。
| 項目 | GNU tar(多くのLinux) | BSD tar(macOS標準) |
|---|---|---|
--versionでの確認 | tar (GNU tar) x.xと表示 | bsdtar x.xと表示 |
--excludeの書式 | 比較的柔軟なパターン指定が可能 | 一部のワイルドカード指定で挙動が異なる |
| 長いオプション | --strip-componentsなど幅広くサポート | サポートされないオプションがある |
| Homebrewでの対応 | – | brew install gnu-tarでGNU tarを追加導入可能 |
macOSでLinuxサーバーと同じスクリプトを使い回したい場合は、Homebrewでgnu-tarを導入しgtarコマンドとして使うと差異を減らせます。
よくある質問(FAQ)
-cvf と -czvf の違いは何ですか?
-cvf はアーカイブのみ(圧縮なし)で、-czvf は gzip での圧縮付きアーカイブです。gzip 圧縮をする場合は z を忘れずに追加しましょう。
.tar.gz と .zip はどう違うの?
.tar.gz は UNIX/Linux 系でよく使われ、アーカイブ→圧縮の順で処理します。.zip は Windows で標準的な形式で、アーカイブと圧縮を同時に行います。
GNU tar と BSD tar(macOS)で一部オプションの差分があります。また - を省略したり、順序が違うとエラーになる場合があります。tar --version で種類を確認してみましょう。
Windows 11 以降では標準で展開可能です。それ以前のバージョンでは 7-Zip や WinRAR などのツールを使うと展開できます。
解凍せずに中身だけ確認するには -t オプションを使います。tar -tvf archive.tar.gz でファイル構成や日時、サイズを事前にチェックできます。
pv コマンドと組み合わせると進捗を表示できます。例: tar -cf - ディレクトリ | pv -s $(du -sb ディレクトリ | awk '{print $1}') | gzip > archive.tar.gz。pv が未導入の場合は apt install pv や brew install pv で追加します。
-z や -j を省略しても解凍できますか?
新しめのGNU tarは拡張子から圧縮形式を自動判定するため、tar -xf archive.tar.gz のように圧縮オプションを省略しても解凍できることが多いです。ただしBSD tar(macOS標準)や古いtarでは自動判定されない場合があるため、確実に動かしたいスクリプトでは -z / -j / -J を明示するのが安全です。
tar コマンドと他の圧縮ツールとの違い(zip・7z・rar)
tar は「まとめる+圧縮する」を分業する UNIX 系の標準ツールですが、実務では zip・7z・rar と比較検討する場面もあります。用途に応じて選び分けましょう。
| 形式 | 主な環境 | 圧縮率 | 特徴 |
|---|---|---|---|
tar.gz / tar.xz | Linux / macOS | 中〜最高 | 権限・シンボリックリンクを保持しやすい。サーバー間転送の定番 |
zip | Windows / 全般 | 中程度 | OS標準で開けることが多く、共有相手を選ばない |
7z | Windows中心 | 高い | 圧縮率は高いが専用ツールが必要な場合がある |
rar | Windows中心 | 高い | 圧縮には有償ツールが必要(展開のみ無料ツールあり) |
Linux サーバー同士やバックアップ用途では tar.gz / tar.xz、Windows ユーザーとファイルをやり取りするなら zip が無難です。
まとめ|tarはこのパターンだけ覚えれば怖くない
tarコマンドはオプションが多くて難しく感じるかもしれませんが、実は基本の形だけを覚えれば、ほとんどの操作がスムーズにこなせます。
✅ 圧縮はこの2つを使い分けるだけ
# アーカイブのみ(圧縮なし)
tar -cvf archive.tar 対象
# gzip圧縮付き
tar -czvf archive.tar.gz 対象
✅ 解凍はこの2つを使い分けるだけ
# アーカイブのみを展開
tar -xvf archive.tar
# gzip圧縮を展開
tar -xzvf archive.tar.gz
✅ よく使うオプションはこれだけ
c:作成(create)x:展開(extract)v:中身を表示(verbose)f:ファイル名を指定(file)z:gzip圧縮対応(zipのz)
この組み合わせで 「作るなら -cvf / -czvf」「解凍なら -xvf / -xzvf」 を基本形として使えば、迷うことはほとんどありません。
tarコマンドは、慣れれば非常に強力で応用も効くツールです。まずは基本を押さえて、少しづつ便利な使い方を身につけていきましょう。
参考
- manページ: man7.org tar(1)
- GNU tar: https://www.gnu.org/software/tar/

コメント