前の記事では、> やパイプで、コマンドの結果の行き先を変える方法を見ました。自動化を続けていると、ログや CSV がどんどんたまっていきます。そんなとき、まとめて小さくしておけると便利です。
Linux の世界では、Windows でおなじみの .zip よりも、.tar.gz という形のファイルをよく見かけます。私も最初に project.tar.gz を受け取ったとき、「ダブルクリックで開けない…どうやって中を見るの?」と困りました。
この記事では、tar・gzip・zip の違いと使い分けを、練習用のファイルで実際に試しながら整理していきます。
-
tar(まとめる)とgzip(縮める)の役割の違い -
tarで圧縮する・中身を見る・展開する方法(-czvf・-tzvf・-xzvf) -
zip・unzipの使い方と、Windows とやりとりするときの注意 - 展開するときに、ファイルを上書きしないための確かめ方
-
ls・cd・mkdirなどの基本のコマンドを使える -
aptでソフトを入れられる(zip を入れるときに使います)
まだの方は、前の記事「Linuxのリダイレクトとパイプ|>・>>・|・2>&1 の意味を図で理解【初心者向け】」から読むのがおすすめです。
- 権限:誰が何をしてよいかの決まり。ファイルの場合は「持ち主・グループ・その他の人」ごとに、読む・書く・実行するを決め、これをパーミッションと言います
- パイプ:半角の
|(縦棒)で、前のコマンドの結果(標準出力)を次のコマンドに渡すこと - ログ:プログラムが残す「いつ、何が起きたか」の記録
- apt:Debian・Ubuntu で、ソフトを入れる・更新する・消すための道具
用語で迷ったら、連載のまとめ記事の「よく出てくる用語ミニ辞典」でも確かめられます。
結論:Linux 同士なら tar.gz、Windows に渡すなら zip
| やりたいこと | コマンド |
|---|---|
| フォルダを tar.gz にまとめる | tar -czvf project.tar.gz project |
| tar.gz の中身を見る(展開しない) | tar -tzvf project.tar.gz |
| tar.gz を展開する | tar -xzvf project.tar.gz |
| 展開先を指定する | tar -xzvf project.tar.gz -C restore |
| 1つのファイルを縮める・戻す | gzip ファイル / gunzip ファイル.gz |
| フォルダを zip にまとめる | zip -r project.zip project |
| zip の中身を見る・展開する | unzip -l project.zip / unzip project.zip -d 展開先 |
tar のオプション(=コマンドのうしろに付けて、動きを変える追加の指定)は、次の文字の組み合わせです。
-
c:create(作る) -
t:list(中身を見る) -
x:extract(取り出す) -
z:gzip で縮める・戻す -
v:verbose(処理したファイル名を表示する) -
f:file(そのすぐ後ろにアーカイブのファイル名を書く)
しくみ:tar は「まとめる」、gzip は「縮める」
.tar.gz は、2つの作業を重ねた形です。
-
tarで、たくさんのファイルやフォルダを1つのファイルにまとめる(.tar)。この時点では、大きさはほとんど変わりません -
gzipで、その1つのファイルを縮める(.gz)
tar の z オプションは、この2つを一度にやってくれます。一方、zip は「まとめる」と「縮める」を最初から1つでこなす形式です。
準備:練習用のファイルを作る
練習は ~/linux-practice/archive-test の中で行います。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
mkdir -p ~/linux-practice/archive-test/project/data
cd ~/linux-practice/archive-test
echo "# 練習用のプロジェクト" > project/README.md
echo "date,item,amount" > project/data/sales.csv
echo "2026-08-01,りんご,300" >> project/data/sales.csv
seq 1 10000 > project/data/numbers.txt
ls -R projectここから先の出力例は、Debian 13での実行例です(ユーザー名 kaito・パソコン名 demo のダミー環境)。UbuntuやWSL(=Windows の中で Linux を動かせる、Microsoft のしくみ)では、表示が少し違うことがあります。
(例)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
kaito@demo:~/linux-practice/redirect-test$ mkdir -p ~/linux-practice/archive-test/project/data
kaito@demo:~/linux-practice/redirect-test$ cd ~/linux-practice/archive-test
kaito@demo:~/linux-practice/archive-test$ echo "# 練習用のプロジェクト" > project/README.md
kaito@demo:~/linux-practice/archive-test$ echo "date,item,amount" > project/data/sales.csv
kaito@demo:~/linux-practice/archive-test$ echo "2026-08-01,りんご,300" >> project/data/sales.csv
kaito@demo:~/linux-practice/archive-test$ seq 1 10000 > project/data/numbers.txt
kaito@demo:~/linux-practice/archive-test$ ls -R project
project:
README.md data
project/data:
numbers.txt sales.csvseq 1 10000 は、1 から 10000 までの数を1行ずつ書き出すコマンドです。縮み具合がわかりやすいように、少し大きめのファイルを作っています。
tar:まとめて圧縮する
圧縮する:tar -czvf
- 1
- 2
tar -czvf project.tar.gz project
ls -l(例)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
kaito@demo:~/linux-practice/archive-test$ tar -czvf project.tar.gz project
project/
project/data/
project/data/sales.csv
project/data/numbers.txt
project/README.md
kaito@demo:~/linux-practice/archive-test$ ls -l
total 28
drwxrwxr-x 3 kaito kaito 4096 Nov 1 05:34 project
-rw-rw-r-- 1 kaito kaito 23191 Nov 1 05:34 project.tar.gznumbers.txt(48894 バイト)を含むフォルダが、project.tar.gz では 23191 バイトになりました。
tar -czvf 作るファイル名 まとめたいもの の順番です。逆に書くと、思っていたのと違う名前のファイルができたり、エラーになったりします。打つ前に「f のとなりに .tar.gz の名前があるか」を見る習慣をつけておきましょう。
中身を見る:tar -tzvf
展開する前に、中に何が入っているかを確かめられます。
- 1
tar -tzvf project.tar.gz(例)
- 1
- 2
- 3
- 4
- 5
drwxrwxr-x kaito/kaito 0 2026-11-01 05:34 project/
drwxrwxr-x kaito/kaito 0 2026-11-01 05:34 project/data/
-rw-rw-r-- kaito/kaito 42 2026-11-01 05:34 project/data/sales.csv
-rw-rw-r-- kaito/kaito 48894 2026-11-01 05:34 project/data/numbers.txt
-rw-rw-r-- kaito/kaito 33 2026-11-01 05:34 project/README.mdネットからダウンロードした .tar.gz は、展開する前に必ず中身を見るクセをつけましょう。どのフォルダに、どんなファイルが出てくるかが先にわかります。
一覧で見るのは、いちばん右の名前の頭です。
- 今回のように、全部の行が
project/で始まっている:展開するとprojectフォルダが1つできて、その中に全部入ります。散らからないので安心です - 行ごとにばらばらの名前で始まっている(入れ物のフォルダがない):今いる場所に、ファイルが直接たくさん出てきます。下の
-Cで、空のフォルダの中に展開しましょう -
/や../で始まる名前がある:今いる場所の外に出ようとする、ふつうではないアーカイブです。展開しないでください
左の列は、ls -l と同じ読み方です(権限・持ち主/グループ・大きさ・日時)。
展開する:tar -xzvf と -C
展開先のフォルダを作って、そこに取り出してみます。
- 1
- 2
- 3
mkdir restore
tar -xzvf project.tar.gz -C restore
ls -R restore(例)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
kaito@demo:~/linux-practice/archive-test$ mkdir restore
kaito@demo:~/linux-practice/archive-test$ tar -xzvf project.tar.gz -C restore
project/
project/data/
project/data/sales.csv
project/data/numbers.txt
project/README.md
kaito@demo:~/linux-practice/archive-test$ ls -R restore
restore:
project
restore/project:
README.md data
restore/project/data:
numbers.txt sales.csv-C 展開先 をつけると、指定したフォルダの中に取り出されます。つけないと、今いる場所に取り出されます。
tar は、同じ名前のファイルがあると確認なしで上書きします。今いる場所に project フォルダがある状態で展開すると、中のファイルが古い内容に置きかわってしまうことがあります。また、出どころのわからないアーカイブを sudo(=許可されたユーザーが、コマンドの前につけて、そのコマンドだけを管理者の権限で実行するしくみ)つきで、/ やシステムのフォルダに向けて展開すると、システムのファイルが書きかわってしまうおそれがあります。この記事では試しません。展開する前に -t で中身を見て、-C で空のフォルダを指定しましょう。
gzip:1つのファイルを縮める
gzip は、1つのファイルだけを縮めるコマンドです。大きなログを小さくしたいときに使います。練習用にコピーを作ってから試します。
- 1
- 2
- 3
- 4
cp project/data/numbers.txt numbers.txt
ls -l numbers.txt
gzip numbers.txt
ls -l numbers.txt*(例)
- 1
- 2
- 3
- 4
- 5
- 6
kaito@demo:~/linux-practice/archive-test$ cp project/data/numbers.txt numbers.txt
kaito@demo:~/linux-practice/archive-test$ ls -l numbers.txt
-rw-rw-r-- 1 kaito kaito 48894 Nov 1 05:34 numbers.txt
kaito@demo:~/linux-practice/archive-test$ gzip numbers.txt
kaito@demo:~/linux-practice/archive-test$ ls -l numbers.txt*
-rw-rw-r-- 1 kaito kaito 22632 Nov 1 05:34 numbers.txt.gznumbers.txt がなくなって numbers.txt.gz になり、48894 バイトが 22632 バイト(半分くらい)に縮みました。
gzip は、元のファイルを消して、.gz のファイルに置きかえます。元に戻すには gunzip を使います。
- 1
- 2
gunzip numbers.txt.gz
ls -l numbers.txt*(例)
- 1
- 2
- 3
kaito@demo:~/linux-practice/archive-test$ gunzip numbers.txt.gz
kaito@demo:~/linux-practice/archive-test$ ls -l numbers.txt*
-rw-rw-r-- 1 kaito kaito 48894 Nov 1 05:34 numbers.txt元のファイルも残したいときは、gzip -k numbers.txt のように -k(keep)をつけます。
zip:Windows とやりとりするとき
Windows の人にファイルを渡すときや、Windows から受け取った .zip を開くときは、zip と unzip を使います。まず、入っているか確かめましょう。
- 1
which zip unzip(例)
- 1
kaito@demo:~/linux-practice/archive-test$ which zip unzip今回の Debian 13 では、zip も unzip も最初は入っていなかったので、何も表示されませんでした。Debian 13 には zip と unzip は最初から入っていないので、使う前にインストールが必要です。
何も表示されなかったときは、前に覚えた apt で入れます。
- 1
- 2
sudo apt update
sudo apt install zip unzip(例)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
kaito@demo:~/linux-practice/archive-test$ sudo apt update
Hit:1 http://deb.debian.org/debian trixie InRelease
Hit:2 http://deb.debian.org/debian trixie-updates InRelease
Hit:3 http://deb.debian.org/debian-security trixie-security InRelease
All packages are up to date.
kaito@demo:~/linux-practice/archive-test$ sudo apt install zip unzip
Installing:
unzip zip
Summary:
Upgrading: 0, Installing: 2, Removing: 0, Not Upgrading: 0
Download size: 408 kB
Space needed: 1038 kB / 106 GB available
Get:1 http://deb.debian.org/debian trixie/main amd64 unzip amd64 6.0-29+deb13u1 [173 kB]
Get:2 http://deb.debian.org/debian trixie/main amd64 zip amd64 3.0-15+deb13u1 [235 kB]
Fetched 408 kB in 0s (16.4 MB/s)
Selecting previously unselected package unzip.
(Reading database ... 25854 files and directories currently installed.)
Preparing to unpack .../unzip_6.0-29+deb13u1_amd64.deb ...
Unpacking unzip (6.0-29+deb13u1) ...
Selecting previously unselected package zip.
Preparing to unpack .../zip_3.0-15+deb13u1_amd64.deb ...
Unpacking zip (3.0-15+deb13u1) ...
Setting up unzip (6.0-29+deb13u1) ...
Setting up zip (3.0-15+deb13u1) ...
Processing triggers for man-db (2.13.1-1) ...今回は、頼んだ zip と unzip の2つだけが入る形だったので、[Y/n] の確認は出ずにそのまま入りました(apt の記事と同じです)。すでに入っている場合は、「もう最新のバージョンが入っています」という意味の行が出て、何も変わりません。
zip にまとめる
- 1
- 2
zip -r project.zip project
ls -l project.zip(例)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
kaito@demo:~/linux-practice/archive-test$ zip -r project.zip project
adding: project/ (stored 0%)
adding: project/data/ (stored 0%)
adding: project/data/sales.csv (stored 0%)
adding: project/data/numbers.txt (deflated 54%)
adding: project/README.md (stored 0%)
kaito@demo:~/linux-practice/archive-test$ ls -l project.zip
-rw-rw-r-- 1 kaito kaito 23507 Nov 1 05:34 project.zipdeflated 54% は「54% 縮めた」、stored 0% は「小さすぎるので縮めずにそのまま入れた」という意味です。
フォルダをまとめるときは、-r(中のフォルダもまとめて)をつけます。つけないと、空のフォルダだけが入った zip になってしまいます。
中身を見る・展開する
- 1
- 2
- 3
- 4
unzip -l project.zip
mkdir unzip-test
unzip project.zip -d unzip-test
ls -R unzip-test(例)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
kaito@demo:~/linux-practice/archive-test$ unzip -l project.zip
Archive: project.zip
Length Date Time Name
--------- ---------- ----- ----
0 2026-11-01 05:34 project/
0 2026-11-01 05:34 project/data/
42 2026-11-01 05:34 project/data/sales.csv
48894 2026-11-01 05:34 project/data/numbers.txt
33 2026-11-01 05:34 project/README.md
--------- -------
48969 5 files
kaito@demo:~/linux-practice/archive-test$ mkdir unzip-test
kaito@demo:~/linux-practice/archive-test$ unzip project.zip -d unzip-test
Archive: project.zip
creating: unzip-test/project/
creating: unzip-test/project/data/
extracting: unzip-test/project/data/sales.csv
inflating: unzip-test/project/data/numbers.txt
extracting: unzip-test/project/README.md
kaito@demo:~/linux-practice/archive-test$ ls -R unzip-test
unzip-test:
project
unzip-test/project:
README.md data
unzip-test/project/data:
numbers.txt sales.csv同じ名前があるときは聞いてくれる
unzip は、同じ名前のファイルがあると、上書きしていいか聞いてくれます。今いる場所には project フォルダがあるので、ここで展開してみましょう。
- 1
unzip project.zip(例)
- 1
- 2
- 3
kaito@demo:~/linux-practice/archive-test$ unzip project.zip
Archive: project.zip
replace project/data/sales.csv? [y]es, [n]o, [A]ll, [N]one, [r]ename: N今回、最初に聞かれたのは project/data/sales.csv でした。unzip は zip の中に入っている順番に取り出すので、unzip -l の一覧でいちばん上にあるファイル(ディレクトリはのぞく)から聞いてきます。N を入力して Enter を押すと、何も表示されずに終わり、どのファイルも上書きされませんでした。
ここでは N(None:どれも上書きしない)を押して止めました。n(小文字)だと「このファイルだけ上書きしない」なので、次のファイルについてまた聞かれます。A(All)を押すと、すべてまとめて上書きされるので気をつけましょう。
Windows で日本語の名前のファイルを zip にすると、Linux で展開したときにファイル名が読めない文字になることがあります。Windows と Linux で、ファイル名の文字の扱い方(文字コード)がちがうためです。-O cp932 のように文字コードを指定するオプションが使える unzip もありますが、今回の Debian 13 の unzip(UnZip 6.00)では、unzip -h の一覧に -O が載っていませんでした。Debian の unzip では、-O は使えないものと考えておくのが安全です。困ったときは、下のプロンプトで AI に聞いてみてください。Linux から Windows に渡すときは、ファイル名を英数字にしておくと安心です。
zip と unzip は入れたままでも困りませんが、記事のために入れただけで使わない場合は、sudo apt remove zip unzip で消せます。
🤖 詰まったらAIに聞こう:圧縮ファイルが開けない・文字化けする
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
Linuxの初心者です。圧縮ファイルの展開でつまずいています。
原因として考えられることと、安全に展開する手順を、コマンドの意味つきで教えてください。
今あるファイルを上書きしないやり方でお願いします。
【使っている環境】WSLのUbuntu など
【ファイルの名前と形式】例:project.tar.gz、Windowsから受け取ったzip など
【打ったコマンド】ここに貼る
【表示されたエラーや、文字化けの様子】ここに貼るtar -tzvf や unzip -l の一覧には、ファイル名やフォルダ名がそのまま出ます。APIキー、パスワード、お客さんの名前などがファイル名に入っていないか見直してから貼ってください。APIキーは、Web のサービスを使うときに本人の代わりになる、合言葉のような文字列です。パスワードつきの zip の場合、そのパスワードは AI に貼らないでください。
よくある質問
Q. .tar.xz や .tgz のファイルは、どう展開しますか?
.tgz は .tar.gz の短い書き方なので、この記事と同じ tar -xzvf で展開できます。.tar.xz は縮め方が違いますが、Debian や Ubuntu の tar(GNU tar)は、展開するときに縮め方を自動で見分けてくれるので、tar -xvf ファイル名 のように z を省いても展開できます。展開する前に tar -tvf ファイル名 で中身を見るのも同じです。
Q. 手順書に tar xzvf と、- なしで書かれていました。
tar は昔からの書き方として、最初の - を省いても同じ意味になります。tar xzvf project.tar.gz と tar -xzvf project.tar.gz は同じです。
Q. 圧縮したのに、ほとんど小さくなりませんでした。
写真(.jpg)や動画、もともと圧縮されている .zip などは、すでに縮められているので、tar.gz にしても大きさはあまり変わりません。この記事の numbers.txt のように、同じような文字がくり返されるテキストのファイルほど、よく縮みます。
まとめ
-
tarは「まとめる」、gzipは「縮める」。.tar.gzはその2つを重ねた形 - まとめる
tar -czvf、中身を見るtar -tzvf、取り出すtar -xzvf(-Cで展開先) -
-fのすぐ後ろは作るファイルの名前 -
tarは確認なしで上書きする。展開する前に-tで中身を見る -
gzipは元のファイルを消す。残したいときは-k - Windows とやりとりするなら
zip -rとunzip。上書きの確認ではNで止められる
これで Lv2 はおしまいです。次の記事からは、「command not found」の正体と、PATH・.bashrc・alias など、ターミナルを自分好みに整える方法に進みます。
次に読む記事
- 前の記事:Linuxのリダイレクトとパイプ|>・>>・|・2>&1 の意味を図で理解【初心者向け】
- 次の記事:Linuxの環境変数とPATH|「command not found」の正体と.bashrc・alias
関連する記事
- プロが使う.gitignoreパターン集|現場で効くテンプレ:圧縮ファイルや出力ファイルを、Git に入れないようにしたい方に
- Excel・CSVを毎回手で結合していませんか?Pythonで1分にする方法(重複削除・列名ゆれ対応):たまった CSV をまとめて扱いたい方に
- Pythonで毎日の作業を自動化する入門|ダウンロードフォルダを自動で整理しよう:ファイルの整理そのものを自動化したい方に