zip / unzip コマンド入門 - Windowsとやり取りする圧縮・解凍の基本

zip / unzip コマンド入門 - Windowsとやり取りする圧縮・解凍の基本

この記事でできるようになること

  • `zip -r` でファイルやディレクトリを圧縮できる
  • `unzip -l` で中身を確認してから安全に展開できる
  • 展開先の指定と上書きの確認を使い分けられる

前提知識(先に読むと理解しやすい記事)

この記事でわかること

結論: zipで固めて、unzipで開く。中身確認と日本語ファイル名の文字化け対処まで覚えれば、Windowsとのやり取りで困らない。

対象読者:ファイル作成・基本コマンドを習得し、Windowsとファイルをやり取りしたい方

言葉の整理(先に取りちがえを防ぎます)

  • 圧縮:ファイルを小さくすることです。
  • 解凍 / 展開:小さくしたものを元に戻すことです。2 つはほぼ同じ意味で使われます。この記事では「解凍」にそろえます。
  • アーカイブ / 書庫:いくつかのファイルを 1 つにまとめたもの、またはその形です。.zip はアーカイブのなかまです。
  • カレントディレクトリ:いま自分がいる場所です。pwd でたしかめられます。なにも指定しないと、ここに解凍されます。
  • ~(チルダ):自分専用の置き場(ホームディレクトリ)を表す短い書き方です。/home/ユーザー名 と同じ意味です。

導入:Windowsから届いたzipファイル

結論: WindowsはZIP形式が標準。Linux側もzip / unzipを使えば、お互いに圧縮ファイルを送り合える。

リナ: ライニー先輩、Windows を使っている人から report.zip というファイルをもらいました。Linux で開けますか。
ライニー先輩: もちろん開けるよ。Windows で「右クリック → 圧縮」して作るのが、まさにこの .zip 形式。Linux では unzip コマンドで開いて、zip コマンドで作れるんだ。
リナ: 前に習った tar とは違うのですか。
ライニー先輩: いい質問。tar.tar.gz)は Linux 同士でよく使う形式。.zipWindows が標準で開ける のが強み。だから「Windows の人とやり取りするなら zip」と覚えておくといいよ。

1. そもそも zip / unzip とは?tar との違いは?

結論: zipは圧縮とまとめを1つで行う形式。Windowsが標準対応するため、相手がWindowsならzipが無難。

リナ: ziptar、どちらを使えばいいか迷います。
ライニー先輩: 2 つの基準で選べばいいよ。
形式 得意な場面 備考
.zip Windowsとやり取りする Windowsが標準で開ける
.tar.gz Linux / Mac 同士 権限や記号を正確に保てる

迷ったらこれ:相手が Windows なら zip、相手が Linux / Mac なら tar.gz です。最初はそれだけ覚えれば十分です。

リナ: 相手の OS で選べばいいのですね。
ライニー先輩: そう。ちなみに zip は「まとめる」と「圧縮する」を 1 つのコマンドでやってくれる。tar は本来「まとめるだけ」で、圧縮は gzip と組み合わせる。この違いは、最初は気にしなくて大丈夫だよ。

2. zip / unzip をインストールする

結論: Ubuntuでは初期状態でzip / unzipが入っていないことがある。sudo apt install zip unzipで導入する。

リナ: さっそく使おうとしたら unzip: command not found と出ました。
ライニー先輩: あるある。Ubuntu だと最初は入っていないことがあるんだ。一度だけインストールすれば大丈夫。
$ sudo apt install zip unzip
リナ: zipunzip、両方まとめて入れるのですね。
ライニー先輩: そう。zip(作る側)と unzip(開く側)は別パッケージだから、両方入れておくと安心だよ。入っているか確認したいときは which を使おう。
$ which zip unzip
/usr/bin/zip
/usr/bin/unzip

2 行とも出れば両方入っています。1 行しか出なければ、出ていない方がまだ入っていません。

3. zip で圧縮する

結論: ファイルはzip 名前.zip ファイル、ディレクトリは-rを付けてzip -r 名前.zip ディレクトリで固める。

