Linuxのコマンドには、zip形式でファイルを圧縮することができる「zip」コマンドというものがあります。zip形式はLinuxだけでなくWindowsやMacでも使用されているため、OS間の仕様の違いに左右されずに使うことができるという点が大きなメリットです。
開発の現場ではファイルのやりとりや大きなデータが入っているファイルの転送、保存のためにzip形式に圧縮するということが多々あります。Linuxで圧縮したzipファイルをWindows/Macで展開することが可能なため、zip形式でのファイルの圧縮を使いこなすのは必須といえます。
そこで今回は、Linuxでのzipコマンドの使い方について解説をしていきたいと思います。
zipコマンドとは?
「zip」コマンドは、引数に指定したファイルやディレクトリを圧縮してzipファイルを作成するためのコマンドです。
以下のように記述してコマンドを使用します。
【基本構文】
$ zip <圧縮ファイル名.zip> <圧縮対象ファイル/ディレクトリ名>
対象ファイルには、複数のファイルやディレクトリを指定して圧縮することもできます。
他にも、コマンドに特定のオプションを付けて記述することで、パスワード保護付きのzipファイルを作成したり、既に作成済みのzipファイルの中身を追加・削除したりなど、様々な操作を行うことができます。
また、「/tmp/sample/test.zip」といったように、ファイル名とパスを合わせて記述することで、カレントディレクトリとは異なる場所にファイルを作成することもできます。
zipコマンドでファイルをZIP形式に圧縮する
zipコマンドの具体的な使い方について、サンプルを交えながら見ていきましょう。
1つのファイルを圧縮する
まずは、もっとも基本的な構文として、1つのファイルを圧縮する例を見てみましょう。
ここでは、「/tmp/sample」ディレクトリ下に存在する「sampleFile_01.txt」というファイルを指定して、「test」という名前のzipファイルを作成したものとします。
【サンプルコマンド】
$ zip test.zip sampleFile_01.txt
adding: sampleFile_01.txt (deflated 86%)
コマンドを実行する際は、まず対象のディレクトリまで「cd」コマンドで移動してから実行してください。
「test.zip」というファイルが無事に作成されていれば成功です。
複数のファイルを圧縮する
複数のファイルをまとめて圧縮する場合は、以下のように対象のファイルを続けて記述します。
【サンプルコマンド】
$ zip test.zip sampleFile_01.txt sampleFile_02.txt
adding: sampleFile_01.txt (deflated 86%)
adding: sampleFile_02.txt (deflated 86%)
ファイル名の一部が共通している場合には、ワイルドカード(*)を使用して記述することもできます。
【ワイルドカードの使用例】
$ zip test.zip sampleFile*
圧縮したファイルをunzipコマンドで解凍する
コマンドを使用して圧縮ファイルを解凍する場合は、「unzip」コマンドを使用します。
unzipコマンドの基本構文は以下の通りです。
【基本構文】
$unzip 圧縮ファイル名.zip
例えば、先ほどの例で作成した「test.zip」ファイルを解凍する場合は、次のように記述します。
【サンプルコマンド】
$ unzip test.zip
Archive: test.zip
inflating: sampleFile_01.txt
inflating: sampleFile_02.txt
zipコマンドのオプションと機能
zipコマンドでは、様々なオプションを使用することができます。
主なオプションの一覧を、以下にまとめてみました。
オプション | 省略コマンド | 説明 |
---|---|---|
--freshen |
-f |
変更があったファイルの更新 |
--update |
-u |
新規ファイルの追加、もしくは変更があったファイルの更新 |
--delete |
-d |
指定したファイルをzipファイルから削除 |
--move |
-m |
元のファイルを削除しzipファイルに移動 |
--recurse-paths |
-r |
ディレクトリ内のファイルを再帰的に処理 |
--encrypt |
-e |
パスワードを付けてzipファイルを作成 |
-@ |
処理対象のファイル名を標準入力から読み込む |
この中から、いくつかのオプションについて具体的に解説をしていきたいと思います。
-r: ディレクトリ(フォルダ)ごと圧縮する
ファイルをディレクトリごと圧縮したい場合は、「-r」オプションを使用してコマンドを実行します。
【サンプルコマンド】
$ zip -r test.zip sampleDir
adding: sampleDir/ (stored 0%)
adding: sampleDir/sampleFile_01.txt (deflated 86%)
オプションを付けずに圧縮すると、ディレクトリ内のファイルが圧縮されず空のディレクトリのみとなってしまうので、注意が必要です。
-q: 処理内容を表示しない
“ディレクトリ内のファイルの数が多い”などの理由で、圧縮内容を出力したくない場合には、「-q」オプションを使用すると表示を省略することができます。
【サンプルコマンド】
$ zip -q test.zip sampleFile_01.txt
$
これまでの使用例では圧縮率などの出力結果が表示されていましたが、ここでは「-q」オプションを使用することでそれらの表示なしで圧縮されました。
-e: 圧縮したファイルにパスワードを設定する
パスワードを付けてzipファイルを作成したい場合は、「-e」オプションを使用してコマンドを実行します。
【サンプルコマンド】
$ zip -e test.zip sampleFile_01.txt
Enter password:
Verify password:
adding: sampleFile_01.txt (deflated 86%)
「Enter password」はパスワードの設定、「Verify password」は入力内容の再確認となりますので、どちらも同じパスワードを入力してください。入力内容は画面に表示されませんので注意が必要です。
zipファイルを解凍する際に、ここで設定したパスワードが要求されます。
まとめ
今回はLinuxでのzipコマンドによる圧縮/解凍について解説しました。
zip形式でのファイルの圧縮はいろんな場面で役立ちますので、ぜひこの記事を参考にして使い方を覚えましょう!
Linuxの勉強方法は?
書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。
ただ、Linuxに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。
プログラミングスクールならテックマニアがおすすめ!

ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。
<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~
このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。