- 技術 💻
tarコマンドの使い方|圧縮・解凍の形式別早見表と速度の実測比較
tarコマンドとは、複数のファイルやフォルダを1つのファイル(アーカイブ)にまとめたり、まとめたファイルを元に戻したりするコマンドです。gzip・bzip2・xz・zstd と組み合わせると、まとめると同時に圧縮もできます。.tar.gz や .tgz のファイルを受け取って解凍する、ログやソースコードを圧縮して保存する、といった場面で毎日のように使われます。
この記事では、形式ごとの「圧縮・解凍・中身確認」のコマンドをコピペできる表にまとめたうえで、すべてのコマンドを実際に実行して出力を載せています(GNU tar 1.35 / Ubuntu 24.04)。さらに、同じデータ(1,212ファイル・約52MB)を gzip・bzip2・xz・zstd・zip で圧縮し、サイズと処理時間を実測して、形式の選び方を判断表にしました。よく出るエラー(Cannot open、not in gzip format、Removing leading '/')も実際に出して対処を確認し、macOS や Windows の tar(bsdtar)との違いもまとめています。
tarの圧縮・解凍 早見表(形式別コピペ)
「アーカイブ名」は作るファイル名、dir はまとめたいフォルダです。解凍は GNU tar・bsdtar ともに形式を自動判別するので、tar -xf ファイル名 だけでも動きます。
| 形式 | 圧縮(作成) | 解凍(展開) | 中身の確認 |
|---|---|---|---|
.tar(圧縮なし) |
tar -cf a.tar dir |
tar -xf a.tar |
tar -tf a.tar |
.tar.gz / .tgz |
tar -czf a.tar.gz dir |
tar -xzf a.tar.gz |
tar -tzf a.tar.gz |
.tar.bz2 |
tar -cjf a.tar.bz2 dir |
tar -xjf a.tar.bz2 |
tar -tjf a.tar.bz2 |
.tar.xz |
tar -cJf a.tar.xz dir |
tar -xJf a.tar.xz |
tar -tJf a.tar.xz |
.tar.zst |
tar --zstd -cf a.tar.zst dir |
tar --zstd -xf a.tar.zst |
tar --zstd -tf a.tar.zst |
| 拡張子で自動判別 | tar -caf a.tar.xz dir |
tar -xf a.tar.xz |
tar -tf a.tar.xz |
.zip |
zip -r a.zip dir |
unzip a.zip |
unzip -l a.zip |
.gz(1ファイルだけ) |
gzip -k file.log |
gunzip file.log.gz |
gzip -l file.log.gz |
| やりたいこと | コマンド |
|---|---|
| 解凍先のフォルダを指定 | tar -xzf a.tar.gz -C /path/to/dir |
| 特定のファイルだけ解凍 | tar -xzf a.tar.gz dir/src/main.py |
| ワイルドカードで解凍 | tar -xzf a.tar.gz --wildcards 'dir/src/*' |
| 一部を除外して圧縮 | tar -czf a.tar.gz --exclude=node_modules --exclude='*.log' dir |
| 先頭のフォルダを外して解凍 | tar -xzf a.tar.gz --strip-components=1 -C out |
| 解凍せずにファイルの中身を表示 | tar -xzf a.tar.gz -O dir/README.md |
| 既存ファイルを上書きしない | tar -xzf a.tar.gz --skip-old-files |
| 高速に圧縮(zstd・並列) | tar -I 'zstd -T0' -cf a.tar.zst dir |
| 最小サイズを狙う | tar -I 'xz -9e -T0' -cf a.tar.xz dir |
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「tarコマンドの使い方|圧縮・解凍の形式別早見表と速度の実測比較」
tarの基本:アーカイブと圧縮は別の仕事
tar自体は「まとめる」だけで、圧縮はしません。-z(gzip)や -J(xz)を付けると、tarがまとめたデータを圧縮コマンドに渡して、まとめると同時に圧縮します。
flowchart LR
A[フォルダ・複数ファイル] -->|tar -c| B[a.tar<br>1つにまとめる]
B -->|gzip / bzip2 / xz / zstd| C[a.tar.gz など<br>圧縮]
C -->|tar -x| A
| 用語 | 意味 |
|---|---|
| アーカイブ | 複数のファイルを1つにまとめたファイル(.tar) |
| 圧縮 | データを小さくすること(.gz .bz2 .xz .zst) |
.tgz |
.tar.gz の短い書き方。中身は同じ |
オプションの読み方は「動作+形式+f ファイル名」
tar -czvf a.tar.gz dir は、次の4つを並べたものです。
| 文字 | 意味 | 覚え方 |
|---|---|---|
c |
作成(create) | 動作は c / x / t から1つ |
z |
gzipで圧縮・解凍 | 形式(省略可) |
v |
処理したファイル名を表示(verbose) | 任意 |
f |
次の引数をアーカイブ名として使う(file) | f の直後にファイル名 |
f は直後の文字列をファイル名として受け取るため、f はオプションの最後に書きます。-cfz と書くと「z」という名前のファイルが作られます(後述の「よくあるエラー」で実演します)。
tarのオプション早見表
| オプション | 長い形式 | 意味 |
|---|---|---|
-c |
--create |
アーカイブを作る |
-x |
--extract |
展開する(解凍) |
-t |
--list |
中身を一覧表示する |
-r |
--append |
末尾に追加する(圧縮なしの .tar のみ) |
-v |
--verbose |
処理中のファイル名を表示。-t と組み合わせると詳細表示 |
-f |
--file= |
アーカイブ名を指定。- で標準入出力 |
-z |
--gzip |
gzip(.tar.gz .tgz) |
-j |
--bzip2 |
bzip2(.tar.bz2) |
-J |
--xz |
xz(.tar.xz) |
| なし | --zstd |
zstd(.tar.zst)。GNU tar 1.31以降 |
-a |
--auto-compress |
作成時に拡張子から圧縮形式を決める |
-I |
--use-compress-program= |
圧縮コマンドを指定(-I 'zstd -19 -T0' など) |
-C |
--directory= |
指定フォルダに移動してから処理 |
| なし | --exclude= |
除外するパターン |
-T |
--files-from= |
ファイル一覧(1行1ファイル)から対象を読む |
| なし | --strip-components=N |
展開時に先頭N階層のフォルダを外す |
-O |
--to-stdout |
展開せずに標準出力へ出す |
-p |
--preserve-permissions |
パーミッションをそのまま復元(root実行時は既定で有効) |
-k |
--keep-old-files |
既存ファイルがあればエラーにする |
| なし | --skip-old-files |
既存ファイルを黙って飛ばす |
| なし | --wildcards |
展開時のファイル指定で * などを使う |
-P |
--absolute-names |
先頭の / を取り除かない(通常は使わない) |
- は付けても付けなくても動きます(tar czf と tar -czf は同じ)。この記事では読みやすさのため - を付けて書きます。
圧縮・中身確認・解凍を実行してみる
以降の例は、次のフォルダを使います。
myapp/
├── README.md
├── .git/HEAD
├── logs/app.log
├── node_modules/lib/index.js
└── src/
├── main.py
└── util.py
tar.gz を作る(-czvf)
tar -czvf myapp.tar.gz myapp
myapp/
myapp/src/
myapp/src/main.py
myapp/src/util.py
myapp/README.md
myapp/.git/
myapp/.git/HEAD
myapp/logs/
myapp/logs/app.log
myapp/node_modules/
myapp/node_modules/lib/
myapp/node_modules/lib/index.js
-v を付けると、アーカイブに入れたファイルが1行ずつ表示されます。大量のファイルを扱うときは -v を外すと速く、画面もすっきりします。
解凍せずに中身を確認する(-t / -tv)
tar -tzvf myapp.tar.gz
drwxr-xr-x root/root 0 2026-09-29 15:05 myapp/
drwxr-xr-x root/root 0 2026-09-29 15:05 myapp/src/
-rw-r--r-- root/root 15 2026-09-29 15:05 myapp/src/main.py
-rw-r--r-- root/root 2 2026-09-29 15:05 myapp/src/util.py
-rw-r--r-- root/root 8 2026-09-29 15:05 myapp/README.md
...(以下略)
受け取ったアーカイブは、解凍する前に -t で中身を見る習慣をつけると安心です。先頭に共通のフォルダ(ここでは myapp/)があるかどうかで、解凍したときに今のフォルダにファイルが散らばるかどうかがわかります。
解凍先を指定する(-C)
mkdir -p /tmp/out && tar -xzf myapp.tar.gz -C /tmp/out && ls /tmp/out
myapp
-C の指定先フォルダは、あらかじめ作っておく必要があります。存在しないと Cannot open: No such file or directory になります。
先頭のフォルダを外して解凍する(--strip-components)
配布物の app-1.2.3/ のような先頭フォルダを外して、決まった場所に展開したいときに使います。
tar -xzf myapp.tar.gz -C /tmp/out --strip-components=1 && ls -A /tmp/out
.git
README.md
logs
node_modules
src
特定のファイルだけ解凍する
tar -xzf myapp.tar.gz myapp/src/main.py
ファイル名は tar -t で表示されたパスをそのまま書きます。ワイルドカードを使うときは --wildcards が必要です。
tar -xzf myapp.tar.gz 'myapp/src/*'
tar: Pattern matching characters used in file names
tar: Use --wildcards to enable pattern matching, or --no-wildcards to suppress this warning
tar: myapp/src/*: Not found in archive
tar: Exiting with failure status due to previous errors
tar -xzf myapp.tar.gz --wildcards 'myapp/src/*' # こちらは成功
解凍せずにファイルの中身だけ見る(-O)
tar -xzf myapp.tar.gz -O myapp/README.md
# myapp
-O はディスクに書き出さずに標準出力へ出すので、設定ファイルを1つ確認したいときに便利です。
目的別の使い方(コピペ用)
不要なフォルダ・ファイルを除外して圧縮する(--exclude)
tar -czf myapp-src.tar.gz --exclude=node_modules --exclude=.git --exclude='*.log' myapp
tar -tf myapp-src.tar.gz
myapp/
myapp/src/
myapp/src/main.py
myapp/src/util.py
myapp/README.md
myapp/logs/
--exclude のパターンはシングルクォートで囲みます。囲まないと *.log がシェルに先に展開され、意図どおりに除外されないことがあります。除外が多いときは、1行1パターンのファイルを作って --exclude-from=exclude.txt で読み込めます。
find の結果だけをまとめる(-T)
find myapp -name '*.py' | tar -czf py.tar.gz -T -
tar -tzf py.tar.gz
myapp/src/main.py
myapp/src/util.py
日付入りのファイル名でバックアップする
tar -czf backup-$(date +%F).tar.gz myapp
backup-2026-09-29.tar.gz
絶対パスを含めずにまとめる(-C を先に書く)
tar -czf conf.tar.gz -C /srv/app myapp/README.md
tar -tf conf.tar.gz
myapp/README.md
-C フォルダ をファイル指定の前に書くと、そのフォルダからの相対パスで格納されます。展開する側の環境に合わせやすくなります。
圧縮なしの tar にファイルを追加する(-r)
tar -cf plain.tar myapp/src
tar -rf plain.tar myapp/README.md
tar -tf plain.tar
myapp/src/
myapp/src/main.py
myapp/src/util.py
myapp/README.md
追加(-r)できるのは圧縮なしの .tar だけです。.tar.gz に追加しようとすると Cannot update compressed archives になります。圧縮済みのものに追加したいときは、一度解凍して作り直します。
既存のファイルを上書きせずに解凍する
| オプション | 既存ファイルがあるとき |
|---|---|
| なし(既定) | 上書きする |
--skip-old-files |
黙って飛ばす(終了コード0) |
-k / --keep-old-files |
Cannot open: File exists を出して、最後に失敗扱い |
$ tar -xzf myapp.tar.gz --keep-old-files
tar: myapp/logs/app.log: Cannot open: File exists
tar: myapp/node_modules/lib/index.js: Cannot open: File exists
tar: Exiting with failure status due to previous errors
ssh越しにフォルダを丸ごとコピーする
tar -czf - myapp | ssh server 'tar -xzf - -C /srv/dest'
-f - は「ファイルではなく標準入出力を使う」という意味です。一時ファイルを作らずに、圧縮しながら転送できます。今回もローカルに立てたsshサーバーで転送できることを確認しました。差分だけを送りたい場合は rsync が向いています。
パーミッション(-p)と所有者の扱い
root で展開したときは、パーミッションと所有者がアーカイブどおりに復元されます。一般ユーザーで展開すると、所有者は展開した本人になり、パーミッションには umask(新規ファイルの権限を制限する設定)がかかります。
一般ユーザー(umask 077)で、-p なし/ありを比べました。
# -p なし
-rwx------ 1 nobody nogroup 15 main.py
-rw------- 1 nobody nogroup 2 util.py ← 644 が 600 になった
# -p あり
-rwx------ 1 nobody nogroup 15 main.py
-rw-r--r-- 1 nobody nogroup 2 util.py ← 644 のまま
実行権限やグループの読み取り権限を正確に残したいときは、展開時に -p を付けます。
絶対パスの扱い(Removing leading '/')
tar -czf abs.tar.gz /srv/app/myapp/README.md
tar: Removing leading `/' from member names
tar -tf abs.tar.gz
srv/app/myapp/README.md
このメッセージはエラーではなく、安全のための動作です。先頭の / を外して格納するので、展開したときに今いるフォルダの下に srv/app/... が作られ、システムのファイルを上書きしません。メッセージを出したくないときは、前述の -C を使って相対パスで格納するのがおすすめです。-P で / を残すこともできますが、展開時に元の場所へ書き込むため、用途を限って使います。
形式の選び方:gzip・bzip2・xz・zstd を実測比較
同じデータを各形式で圧縮し、サイズ・圧縮時間・解凍時間を測りました。
- データ:Python 3.12 標準ライブラリ一式(1,212ファイル、
.pyのソースと.pyc、共有ライブラリを含む)。tarにまとめた時点で 51.7MB - 環境:Ubuntu 24.04、2 vCPU、GNU tar 1.35、gzip 1.12、pigz 2.8、bzip2 1.0.8、xz 5.4.5、zstd 1.5.5、Zip 3.0
- 時間:ほかの処理と同居する環境で経過時間がぶれたため、CPU時間(user+sys)で比較しています。並列版(-T0)は経過時間も併記しました
| 方式 | コマンド | サイズ | 元との比 | 圧縮CPU時間 | 解凍CPU時間 |
|---|---|---|---|---|---|
| zstd -1 | tar -I 'zstd -1' -cf |
15.9MB | 30.7% | 0.25秒 | 0.09秒 |
| zstd -3(既定) | tar --zstd -cf |
14.1MB | 27.3% | 0.37秒 | 0.09秒 |
| gzip -6(既定) | tar -czf |
14.8MB | 28.5% | 2.33秒 | 0.41秒 |
| gzip -9 | tar -cf - dir | gzip -9 |
14.5MB | 28.1% | 16.43秒 | 0.39秒 |
| pigz(並列gzip) | tar -I pigz -cf |
14.7MB | 28.5% | 2.06秒 | 0.27秒 |
| zip(-6) | zip -r |
15.5MB | 29.9% | 2.21秒 | 0.42秒 |
| bzip2 -9(既定) | tar -cjf |
12.3MB | 23.8% | 4.56秒 | 1.76秒 |
| zstd -19 | tar -I 'zstd -19' -cf |
10.6MB | 20.5% | 25.55秒 | 0.11秒 |
| zstd -19 -T0 | tar -I 'zstd -19 -T0' -cf |
10.6MB | 20.5% | 26.03秒(経過20.32秒) | 0.11秒 |
| xz -6(既定) | tar -cJf |
9.7MB | 18.8% | 25.79秒 | 0.78秒 |
| xz -6 -T0 | tar -I 'xz -T0' -cf |
9.8MB | 19.0% | 26.31秒(経過20.76秒) | 0.83秒 |
| xz -9e | tar -I 'xz -9e' -cf |
8.7MB | 16.8% | 35.21秒 | 0.76秒 |
実測からわかったこと
- zstd の既定(-3)は、gzip と同程度のサイズを約6分の1のCPU時間で作れました。解凍も gzip の4分の1以下です
- いちばん小さくなったのは xz(-9e で 16.8%)。そのぶん圧縮に時間がかかります。解凍は bzip2 より速い結果でした
- zstd -19 は xz -6 に近いサイズで、解凍は xz の約7分の1のCPU時間でした。「一度作って何度も解凍する」配布物に向いています
- gzip -9 は -6 と比べてサイズが2%しか小さくならず、CPU時間は約7倍でした。gzip は既定のままで十分です
-T0(全コアを使う)は経過時間を約2〜3割短くしました(2 vCPUの環境)。コア数が多いマシンほど効果が大きくなります。pigz は今回の環境では並列の効果が小さく、CPU時間の差もわずかでした
圧縮率はデータの中身で大きく変わります。テキストやログはよく縮み、画像・動画・すでに圧縮されたファイルはほとんど縮みません。本番のデータで一度試してから決めるのが確実です。
形式の選び方 判断表
| 目的 | おすすめ | 理由 |
|---|---|---|
| とにかく相手が確実に開ける | .tar.gz |
ほぼすべての環境で標準で解凍できる |
| Windowsユーザーに渡す | .zip |
エクスプローラーでそのまま開ける |
| 毎日のバックアップ・大量のログを速く | .tar.zst(-3 または -T0) |
圧縮・解凍とも非常に速く、サイズもgzip並み |
| 配布物を最小サイズに | .tar.xz または zstd -19 |
サイズ最小。解凍を速くしたいなら zstd -19 |
| 既存の手順や相手が bzip2 を指定 | .tar.bz2 |
互換性のため。新しく選ぶなら xz か zstd |
| 1ファイル(ログなど)だけ圧縮 | gzip -k / zstd |
tar でまとめる必要がない |
zstd を使うときは、受け取る側に zstd が入っているか確認します。GNU tar は 1.31 以降で --zstd に対応していますが、zstd コマンド(またはライブラリ)が入っていない環境では追加が必要です。
gzip単体・zip/unzip の使い方
gzip:1つのファイルを圧縮する
gzip -k access.log # 元ファイルを残して access.log.gz を作る
gzip -l access.log.gz # 圧縮率を確認
gunzip access.log.gz # 元に戻す(gzip -d と同じ)
zcat access.log.gz # 解凍せずに中身を表示
gzip は1ファイルずつ圧縮するコマンドで、フォルダはまとめられません。-k を付けないと元ファイルが消えて .gz だけが残ります。フォルダをまとめたいときは tar と組み合わせます。
zip / unzip:Windowsとやり取りする
zip -r myapp.zip myapp -x 'myapp/node_modules/*' 'myapp/.git/*'
unzip -l myapp.zip
unzip -q myapp.zip -d /tmp/out
Archive: myapp.zip
Length Date Time Name
--------- ---------- ----- ----
0 2026-09-29 15:05 myapp/
0 2026-09-29 15:05 myapp/src/
15 2026-09-29 15:05 myapp/src/main.py
2 2026-09-29 15:05 myapp/src/util.py
8 2026-09-29 15:05 myapp/README.md
0 2026-09-29 15:05 myapp/logs/
4 2026-09-29 15:05 myapp/logs/app.log
--------- -------
29 7 files
| 操作 | tar.gz | zip |
|---|---|---|
| フォルダを圧縮 | tar -czf a.tar.gz dir |
zip -r a.zip dir |
| 除外 | --exclude='*.log' |
-x '*.log' |
| 中身確認 | tar -tzf a.tar.gz |
unzip -l a.zip |
| 展開先 | -C dir(先に作成) |
-d dir(自動作成) |
| 特徴 | 全体をまとめて圧縮するので小さくなりやすい | 1ファイルずつ圧縮。1つだけ取り出すのが速い |
よくあるエラーと対処
| エラー・症状 | 原因 | 対処 |
|---|---|---|
Cannot open: No such file or directory |
ファイル名の間違い、または -C の先がない |
ls で名前を確認。mkdir -p で展開先を作る |
gzip: stdin: not in gzip format |
拡張子は .gz だが中身が gzip ではない |
file で本当の形式を確認し、tar -xf で自動判別 |
Removing leading '/' from member names |
絶対パスを指定した(エラーではない) | -C で相対パスにする |
Not found in archive |
パスが tar -t の表示と違う/ワイルドカードに --wildcards がない |
tar -t の表示どおりに書く |
Cannot update compressed archives |
圧縮済みに -r で追加しようとした |
解凍して作り直す |
Unexpected EOF in archive |
ダウンロードやコピーが途中で切れた | サイズ・チェックサムを確認して取り直す |
z という謎のファイルができた |
-cfz と書いた(f の直後がファイル名) |
f を最後に:-czf |
Cannot open: No such file or directory
$ tar -xzf nothing.tar.gz
tar (child): nothing.tar.gz: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
作成時に、アーカイブ名とフォルダ名を逆に書いたときも似たエラーになります。
$ tar -czf myapp myapp.tar.gz
tar (child): myapp: Cannot open: Is a directory
-f の直後は「作るファイル名」、その後ろが「まとめる対象」の順番です。
not in gzip format
$ tar -xzf fake.tar.gz
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
ダウンロードしたファイルが、実はエラーページ(HTML)だったというケースが多いです。file コマンドで中身の形式を確かめます。
$ file myapp.tar.gz
myapp.tar.gz: gzip compressed data, from Unix, original size modulo 2^32 10240
file の結果が HTML document や ASCII text なら、ダウンロードをやり直します。XZ compressed data のように別形式なら、-z を外して tar -xf にすると自動判別で展開できます。
Unexpected EOF in archive(ファイルが途中で切れている)
$ tar -tzf broken.tar.gz > /dev/null
gzip: stdin: unexpected end of file
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now
gzip -t で、展開せずに壊れていないかを確認できます。配布元がチェックサム(sha256sum)を公開していれば、それも照合します。
$ gzip -t broken.tar.gz
gzip: broken.tar.gz: unexpected end of file
-cfz と書いて「z」というファイルができる
$ tar -cfz bad.tar.gz myapp
tar: bad.tar.gz: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
$ ls
z ← 「z」という名前のアーカイブができている
f はすぐ後ろの文字列をファイル名として受け取るので、-czf のように f を最後に書きます。
GNU tar と bsdtar(macOS・Windows)の違い
macOS と Windows 10以降に標準で入っている tar は、bsdtar(libarchive)です。基本のオプション(-c -x -t -v -f -z -j -J -C --exclude --strip-components)は共通で、ここまでのコマンドはほぼそのまま使えます。今回は bsdtar 3.7.2 も同じ環境で試しました。
| 項目 | GNU tar(Linux) | bsdtar(macOS・Windows) |
|---|---|---|
| 解凍時の形式の自動判別 | あり | あり |
| zipの読み書き | 不可(-acf a.zip でも中身はtar) |
可能(tar -acf a.zip dir、tar -xf a.zip) |
| zstd | --zstd |
--zstd |
| 絶対パスのメッセージ | Removing leading `/' |
Removing leading '/' |
| 形式でないファイルを展開 | This does not look like a tar archive |
Missing type keyword in mtree specification など |
--wildcards |
展開時のパターンに必要 | 不要(最初からパターンとして扱う) |
| macOS特有 | なし | ._ で始まるファイル(拡張属性)が入ることがある |
GNU tar で -a を使って .zip を指定した結果と、bsdtar の結果です。
$ tar -acf myapp-gnu.zip myapp; file myapp-gnu.zip
myapp-gnu.zip: POSIX tar archive (GNU) ← 拡張子はzipでも中身はtar
$ bsdtar -acf myapp-bsd.zip myapp && unzip -l myapp-bsd.zip | tail -1
37 12 files ← 本物のzip
macOSで作ったアーカイブに ._ファイル名 が入るのを避けたいときは、COPYFILE_DISABLE=1 tar -czf ... のように環境変数を付けて作成します。Linuxでzipを作るときは zip コマンドを使います。
よくある質問
Q. tar.gz と tgz は何が違いますか?
A. 中身は同じです。.tgz は .tar.gz の短い書き方で、どちらも tar -xzf で解凍できます。
Q. 解凍のとき z や J を付け忘れても大丈夫ですか?
A. はい。GNU tar も bsdtar も、解凍時は形式を自動で判別するので tar -xf ファイル名 で展開できます。作成時は形式を決める必要があるので、-z などを付けるか、-a で拡張子から自動で選ばせます。
Q. どの圧縮形式を選べばよいですか?
A. 相手を選ばず確実に開けるのは .tar.gz、Windowsの相手には .zip、自分たちのバックアップを速くしたいなら .tar.zst、サイズ最小を狙うなら .tar.xz がおすすめです。今回の実測では、zstd は gzip と同程度のサイズを約6分の1のCPU時間で作れました。
Q. パスワード付きで圧縮できますか?
A. tar自体には暗号化の機能はありません。tar -czf - dir | gpg -c > a.tar.gz.gpg のように gpg と組み合わせるか、7z などの暗号化に対応したツールを使います。
まとめ
- tarは「まとめる」コマンドで、
-z(gzip)-j(bzip2)-J(xz)--zstdで圧縮も同時にできる - 基本は 作成
-czf、解凍-xzf、中身確認-tzf。fは最後に書き、直後にファイル名 - 解凍は
tar -xfだけで形式を自動判別。展開先は-C、先頭フォルダを外すなら--strip-components - 除外は
--exclude='パターン'、一部だけ解凍はtar -tの表示どおりのパス(ワイルドカードは--wildcards) - 実測では zstd が圧倒的に速く、xz が最も小さい。互換性重視なら gzip、Windows向けは zip
Removing leading '/'は安全のための動作。-Cで相対パスにすると出なくなる- エラーが出たら
fileで本当の形式、gzip -tで破損を確認する
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「tarコマンドの使い方|圧縮・解凍の形式別早見表と速度の実測比較」
株式会社RJCでは、毎日使う基本のコマンドも実際に手を動かして確かめ、気づいたことを仲間と教え合っています。こうした知識を共有しながら、日々技術を磨いています。
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。