ライニー先輩: ここから先はファイルを作ったり上書きしたりする。まず練習用の場所と、練習用のファイルを用意しよう。
# 練習用ディレクトリを作って移動する
$ mkdir -p ~/zip-practice
$ cd ~/zip-practice

# 練習用ファイルを作る
$ echo "id,name" > data.csv
$ echo "メモ" > memo.txt

この記事の例は、すべてこの ~/zip-practice の中で実行します。こうすれば、もとからあるファイルを巻きこみません。

3-1. ファイルをまとめて圧縮

$ zip report.zip data.csv memo.txt
  adding: data.csv (deflated 62%)
  adding: memo.txt (deflated 20%)
リナ: deflated 62% とは何ですか。
ライニー先輩: 「62% 小さくなった」という意味だよ。zip は圧縮率も教えてくれる。最初に書く report.zip作られるファイル名、その後ろが 詰め込むファイル だ。

どこに作られるか・すでにある zip はどうなるか

  • report.zipいま自分がいるディレクトリ に作られます。pwd でたしかめられます
  • 同じ名前の zip がすでにあると、zipその中に足したり書きかえたり します。作り直しにはなりません
  • 中身を入れかえたいときは、先に古い zip を消すか、べつの名前を付けてください

3-2. ディレクトリを丸ごと圧縮(-r が必須)

$ zip -r project.zip project/

ここが最大の注意点:ディレクトリを圧縮するときは -r(recursive = 中身も全部)が必須です。-r を付け忘れると、中身が入らず空に近い zip ができます。

リナ: 先輩、zip backup.zip myfolder でバックアップを作って、元のフォルダを消しました。あとで開いたら、中身が入っていませんでした。
ライニー先輩: -r を付けていないね。ディレクトリは zip -r backup.zip myfolder/ で固める。
リナ: えっ。コマンドは成功したように見えたのに、中身は空だったのですか。
ライニー先輩: そう。だからバックアップを作ったら、消す前に unzip -l で中身を数える。この確認を挟めば、消してから気づく事故は起きないよ。
リナ: 作って終わりではなく、中を見てから消す。順番が大事なんですね。
リナ: tar のときも「ディレクトリは特別扱い」でしたね。
ライニー先輩: そう、よく覚えていたね。zip では -r がその役割。ディレクトリを固めるときは反射的に -r を付ける、と体で覚えよう。

4. unzip で解凍する

結論: unzip 名前.zipでカレントディレクトリに展開。-dで展開先を指定すれば散らからず安全。

4-1. カレントディレクトリに展開(基本)

$ unzip report.zip
Archive:  report.zip
  inflating: data.csv
  inflating: memo.txt
リナ: inflating は「膨らませる」、つまり解凍中ということですね。
ライニー先輩: その通り。圧縮が deflate(しぼませる)、解凍が inflate(膨らませる)。対になっているんだ。

4-2. 展開先を指定する(-d で事故防止)

$ unzip report.zip -d ~/work/report

散らかり防止のコツunzip は何も指定しないと 今いる場所 にファイルをばらまきます。中身が多い zip は、-d で専用ディレクトリを指定すると安全です。指定したディレクトリが無ければ自動で作ってくれます。zip の中にディレクトリが入っていれば、-d で指定した場所の下にそのディレクトリが作られます。

4-3. 同じ名前のファイルがあったら

上書きの先回り

unzip は同じ名前のファイルを見つけると、その場でたずねてきます

replace data.csv? [y]es, [n]o, [A]ll, [N]one, [r]ename:
  • y は 1 つだけ上書き、Aすべて上書き します
  • n は 1 つだけ残す、Nすべて残す(上書きしない)です
  • r はべつの名前を付けて展開します
  • 上書きされた中身は元に戻せません。ゴミ箱にも残りません
  • 迷ったら N をえらび、-d でべつのディレクトリに出しなおしてください
  • zipunzip は本サイトの仮想ターミナル入力したコマンドを解釈してコンピュータに実行させる対話プログラム。では動きません。実行は自分のパソコンのターミナルで行います
  • 練習は 3 章で作った ~/zip-practice の中だけで行ってください。大事なファイルのある場所では練習しないでください

