アーカイブ形式の変換
ZIP、7Z、TAR.GZ、TAR.BZ2、TAR.XZなど、主要なアーカイブ形式間で変換できます。それぞれの形式には異なる利点があります。ZIPは幅広い互換性、7Zは最大限の圧縮率、TAR系の形式はUnix/Linuxエコシステムへの適合性です。
当ツールは、ファイル構造や権限、メタデータを保持しながら、変換先の形式に応じた適切な圧縮設定でファイルを展開・再パッケージ化します。
アーカイブフォーマット比較
各アーカイブ形式の主な特徴を比較して、用途に合った形式を選びましょう。
| フォーマット | 圧縮率 | プラットフォーム | 最適な用途 |
|---|---|---|---|
| ZIP | 良好(Deflate) | 全プラットフォーム | 汎用的な共有 |
| 7Z | 非常に高い(LZMA2) | 全プラットフォーム | 最大限の圧縮 |
| TAR.GZ | 良好(Gzip) | Unix/Linux/macOS | ソフトウェア配布 |
| TAR.BZ2 | 高め(Bzip2) | Unix/Linux/macOS | 高い圧縮率 |
| TAR.XZ | 非常に高い(LZMA) | Unix/Linux/macOS | 最高の圧縮率、現代的 |
各形式の使い分け
- ZIP - あらゆるOSでの汎用的な共有、メール添付、クロスプラットフォームでの互換性
- 7Z - 最大限の圧縮が必要なとき、大容量ファイルのアーカイブ、ファイルサイズが重要なバックアップ
- TAR.GZ - Linux/Unix向けソフトウェア配布、Webサーバーへのデプロイ、ソースコードパッケージ
- TAR.BZ2 - テキスト中心のアーカイブでgzipより高い圧縮率が欲しいとき、古いUnixシステム
- TAR.XZ - 最新のLinuxディストリビューション、ソフトウェアパッケージの最高圧縮率、新しいシステム
アーカイブフォーマットの技術詳細
アーカイブの変換は、元のアーカイブからファイルを展開し、変換先の形式に再パッケージ化することで行われます。処理の流れは以下の通りです。
- ZIP: PKWARE社が開発。DEFLATEアルゴリズムによる圧縮。個別ファイルへのランダムアクセスが可能。
- 7Z: 7-Zipプロジェクトが開発。LZMA/LZMA2アルゴリズムによる高圧縮。ソリッド圧縮オプション。
- TAR.GZ: tarアーカイブ + gzip圧縮。Unix標準。ストリーミング処理に最適。
- TAR.BZ2: tarアーカイブ + bzip2圧縮。Burrows-Wheeler変換による高い圧縮率。
TARベースの形式(tar.gz、tar.bz2、tar.xz)は、まず(非圧縮の)tarボールを作成してから圧縮を適用します。ZIPと7Zは、アーカイブ内の各ファイルを個別に圧縮します。
アーカイブ変換のベストプラクティス
アーカイブ変換で最適な結果を得るために、以下の指針を参考にしてください。
- 技術に詳しくない相手や、異なるOS間でファイルを共有する場合はZIPを使用する
- ファイルサイズの削減を優先し、受け取る相手が7-Zipを利用できる場合は7Zを選ぶ
- Webサーバーへのデプロイやソフトウェア配布にはTAR.GZを使用する
- 最新のシステムで最高の圧縮率が必要な場合はTAR.XZを検討する
よく使われるアーカイブ変換のシーン
ZIP から 7Z への変換では、内容にまだ圧縮の余地がある場合にアーカイブが小さくなります。当社のテストでは、当社の変換ツールで作成した 7Z が ZIP と比べてソースコードで 60%、プログラムのバイナリで 38%、混在セットで 28% 小さくなった一方、写真や動画はほとんど変わりませんでした。そのため、効果が最も大きいのはプロジェクト、コード、文書のバックアップです。
7ZからZIPへの変換は、幅広い互換性を確保します。7Zは優れた圧縮率を持ちますが、ZIPファイルは追加のソフトウェアなしでWindows、macOS、Linuxで開けます。7-Zipがインストールされていない可能性のある相手とアーカイブを共有する場合、ZIPに変換しておけば確実に中身にアクセスしてもらえます。
TAR.GZからZIPへの変換は、Unix/LinuxとWindowsのエコシステムの橋渡しをします。Linuxサーバーやオープンソースプロジェクト、開発ツールから生成されたTAR.GZアーカイブは、主にZIPファイルを扱いtarユーティリティを持っていないWindowsユーザー向けに変換が必要になることがよくあります。
ZIPからTAR.GZへの変換は、Linuxサーバーへのデプロイに向けたアーカイブの準備に役立ちます。Unix系システム向けのWebアプリケーションやサーバー設定、デプロイパッケージには、ファイル権限を保持しLinuxでのソフトウェア配布の標準となっているTAR.GZ形式が適しています。
アーカイブの圧縮アルゴリズムを理解する
DEFLATE(ZIPで使用)は、高速で互換性が高い一方、圧縮率は中程度です。1990年代から標準として使われており、最大限の圧縮が求められない簡易的なアーカイブ作業に向いています。ほとんどのOSにDEFLATEのサポートが標準搭載されています。
LZMA/LZMA2(7ZとTAR.XZで使用)はDEFLATEより強く圧縮します。当社のテストでは、TAR.XZは混在セットでTAR.GZより7%、ソースコードで28%小さくなり、写真ではほとんど差がありませんでした。その代わり圧縮・展開が遅く、形式に対応したソフトが必要です。LZMAが最も効果を発揮するのはテキスト、コード、繰り返しの多いデータです。
GZIPとBZIP2(TAR.GZ、TAR.BZ2で使用)は、その中間に位置します。GZIPは高速で圧縮率は中程度、BZIP2は速度は劣るもののより高い圧縮率を実現します。どちらもUnixシステムで広く使われており、ソフトウェア配布やログファイルの圧縮によく利用されます。
アーカイブのセキュリティに関する注意点
ZIPの暗号化は時代とともに進化してきました。標準的なZIP暗号化(ZipCrypto)は脆弱とされており、既存のツールで解読される可能性があります。最近のZIPツールはAES-256暗号化に対応しており、強力なパスワードと組み合わせれば高いセキュリティが得られます。7Z形式はファイルの中身とファイル名の両方にAES-256暗号化を標準でサポートしているため、機密性の高いデータには7Zが好まれます。
信頼できない入手元のアーカイブは、展開する前にマルウェアスキャンを行いましょう。悪意のあるアーカイブには、無害に見える名前を装った実行ファイルが含まれていたり、展開ソフトの脆弱性を突くものが含まれていたりすることがあります。アーカイブは隔離したディレクトリに展開し、ファイルを開く前に中身を確認してください。
クロスプラットフォームでのアーカイブ互換性
クロスプラットフォームで使うアーカイブを作成する際は、ファイル名のエンコーディングとパス区切り文字に注意が必要です。ZIPファイルはファイル名を異なる文字セットでエンコードすることがあり、ロケール設定の異なるシステムでは文字化けの原因になります。最近のZIPツールは、汎用性を確保するためにUTF-8を使用しています。TARはUnixのファイル権限やシンボリックリンクを保持しますが、これらはWindowsシステムでは意味のある形で反映されないことがあります。
パスの長さの上限は、OSやファイルシステムによって異なります。Windowsは従来260文字までという制限がありますが、Unix系システムははるかに長いパスを扱えます。深いディレクトリ構造を持つLinux製のアーカイブは、Windowsで完全に展開できないことがあります。複数のプラットフォームをまたいで複雑なアーカイブを扱う場合は、ディレクトリ構造を浅くするか、Windowsの長いパスのサポートを有効にすることを検討してください。
アーカイブ形式から探す
- ZIP Tools — ZIPアーカイブを他の形式に変換
- 7Z Tools — 7-Zipアーカイブを変換
- TAR.GZ Tools — gzip圧縮されたtarアーカイブを変換
- TAR.BZ2 Tools — bzip2圧縮のtarアーカイブを変換
- TAR.XZ Tools — xz圧縮のtarアーカイブを変換
バックアップとアーカイブの戦略
長期保存を目的とする場合は、幅広いツールでサポートされている形式を選びましょう。ZIPは1989年から安定して使われており、今後何十年も読み込める可能性が高い形式です。TAR.GZもUnixシステムで同様に実績があります。7Zは優れた圧縮率を実現しますが、専用ソフトウェアが必要なため、将来アクセスできるように展開ツールも7Zバックアップと一緒に保管しておきましょう。