Linuxコマンド一覧

tarコマンド|ディレクトリを1つのファイルに固める

__ __ _ _____
\ \ / /__| |_|_ _|__ _ __ _ __ ___
\ \ /\ / / _ \ '_ \| |/ _ \ '__| '_ ` _ \
\ V V / __/ |_) | | __/ | | | | | |
\_/\_/ \___|_.__/|_|\___|_| |_| |_| |_
 
tar を試すためのサンドボックスです。実機のファイルには影響しません。
user@webterm:~/project$
 

tar は複数のファイルを1つに固めて圧縮するコマンドです。`-czf` で作る、`-tzf` で中身を見る、`-xzf` で取り出すという3つの形と、オプションの覚え方を、ブラウザ上のターミナルで打ちながら確認できます。

最終更新: 2026-09-06

書式

tar [オプション] アーカイブ名 [ファイル...]

複数のファイルやディレクトリを、1つのファイルにまとめます。

まず打ってみる

srclogs を1つに固めます。

$ tar -czf backup.tar.gz src logs

成功すると何も出ません。 できたファイルを見てみます。

$ ls -lh backup.tar.gz
-rw-r--r--   1  user  user   1.4K  Sep  6 00:52  backup.tar.gz

オプションはそれぞれ1文字ずつに意味があります。

文字意味
ccreate(新しく作る)
zgzip で圧縮する
fこの後にファイル名を書く

中身を確かめる

ct に変えると、取り出さずに中身の一覧だけが出ます。

$ tar -tzf backup.tar.gz
src/
src/index.js
src/utils.js
logs/
logs/app.log
logs/error.log

src/logs/ のように、ディレクトリごと入っていることが分かります。 取り出す前に必ずこれを見てください。 中身がディレクトリで包まれていないアーカイブを展開すると、いまいる場所にファイルが直接ばらまかれます。

取り出す

cx に変えると取り出せます。 src を消してしまった、という状況で試します。

$ rm -r src
$ ls
backup.tar.gz  logs/  README.md  restore/
$ tar -xzf backup.tar.gz
$ ls src
index.js  utils.js

戻りました。 取り出す場所はいまいるディレクトリです。

別の場所に取り出す

-C で展開先を変えられます。

$ tar -xzf backup.tar.gz -C restore
$ ls restore
logs/  src/

いまの作業を上書きせずに中身を確かめたいときは、この形が安全です。

進み具合を見る

v(verbose)を足すと、処理したファイルが1行ずつ出ます。

$ tar -czvf logs.tar.gz logs
logs/
logs/app.log
logs/error.log

実務での使いどころ

tar は、ディレクトリごと運ぶ・残すときに打つコマンドです。

場面打ち方
ログをまとめて保存するtar -czf logs-2026-09.tar.gz logs
配布されたファイルを取り出すtar -xzf package.tar.gz
取り出す前に中身を確かめるtar -tzf package.tar.gz
作業を汚さずに展開するtar -xzf package.tar.gz -C /tmp/check
不要なものを入れずに固めるtar -czf src.tar.gz --exclude=node_modules .

サーバーへ送る前に固める、受け取ったものを取り出す、この2つがほとんどです。

つまずきやすいところ

f の直後がファイル名です。 tar -cfz backup.tar.gz src のように順番を崩すと、z がファイル名として読まれます。 -czf -xzf -tzf の3つを、形のまま覚えてしまうのが確実です。

元のファイルは消えません。 tar は固めたものを新しく作るだけで、材料はそのまま残ります。 gzip が元ファイルを置き換えるのとは違います。

対象が無いと止まります。

$ tar -czf docs.tar.gz nope
tar: nope: Cannot stat: No such file or directory

アーカイブが無いときも同じように言われます。

$ tar -tzf nothing.tar.gz
tar: nothing.tar.gz: Cannot open: No such file or directory

手を動かして覚える

webterm.appこのサイト

learn.webterm.app別のサイト

>_WEBTERM LEARN

WebTerm Learn|1つのコマンドから、使える状態へ

コマンドは単体で覚えるより、実際の作業の流れの中で使うほうが身につきます。順番に積み上げていくコースがあります。

コースを見る

関連するコマンド

gzip / zip / ls / du

よくある質問

czf や xzf は何の略ですか?
`c` は create(作る)、`x` は extract(取り出す)、`t` は list(中身を見る)、`z` は gzip で圧縮、`f` はこの後にファイル名を書く、という意味です。組み合わせを覚えるより、`c` / `x` / `t` のどれかに `zf` を足す、と考えるほうが早いです。
.tar と .tar.gz の違いは何ですか?
`.tar` は固めただけ、`.tar.gz` はそれを gzip で圧縮したものです。`z` を付けると圧縮され、拡張子も `.tar.gz` にするのが慣習です。
展開するとどこに出てきますか?
いまいるディレクトリです。別の場所に出したいときは `-C <ディレクトリ>` を付けます。取り出す前に `-tzf` で中身を見ておくと、散らかりません。
-f はどこに書きますか?
オプションの最後です。`-f` の直後がファイル名として読まれるので、`tar -czf backup.tar.gz src` のように、`f` の次に固めた結果の名前を書きます。
-v は付けたほうがいいですか?
処理したファイルが1行ずつ出るので、大きなディレクトリで進んでいるか確かめたいときには便利です。ふだんは無くて構いません。