たずねられずに動かしたいときは、次の 2 つを使い分けます。まず安全な方から覚えてください。

# 安全側:たずねずに、もとからあるファイルを残す(上書きしない)
$ unzip -n report.zip

# 危険側:たずねずに全部上書きする
$ unzip -o report.zip

-o は確認を一切しません。中身を見ずに -o を使うと、同じ名前のファイルがだまって消えます。-o を使う前に、必ず unzip -l で中身をたしかめてください。迷ったら -n-d を使ってください。

5. 解凍前に中身を確認する

結論: unzip -l 名前.zipで展開せずに中身一覧を確認できる。見知らぬzipは展開前に必ず中身を見る。

リナ: もらった zip を、いきなり開くのは少し怖いです。
ライニー先輩: いい感覚だね。-l(list)を付ければ、展開せずに中身の一覧だけ 見られるよ。
$ unzip -l report.zip
Archive:  report.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
     1024  2026-06-05 10:00   data.csv
      256  2026-06-05 10:00   memo.txt
---------                     -------
     1280                     2 files

Length はファイルの大きさ(バイト)です。Name が中に入っているファイル名です。

安全のために:知らない相手からの zip は、必ず unzip -l で中身を確認してから展開してください。/etc/... のような変なパスファイルやディレクトリの場所を表す文字列。や、見覚えのないファイルが無いかを見る習慣が事故を防ぎます。

6. 日本語ファイル名が文字化けしたら

結論: Windows製zipの日本語名が文字化けしたら、Ubuntuではunzip -O CP932 名前.zipで正しく展開できる。

リナ: Windows の人からもらった zip を開いたら、ファイル名が \203t\202@... のような文字になっていました。
ライニー先輩: それは Windows とのやり取りで一番ハマるところ。Windows は日本語ファイル名を CP932(Shift-JIS 系の文字コード) で zip に保存することがある。Linux の UTF-8 とずれるので文字化けするんだ。

Ubuntu や Debian の unzip には、文字コードを指定する -O オプションがあります。

$ unzip -O CP932 windows.zip

なぜ直るのか-O CP932 は「この zip のファイル名は CP932 で書かれている」と unzip に教えるオプションです。これで Linux 側が正しく UTF-8 に変換し、日本語ファイル名がそのまま表示されます。展開前の確認にも使えます(unzip -O CP932 -l windows.zip)。

リナ: -O CP932 を足すだけで直りました。
ライニー先輩: -O は Ubuntu / Debian の unzip に入っている便利オプション。環境によっては無いこともあるけれど、Windows とやり取りするなら覚えておいて損はないよ。

7. パスワード付きzipを扱う

結論: zip -eで暗号化zipを作り、解凍時はunzipがパスワードを尋ねる。zipの暗号は強くないため過信しない。

7-1. パスワードを付けて圧縮

$ zip -e secret.zip data.csv
Enter password:
Verify password:
  adding: data.csv (deflated 62%)

7-2. パスワード付きzipを解凍

$ unzip secret.zip

パスワードを尋ねられます。入力すると展開されます。

過信は禁物:従来の zip 暗号は強度が高くありません。本当に機密性が必要なファイルは、zip のパスワードだけに頼らないでください。暗号化ツールや安全な転送経路を検討しましょう。なお、パスワードを忘れると中身は開けなくなります。控えを安全な場所に残してください。

ミニ課題で手を動かそう

結論: 圧縮 → 中身確認 → 展開先指定で解凍、の一連の流れを自分の手で通して定着させる。

ライニー先輩: じゃあ、今日の流れを通しでやってみよう。「固める → 中を見る → 安全に開く」の 3 ステップだよ。

3 章で作った ~/zip-practice の中で試します。今いる場所を pwd でたしかめてから始めてください。

$ pwd
/home/user/zip-practice

