ZIPをオンラインでTAR.GZに変換
ZIPアーカイブをUnix/Linux互換のTAR.GZ形式に変換します。TAR.GZ(.tgzとも呼ばれます)はUnixの世界で標準的なアーカイブ形式で、ソフトウェア配布、システムバックアップ、サーバー展開によく使われます。
本ツールはZIPの内容を展開し、GZIP圧縮を使ったTARアーカイブに再構成します。変換の過程で、すべてのファイル、フォルダ、ディレクトリ構成は保持されます。
ZIPをTAR.GZに変換する理由
- Linux/Unix互換性 — TAR.GZはUnixシステムのネイティブ形式で標準対応
- 権限の保持 — TARはUnixのファイル権限や所有者属性を維持
- サーバー展開 — Linuxサーバーへのアプリケーション展開に最適な形式
- ソフトウェア配布 — オープンソースプロジェクトのリリースで標準的に使用される形式
- パッケージ管理 — 多くのパッケージマネージャーがTAR.GZ形式を想定
TAR.GZ形式について
TAR.GZは2つのユーティリティを組み合わせたものです。複数ファイルを1つのアーカイブにまとめるTAR(Tape Archive)と、圧縮を行うGZIPです。TARは1979年にUnixシステム向けに作られ、権限、タイムスタンプ、シンボリックリンクといったファイルのメタデータを保持することに優れています。GZIPはDEFLATEアルゴリズムによる効率的な圧縮を加えます。
アーカイブ化と圧縮を一体で行うZIPとは異なり、TAR.GZはこれらの役割を分離しています。この設計により、同じTARアーカイブに対して異なる圧縮方式(GZIP、BZIP2、XZ)を選べます。
よくある用途
- Web展開 — サイトのファイルをLinuxホスティングサーバーにアップロード
- コード配布 — Unix開発者とソースコードを共有
- バックアップ転送 — WindowsとLinuxのシステム間でバックアップを移動
- Dockerコンテキスト — コンテナ化のためのビルドコンテキストを準備
変換の仕組み
ZIPをTAR.GZに変換する際は、ZIPアーカイブの内容を展開し、GZIP圧縮を施したTARコンテナに再構成します。TAR形式はファイルをメタデータヘッダー付きで順番に格納し、その後GZIPがストリーム全体をDEFLATEアルゴリズム(ZIPが個々のファイルに使うのと同じアルゴリズム)で圧縮します。
重要な違いは、TAR.GZがアーカイブ全体を1つのストリームとして圧縮するのに対し、ZIPは各ファイルを個別に圧縮する点です。これによりTAR.GZはファイル間の重複を見つけられるため、似たファイルが多いアーカイブではわずかに高い圧縮率を実現できる場合があります。
TAR.GZファイルの構造
TAR.GZファイルは実際には2層構造です。すべてのファイルとディレクトリを含むTARアーカイブが、GZIP圧縮で包まれています。TARはファイル名、サイズ、権限、タイムスタンプを含む512バイトのヘッダーを付けてファイルを順に格納し、GZIPがこのストリーム全体をDEFLATEアルゴリズムで圧縮します。
この2層構造により、GZIPが個々のファイルを独立に圧縮するのではなく、すべてのファイルにまたがる重複を見つけられるため、似たファイルが多いアーカイブではTAR.GZがZIPより高い圧縮率を実現できます。ただし、個々のファイルにアクセスするにはアーカイブの先頭から展開する必要があります。
デプロイのシナリオ
Web開発者は、Linuxホスティングへのデプロイ時にZIPをTAR.GZに変換することがよくあります。Windows上でローカルにZIPを作成し、TAR.GZに変換したうえで、標準的なUnixコマンドでサーバーにアップロードして展開します。展開時に設定されるファイル権限により、Webサーバーがコンテンツを正しく読み取り、スクリプトを正常に実行できます。
Dockerのビルドでは、ソースアーカイブをTAR.GZに変換することでDockerfile内のCOPY操作が簡単になります。多くのCI/CDパイプラインはTAR.GZ形式の成果物を想定しています。Windowsのビルドシステムで作成したZIPアーカイブをTAR.GZに変換すれば、Linuxベースのデプロイ基盤とスムーズに連携できます。
クロスプラットフォームの互換性
TAR.GZは、Linux、macOS、BSD、SolarisなどUnix系システム全般で標準的にサポートされています。tarとgzipのユーティリティは、これらのプラットフォームのほぼすべてにあらかじめインストールされています。WindowsユーザーはWindows 10/11の標準ツール、それ以前のバージョンでは7-ZipやWinRARを使ってTAR.GZファイルを展開できます。
クロスプラットフォームのプロジェクトでは、配布物としてZIP(Windowsユーザー向け)とTAR.GZ(Unixユーザー向け)の両方を用意することを検討してください。これにより、すべてのユーザーが追加ソフトなしに、それぞれの環境に合ったツールでファイルを利用できます。
サーバー管理での用途
システム管理者は、設定ファイルのバックアップ、ログアーカイブ、アプリケーション展開でTAR.GZをよく利用します。この形式は、サーバーの正常な動作に欠かせないファイル権限(rwx)、所有者情報(ユーザー/グループ)、特殊なファイル種別(シンボリックリンク、デバイスファイル)といった重要なUnix属性を保持します。
WebアプリケーションをLinuxサーバーに展開する際、TAR.GZを使えば実行可能なスクリプトの権限や設定ファイルの所有者情報を正しく保てます。これにより、展開後のファイル権限が誤って設定されアプリケーションが動作しなくなるといった、よくあるデプロイの問題を防げます。
関連ツール
- TAR.GZからZIPへ — ZIP形式に戻す
- ZIPから7Zへ — より高い圧縮率のために変換
- ZIPからTAR.BZ2へ — BZIP2圧縮を使うTAR