概要
Linuxシステムを運用・開発する現場において、ファイルやフォルダーの効率的なアーカイブ化と配布は日常的に発生する基本タスクです。Windowsなど異種OSとのデータ共有でも広く用いられるzip形式は、取り回しの良さから高い実用性を誇ります。本稿ではツールの環境構築から、単一・複数ファイルの圧縮、階層構造を保持する再帰処理、任意の抽出ディレクトリ指定、パターン除外、暗号化オプションに至るまで、実務直結のオペレーションをコマンド例とともに体系的に整理します。
zipおよびunzipツールの導入と基本的なアーカイブ生成
Ubuntuの標準環境では、必要に応じてアーカイブ関連ユーティリティをパッケージ管理システムから調達します。リポジトリ情報を更新しつつ、圧縮用・解凍用の両ツールを一括でインストールするには以下のコマンドを実行します。

検証作業を安全に行うため、ホーム領域配下に専用の作業ディレクトリを準備してカレントパスを切り替えます。

アーカイブ対象とする1つ目のテスト用テキストファイルを生成します。

続いて、同時にパッケージングするための2つ目のテキストファイルを用意します。

zipコマンドの基本構文は「zip <出力アーカイブ名> <対象ファイル1> <対象ファイル2> ...」となります。
準備したfile1.txtとfile2.txtをひとまとめにし、archive.zipを作成してみましょう。
⚙️ [実務で役立つ主要オプション一覧]
-r : サブディレクトリおよび内包ファイルを階層ごと再帰的にアーカイブ対象とします。-e : 対話形式で暗号化パスワードを設定し、セキュリティを確保します。-u : アーカイブ内の既存ファイルを比較し、更新または新規追加されたファイルのみを反映します。-m : 圧縮処理が正常終了した後、元のソースファイルを自動的に削除(移動)します。-d : 既存のアーカイブから指定した特定ファイルのみを取り除きます。-q : 処理過程の標準出力を抑制するクワイエット(静粛)モードで動作させます。-0 〜 -9 : 圧縮レベルを無圧縮(0)から最高圧縮(9)までの10段階で指定します。

生成されたarchive.zipのファイルサイズや属性情報をリスト表示で確認します。

ディレクトリ全体の再帰的圧縮(-r)と圧縮効率の最大化(-9)
階層構造を持つディレクトリの圧縮検証を行うため、作業基点となる~/zip_demoへ移動します。

実案件を模したソースコード用とログ用のサブディレクトリ構造を構築します。

アプリケーションの本体コードを想定したスクリプトファイルを配置します。

動作履歴が蓄積される想定のダミーログファイルを生成します。

フォルダー構造を丸ごとアーカイブ化するには-rオプションが不可欠です。projectディレクトリ配下の全リソースを再帰的に走査し、project.zipへ取り込みます。
実行ログを確認すると、ディレクトリ階層を保ったまま各ファイルが順次追加されていることが分かります。

ファイルサイズを極限まで小さくしたい場合は、最高圧縮率を指定する-9オプションと-rを併用します。
処理コスト(CPU時間)は増加しますが、ネットワーク転送量の削減やストレージ節約に効果的です。

デフォルト設定で作成したproject.zipと最大圧縮を適用したproject_max.zipの容量差をファイル一覧から比較検証します。

アーカイブ内部のリスト表示(-l)と展開先フォルダーの個別指定(-d)
解凍・検証作業に入る前に、検証用ルートディレクトリである~/zip_demoに位置していることを確認します。

圧縮ファイルを実際に展開することなく、内部に収録されているファイル一覧や各サイズ、タイムスタンプを素早く確認したい場合はunzip -lを活用します。

カレントディレクトリを散らかさず綺麗に整理して展開するため、専用の出力先ディレクトリを新規作成します。

展開処理時に-dオプションでターゲットパスを指定すれば、任意の格納先へ安全にファイル群を抽出できます。
指定先のパス配下に元々のディレクトリツリーが正確に復元されていることがターミナル出力から確認できます。

抽出先ディレクトリに対して再帰的リスト表示を行い、ファイルとフォルダーが完全に復元されていることを検証します。

特定パターンの除外処理(-x)とパスワード付き暗号化の実務応用
不要ファイルのフィルタリングおよびセキュリティ強化の検証に向けて、作業ディレクトリへ移動します。

大容量ログファイルや一時ファイルを除外してバックアップしたいケースでは、-xオプションにパターン文字列("*.log")を渡します。
実行結果から、ログファイルがスキップされ、必要なソースコード関連のみがproject_no_logs.zipに収録された状態が確認できます。

unzip -lを用いて生成されたproject_no_logs.zipの中身をチェックします。
設計通りapp.logが除外され、余計なデータが含まれていないことが確認できます。

機密性の高いデータを保護する場合は、-Pオプションでパスワードを直接指定して暗号化アーカイブを構築できます(スクリプト自動化などに有用)。
ここではソースディレクトリproject/srcのみを保護対象としてproject_encrypted.zipを生成します。

除外設定を施したアーカイブや暗号化されたアーカイブを含め、作成された各種zipファイルの容量およびステータスを最終確認します。

Ubuntu環境におけるzipおよびunzipコマンドは、単なるファイルの詰め合わせにとどまらず、適切なオプションを組み合わせることで柔軟なアーカイブ制御が可能です。日々のバックアップ業務やデプロイ自動化スクリプトの作成などにぜひ役立ててください。