課題1:ディレクトリを圧縮しよう

やることmydata というディレクトリを作って中にファイルを置き、mydata.zip に圧縮しよう。

ヒント 1(方向づけ)を見る

ディレクトリを固めるときは、「中身も全部入れる」という合図が要ります。これを忘れると、からっぽに近い zip ができます。

ヒント 2(コマンド名)を見る

mkdirtouch で用意し、zip -r で固めます。

答えを見る
$ mkdir mydata
$ touch mydata/a.txt mydata/b.txt
$ zip -r mydata.zip mydata/
  adding: mydata/ (stored 0%)
  adding: mydata/a.txt (stored 0%)
  adding: mydata/b.txt (stored 0%)

adding: の行に 2 つのファイルが出ていれば成功です。並ぶ順番は環境によって変わります。

課題2:中身を確認してから展開しよう

やること:作った mydata.zip の中身を一覧表示し、extract というディレクトリを展開先に指定して解凍しよう。

ヒント 1(方向づけ)を見る

まず、開かずに中身だけを見ます。次に、今いる場所ではなくべつの場所に出します。

ヒント 2(コマンド名)を見る

unzip -l で確認し、unzip -d で展開先を指定します。

答えを見る
$ unzip -l mydata.zip
$ unzip mydata.zip -d extract
$ ls extract/mydata
a.txt  b.txt

extract は無ければ自動で作られます。中身は extract/mydata/ の下に出ます。課題 1 の adding: mydata/a.txt のとおり、zip には mydata/ というディレクトリ名ごと入っているためです。-d は「どこに広げるか」を決めるもので、zip の中の階層はそのまま再現されます。

リナ: 「固める → 中を見る → 開く」、できました。この流れなら安心です。
ライニー先輩: 完璧。この 3 ステップを習慣にすれば、どんな zip が来ても落ち着いて対応できるよ。

よくあるミスと対処法

結論: -r忘れ・command not found・展開先散らかり・文字化けの4つが定番。原因と対処をセットで押さえる。

ミス1:ディレクトリを圧縮したのに中身が空

リナ: zip backup.zip myfolder とやったのに、中身がほとんど入っていませんでした。
ライニー先輩: -r の付け忘れだね。ディレクトリは zip -r backup.zip myfolder/ で固める。作ったら unzip -l で中を見ておこう。

ミス2:unzip: command not found

リナ: unzip と打ったら command not found でした。
ライニー先輩: パッケージがまだ入っていないね。sudo apt install unzip で入れよう。zip を使うなら zip のパッケージも別に要るよ。

ミス3:展開したらカレントが散らかった

リナ: たくさん入った zip を開いたら、今いるところがファイルだらけになりました。
ライニー先輩: unzip は何も言わないと今いるところに広げるからね。次からは unzip xxx.zip -d 展開先/ で専用のところに出そう。先に unzip -l でいくつ入っているかを見るのもおすすめだよ。

ミス4:日本語ファイル名が文字化けする

リナ: Windows で作られた zip のファイル名が文字化けします。
ライニー先輩: Ubuntu / Debian なら unzip -O CP932 xxx.zip で直ることが多いよ。Windows が日本語の名前を CP932 でしまっているのが理由だね。

今日の 3 行まとめ

結論: zip -rで固め、unzip -lで中を見て、unzip -dで安全に展開する。

  1. ディレクトリを固めるときは zip -r を使います。作ったら unzip -l で中身をかぞえます
  2. 解凍は、なにも指定しないと今いる場所に広がります。unzip -d 展開先/ で出す場所をきめます
  3. 同じ名前があると unzip はたずねてきます。迷ったら N で残し、べつの場所に出しなおします

コピペ用の型

# 作る(ディレクトリは -r 必須)
zip -r archive.zip dir/

# 中身を見る(展開前に確認)
unzip -l archive.zip

# 開く(散らからない)
unzip archive.zip -d 展開先/

# 文字化け(Ubuntu / Debian)
unzip -O CP932 windows.zip

次に読む

この記事を共有

次の一手