• 【zip】Linuxでファイルを複数同時に圧縮・解凍する方法

    公開日:2017年11月07日 最終更新日:2022年04月25日

    Linuxでファイルを圧縮、および解凍するzipコマンドを紹介します。
    ファイルサイズを小さくするための圧縮処理は、ダウンロードやメールに添付するファイルの容量を抑えられるだけでなく、サーバーやPCにデータやバックアップを保存する際のリソース削減にも有効です。圧縮処理はビジネスのみならず、今や当たり前のように広く使われています。

    プロエンジニアの無料会員登録はこちら

    1.Linuxの圧縮形式はGUN Zipが主流

    Linuxでの圧縮形式は様々ありますが、GNU Zip形式が主流となっています。
    GNU Zip形式では、圧縮処理としてgzipコマンドがあり、圧縮ファイルの拡張子は「.gz」となります。

    【zip】Linuxでファイルを複数同時に圧縮・解凍する方法フリーランスエンジニア案件情報 | プロエンジニア

    一方、本記事で主に紹介するzip形式は、Windowsでの圧縮処理にも広く使われています。 zip形式はLinuxにおいてはあまり主流ではありませんが、Linuxの環境からWindows環境へデータを移す場合にはzip形式での圧縮を行うと良いでしょう。

    2.Linuxでは複数ファイルはアーカイブしてから圧縮する

    GNU Zip形式のgzipコマンドは、ディレクトリの圧縮に対応していません。
    ディレクトリを含め、いくつかのファイルを一緒に圧縮するには、ファイルをまとめる処理、アーカイブ(tarコマンド)をまず実行します。そして、アーカイブファイルを圧縮(gzipコマンド)する流れになります。

    【zip】Linuxでファイルを複数同時に圧縮・解凍する方法フリーランスエンジニア案件情報 | プロエンジニア

    慣習として、アーカイブファイルの拡張子は「.tar」、アーカイブ後の圧縮ファイルには「.tar.gz」という拡張子が使われます。

    3.zip形式は、アーカイブと圧縮処理を同時に実行

    GNU Zip形式とは異なり、zip形式ではアーカイブと圧縮処理に分かれておらず、アーカイブと圧縮処理を同時に実行することが可能です。

    zip形式で圧縮したファイルの拡張子は「.zip」となるのが一般的で、圧縮にはzipコマンドがあります。

    コマンド 概要
    zip [オプション]
    圧縮ファイル名 圧縮ファイルパス
    圧縮ファイル名で圧縮ファイルを作成する
    zipのオプション 概要
    -r 指定したディレクトリを再帰的に圧縮する
    -q 圧縮したファイル名を表示させない
    -e 圧縮ファイルにパスワードを設定する
    -d 圧縮ファイルの中で指定ファイルを削除する

    zipコマンドでrオプションをつけることで、ディレクトリだけではなく、ディレクトリの中に含まれるファイルも全てまとめて圧縮することができます。(アーカイブ処理と圧縮を一度にすることができます)

    ファイル単体の場合でもrオプションを付けて実行できますので、zipコマンドは常にrオプションをつけた方が良いでしょう。

    【例】zipコマンドのrオプションでディレクトリを圧縮する

    【zip】Linuxでファイルを複数同時に圧縮・解凍する方法フリーランスエンジニア案件情報 | プロエンジニア

    zip -r dir1.zip dir1

    ファイルが5つ存在する(file-1.txt~file-5.txt)ディレクトリdir1を圧縮して、圧縮ファイル名としてdir1.zipを指定しています。
    -rをつけることで、配下にあるファイルも同時にまとめて圧縮することができています。

    上記の例ではzipコマンドの後に圧縮したファイル名が全て列挙されていますが、ファイル名が多い場合などこれらの表示をさせたくない場合には、qオプションを使います。

    【例】zipコマンドのqオプションで圧縮ファイル名を非表示

    【zip】Linuxでファイルを複数同時に圧縮・解凍する方法フリーランスエンジニア案件情報 | プロエンジニア

    zip -rq dir1.zip dir1

    zipコマンドにqオプションを追加することで、圧縮対象のファイル名が表示されなくなります。

    また、圧縮ファイルの中身が知りたい場合は、zipinfoコマンドを用いることで、どのようなファイルが圧縮されているのか、圧縮ファイル中のファイル詳細を確認することができます。

    【例】圧縮ファイルの詳細を表示する

    【zip】Linuxでファイルを複数同時に圧縮・解凍する方法フリーランスエンジニア案件情報 | プロエンジニア

    zipinfo dir1.zip

    「zipinfo 圧縮ファイル名」で詳細を確認できます。

    3.1 パスワードを設定する zip -eオプション

    機密情報や重要なファイルにはパスワードをつけると安心です。
    圧縮ファイルに対してパスワードを設定するには、zipコマンドのeオプションを利用します。

    【例】zipコマンドで圧縮ファイルにパスワードを設定

    【zip】Linuxでファイルを複数同時に圧縮・解凍する方法フリーランスエンジニア案件情報 | プロエンジニア

    zip -r dir1.zip -e dir1

    eオプションを追加することで、設定するパスワードが聞かれます。
    Enter password:で任意のパスワードを設定し、確認のためにもう一度Verify password:で同様のパスワードを設定します。

    eオプションでパスワードを設定すると、展開する際、以下のようにパスワードを聞かれるようになります。

    【zip】Linuxでファイルを複数同時に圧縮・解凍する方法フリーランスエンジニア案件情報 | プロエンジニア

    3.2 特定のファイルをzipファイルから削除する zip -dオプション

    圧縮ファイルの中にある複数のファイルの中から、特定のファイルだけを削除したいオプションがdオプションです。

    圧縮ファイルを展開→一部ファイル削除→再圧縮という工程なくして、任意のファイルのみ削除することができます。

    【zip】Linuxでファイルを複数同時に圧縮・解凍する方法フリーランスエンジニア案件情報 | プロエンジニア

    zip -d dir1.zip dir1/file-4.txt

    dオプションを使って指定したファイルだけを圧縮ファイルから削除しています。
    削除後にzipinfoで中身を見てみると、ファイルが5個あった圧縮ファイル(dir1/file-1.txt~file-5.txt)の中から、file-4.txtだけが削除されているのがわかります。

    4.zip形式の解凍にはunzipコマンド

    zipコマンドで圧縮されたファイルを解凍(展開)するには、unzipコマンドを使います。デフォルトではカレントディレクトリに解凍されます。

    コマンド 概要
    unzip [オプション] 圧縮ファイル名 圧縮ファイル名の圧縮ファイルを解凍する
    unzipのオプション 概要
    -d ディレクトリ名 ディレクトリ名のディレクトリに圧縮ファイルを解凍(展開)する
    -q 展開ファイル名の一覧を表示しない

    【例】圧縮ファイルを解凍するunzipコマンド

    【zip】Linuxでファイルを複数同時に圧縮・解凍する方法フリーランスエンジニア案件情報 | プロエンジニア

    unzip dir1.zip

    圧縮ファイルが展開され、dir1のディレクトリとその配下のファイルが解凍されていることがわかります。

    また、unzipコマンドもzipコマンドと同様、展開したファイル名の一覧を表示させたくない場合は、qオプションを使います。

    【zip】Linuxでファイルを複数同時に圧縮・解凍する方法フリーランスエンジニア案件情報 | プロエンジニア

    解凍先をカレントディレクトリではなく指定したい場合は、dオプションで展開先ディレクトリを指定します。

    【例】dオプションで展開先のパスを指定して、圧縮ファイルを解凍する

    【zip】Linuxでファイルを複数同時に圧縮・解凍する方法フリーランスエンジニア案件情報 | プロエンジニア

    unzip -d testdir dir1.zip

    testdirというディレクトリ配下に、圧縮ファイルを展開しています。
    ここでは圧縮ファイルの中にdir1というディレクトリが含まれていたため、testdir配下へ展開時に、新しくdir1のディレクトリが作成されています。

    最新案件情報をチェック!

    月額単価80万円〜90万円
    勤務地 東京都 港区
    月額単価40万円〜70万円
    勤務地 東京都 港区
    月額単価80万円〜90万円
    勤務地 東京都 港区
    勤務地 フルリモート
    月額単価80万円〜90万円
    勤務地 フルリモート

    フリーランスの方でこのようなお悩みありませんか?

    • 定期的に案件を紹介してほしい
    • 完全フルリモートワークや、週1出勤など、働き方を選びたい
    • 単価交渉など営業周りが苦手なので、誰かに任せたい

    プロエンジニアにお任せください!

    プロエンジニアはほとんどEND直案件!高額単価案件ならお任せください。
    完全フルリモートや、週1出勤など、希望に合わせた働き方ができる案件を多数ご用意しています。
    単価や契約交渉などは弊社キャリアコンサルタントに全てお任せください。

    無料登録して、あなたの希望に合った案件をチェック!

    簡単60秒!無料登録はこちらから

    おすすめ記事

  • ピックアップ

    フリーランス

    【AWS】クラウドエンジニア★APIプラットフォームの構築・運用

    SalesforceやAWS等のクラウドサービスを用いた開発を行っている企業にて、AWSエンジニアとしてご参画い...

    月額単価:80万円〜90万円

    フリーランス

    【Linux】インフラエンジニア★サブスクリプション型(従量課金制)管理システムの構築

    サブスクリプション型(従量課金制)管理システムのサーバー設計・構築を行って頂きます。 主な作業内...

    月額単価:40万円〜70万円

    フリーランス

    【AWS】クラウドエンジニア★航空会社向けクラウドAPIプラットフォームの開発

    Salesforce中心にやAWS等のクラウドサービスを中心に開発を行っている企業にて、航空会社向けクラウドAP...

    月額単価:80万円〜90万円

    フリーランス

    【GCP/AWS/Azure】SREエンジニア★航空機関連サービスの開発

    大手航空会社の開発プロジェクトを請け負っている企業にて、SREポジションを募集しております。 【具...

    月額単価:80万円〜90万円

SCROLL TOP