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

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

    • このページをはてなブックマークに追加

    公開日:2017年11月07日 最終更新日:2019年09月26日

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

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

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

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

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

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

    慣習として、アーカイブファイルの拡張子は「.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 -r dir1.zip dir1

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

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

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

    zip -rq dir1.zip dir1

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

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

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

    zipinfo dir1.zip

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

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

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

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

    zip -r dir1.zip -e dir1

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

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

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

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

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

    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コマンド

    unzip dir1.zip

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

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

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

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

    unzip -d testdir dir1.zip

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

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

    月額単価50万円〜80万円
    勤務地 東京都 千代田区
    月額単価70万円〜
    勤務地 東京都 豊島区
    月額単価60万円〜100万円
    勤務地 東京都 中央区
    • このページをはてなブックマークに追加

    おすすめ記事

  • ピックアップ

    フリーランス

    【LAMP】サーバーエンジニア★女性誌ポータルサイトの開発・運用業務

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

    同社が運営している女性誌ポータルサイトの運営に伴う開発・運用チームにサーバーエンジニアとしてジョ...

    フリーランス

    【AWS】インフラエンジニア ★某グルメ予約サイトのインフラ保守・運用

    月額単価 :70万円〜

    某グルメ予約サイトの開発におけるインフラの保守運用、構築テスト業務になります。主にはAWSを使って保...

    フリーランス

    【AWS】インフラエンジニア ★自社サービスの業務支援

    月額単価 :60万円〜100万円

    【業務内容】 ・自社サービスを展開している企業内のインフラ(サーバ、ミドルウェア)運用や改変、設...

    フリーランス

    【AWS】インフラエンジニア ★大手ECサイトにおけるAWSへの移行業務

    大手ECサイトにおけるインフラエンジニア 現在プライベートクラウド(VM)で稼働中のサービスを、AWS...