zip / unzip コマンド入門 - Windowsとやり取りする圧縮・解凍の基本
この記事でできるようになること
- `zip -r` でファイルやディレクトリを圧縮できる
- `unzip -l` で中身を確認してから安全に展開できる
- 展開先の指定と上書きの確認を使い分けられる
前提知識(先に読むと理解しやすい記事)
この記事でわかること
結論: zipで固めて、unzipで開く。中身確認と日本語ファイル名の文字化け対処まで覚えれば、Windowsとのやり取りで困らない。
zipでファイルやディレクトリファイルをまとめて整理する入れ物。Windows や macOS の「フォルダ」と同じもの。を .zip に圧縮 できますunzipで .zip を解凍 できます(Windows で作られた zip も開けます)- 解凍前に 中身を確認する 安全な手順がわかります
- どこに展開されるか・上書きされるか を先にたしかめられます
対象読者:ファイル作成・基本コマンドを習得し、Windowsとファイルをやり取りしたい方
言葉の整理(先に取りちがえを防ぎます)
- 圧縮:ファイルを小さくすることです。
- 解凍 / 展開:小さくしたものを元に戻すことです。2 つはほぼ同じ意味で使われます。この記事では「解凍」にそろえます。
- アーカイブ / 書庫:いくつかのファイルを 1 つにまとめたもの、またはその形です。
.zipはアーカイブのなかまです。 - カレントディレクトリ:いま自分がいる場所です。
pwdでたしかめられます。なにも指定しないと、ここに解凍されます。 ~(チルダ):自分専用の置き場(ホームディレクトリ)を表す短い書き方です。/home/ユーザー名と同じ意味です。
導入:Windowsから届いたzipファイル
結論: WindowsはZIP形式が標準。Linux側もzip / unzipを使えば、お互いに圧縮ファイルを送り合える。
report.zip というファイルをもらいました。Linux で開けますか。.zip 形式。Linux では unzip コマンドで開いて、zip コマンドで作れるんだ。tar とは違うのですか。tar(.tar.gz)は Linux 同士でよく使う形式。.zip は Windows が標準で開ける のが強み。だから「Windows の人とやり取りするなら zip」と覚えておくといいよ。1. そもそも zip / unzip とは?tar との違いは?
結論: zipは圧縮とまとめを1つで行う形式。Windowsが標準対応するため、相手がWindowsならzipが無難。
zip と tar、どちらを使えばいいか迷います。| 形式 | 得意な場面 | 備考 |
|---|---|---|
.zip |
Windowsとやり取りする | Windowsが標準で開ける |
.tar.gz |
Linux / Mac 同士 | 権限や記号を正確に保てる |
迷ったらこれ:相手が Windows なら zip、相手が Linux / Mac なら tar.gz です。最初はそれだけ覚えれば十分です。
zip は「まとめる」と「圧縮する」を 1 つのコマンドでやってくれる。tar は本来「まとめるだけ」で、圧縮は gzip と組み合わせる。この違いは、最初は気にしなくて大丈夫だよ。2. zip / unzip をインストールする
結論: Ubuntuでは初期状態でzip / unzipが入っていないことがある。
sudo apt install zip unzipで導入する。
unzip: command not found と出ました。$ sudo apt install zip unzip
zip と unzip、両方まとめて入れるのですね。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% とは何ですか。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でべつのディレクトリに出しなおしてください zipとunzipは本サイトの仮想ターミナル入力したコマンドを解釈してコンピュータに実行させる対話プログラム。では動きません。実行は自分のパソコンのターミナルで行います- 練習は 3 章で作った
~/zip-practiceの中だけで行ってください。大事なファイルのある場所では練習しないでください
たずねられずに動かしたいときは、次の 2 つを使い分けます。まず安全な方から覚えてください。
# 安全側:たずねずに、もとからあるファイルを残す(上書きしない) $ unzip -n report.zip # 危険側:たずねずに全部上書きする $ unzip -o report.zip
-o は確認を一切しません。中身を見ずに -o を使うと、同じ名前のファイルがだまって消えます。-o を使う前に、必ず unzip -l で中身をたしかめてください。迷ったら -n か -d を使ってください。
5. 解凍前に中身を確認する
結論:
unzip -l 名前.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で正しく展開できる。
\203t\202@... のような文字になっていました。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 章で作った ~/zip-practice の中で試します。今いる場所を pwd でたしかめてから始めてください。
$ pwd
/home/user/zip-practice
課題1:ディレクトリを圧縮しよう
やること:mydata というディレクトリを作って中にファイルを置き、mydata.zip に圧縮しよう。
ヒント 1(方向づけ)を見る
ディレクトリを固めるときは、「中身も全部入れる」という合図が要ります。これを忘れると、からっぽに近い zip ができます。
ヒント 2(コマンド名)を見る
mkdir と touch で用意し、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 の中の階層はそのまま再現されます。
よくあるミスと対処法
結論: -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:展開したらカレントが散らかった
unzip は何も言わないと今いるところに広げるからね。次からは unzip xxx.zip -d 展開先/ で専用のところに出そう。先に unzip -l でいくつ入っているかを見るのもおすすめだよ。ミス4:日本語ファイル名が文字化けする
unzip -O CP932 xxx.zip で直ることが多いよ。Windows が日本語の名前を CP932 でしまっているのが理由だね。今日の 3 行まとめ
結論: zip -rで固め、unzip -lで中を見て、unzip -dで安全に展開する。
- ディレクトリを固めるときは
zip -rを使います。作ったらunzip -lで中身をかぞえます - 解凍は、なにも指定しないと今いる場所に広がります。
unzip -d 展開先/で出す場所をきめます - 同じ名前があると
unzipはたずねてきます。迷ったらNで残し、べつの場所に出しなおします
コピペ用の型
# 作る(ディレクトリは -r 必須) zip -r archive.zip dir/ # 中身を見る(展開前に確認) unzip -l archive.zip # 開く(散らからない) unzip archive.zip -d 展開先/ # 文字化け(Ubuntu / Debian) unzip -O CP932 windows.zip