GZ を 7Z に変換 — 2 段階を 1 つのアーカイブに

GZ を 7Z にする変換は、重なった 2 つの形式を 1 つにまとめます。tar.gz はファイル名を運ぶ TAR を、何も運ばない gzip のストリームで包んだもので、だから中身に届くには 2 回展開する必要があります。7Z は展開せずに一覧できる目次を持つ 1 つの入れ物で、中身はたいてい少し小さくなります。

  • 処理される場所 当サイトのサーバー上です。この処理に必要なソフトウェアは、ブラウザーでは動かせません。
  • 可逆 何も捨てられません。7ZはGZが持っていたものをそのまま保持します。
  • ファイルサイズの上限 1ファイルあたり25MBまで。無料、アカウント不要です。
  • 知っておきたいこと ファイルは 1 バイトも変わらずに出てきます。失われるのは、容れ物が中身として持っていたものではなく、中身について持っていたもの——パスワードや、形式によっては元のアクセス権と日時です。

一度に100ファイルまで。フォーマットが混ざっていても構いません。

ダウンロードしたら、中にまた別のアーカイブが入っていた

ここへたどり着く瞬間は具体的です。project-4.2.tar.gz のような名前のファイルが届き、Windows には開く分かりやすい方法がなく、アーカイバーを入れて展開すると project-4.2.tar というファイルが 1 つだけ出てきて、それをもう一度展開しなければなりません。何も壊れていないし、間違ったこともしていません。これがその形式の性質なのです。ただ、アーカイブとは中を覗く 1 つのものだという前提を持つデスクトップには相性が悪いだけです。

Unix 側の受け渡しにはこの問題がありません。tar xzf が両方の層を 1 つのコマンドでこなし、昔からそうだったからです。この変換はその受け渡しのもう一方の側のためにあります。Windows 上のアナリストや開発者、サーバーのエクスポートを渡され、その中の 1 つの設定ファイルを探す人です。7Z は本物の目次を持つ 1 つのアーカイブで、Windows のどのアーカイバーでもフォルダーのように中へ入っていけます。

2 つの形式が、1 つの仕事の別々の半分を担っています

1979 年生まれで POSIX.1-1988 で ustar として標準化された TAR は、圧縮しないまとめ役です。それぞれのメンバーの前に名前、パス、サイズ、モード、タイムスタンプを記録したヘッダーを付けて、次々と書き並べます。何も小さくしません。1996 年に RFC 1952 で定義された GZ はその逆で、1 本のストリームを圧縮しますが、名前やパス、2 つ目のメンバーを入れる欄がありません。

どちらも欠陥ではありません。組み合わせて使うよう設計されていて、だからこそ .tar.gz は Unix 世界で最も古く最も長く続く慣習です。1999 年生まれの 7Z は 1 つの形式で両方をこなします。名前とパス、エントリごとのチェックサムを持つ目次を持ち、LZMA2 で圧縮します。それがこの変換が買っているもので、どちらが優れているという話ではなく、構造の違いです。

どうやって 2 つの層が 1 回の変換で外れるか

最初に gzip のストリームが展開され、ちょうど 1 つのものが得られます。gzip のストリームが持てるのはそれだけだからです。それが TAR ならさらに展開され、中のファイルが 7Z のメンバーになります。普通のファイルならそのまま保たれ、唯一のメンバーになります。

内側の展開は、ファイル名を信じるのではなく tar の種類を強制することで行われます。この詳細は設計方針になる前に本物のバグでした。gzip は元のファイル名をヘッダーに保存するので、GZ 由来の内側の tarball は output.tar という名前で届き、名前による判定が見つけられます。ところが XZ や BZ2 は名前を一切保存しないので、同じ tarball が input という名前で届き、判定を通り抜けていました。症状は、入れた 30 個のファイルの代わりに 1 個の不透明なファイルを含むアーカイブができることでした。成功したと報告しながら間違ったものを返す変換です。

7Z が tarball よりたいてい小さくなる理由

窓の大きさがすべての論拠です。gzip は 32 KB の履歴の中でしか圧縮しないので、200 個のソースファイルに現れるライセンスヘッダーは 200 回ゼロから圧縮されます。7Z はレジストリに最大 64 MB と記録された辞書を持つ LZMA2 を使い、たいていの人が変換するアーカイブ全体を保持できるほどの大きさなので、2 回目以降の出現はほとんど何も費やしません。

だからこそ節約は決まった割合ではなく予測しにくいものになります。ソースツリーやエクスポート一式、設定ファイルのディレクトリ、ドキュメントのビルドは大きく縮みます。JPEG や MP3、MP4 の tarball はほとんど動きません。それらの形式自身の符号化方式が、アーカイブ化される前にすでに冗長性を取り除いているからです。このページで挙げるどんな数字よりも、自分のファイルで実際の数字を見てください。

7Z の一覧は瞬時で、tar.gz はそうはいきません

これが実際に体感できる実用上の利点で、サイズとは別の話です。7Z はアーカイブ自体にエントリを記録しているので、アーカイバーは 500 MB のファイルのすべてのパスとサイズを、末尾の数キロバイトを読むだけの時間で表示できます。7Z をダブルクリックするとすぐにウィンドウが開くのはこのためです。

gzip されたタルボールはまったくそれができません。名前は TAR の中にあり、TAR は圧縮ストリームの中にあり、そこに届くにはストリームを先頭から展開しなければなりません。索引はどこにもありません。tar.gz を素早く一覧しているように見えるものは、実はすべてを読んでから捨てています。丸ごと消費するのではなく検索するつもりのアーカイブにとって、この 1 つの性質は圧縮率よりも価値があります。

tarball が運んでいた Unix のメタデータ

TAR のヘッダーはすべてのメンバーの所有者、グループ、パーミッションビット、更新時刻を記録しており、多くの tarball にとってそれは些細なことではありません。ビルドスクリプトを含むリリースは、そのスクリプトが実行可能な状態で届くことに依存しています。この組み合わせのレジストリの注意書きはあえて素っ気ないものです。ファイルはバイト単位でそのまま出てきますが、古い入れ物がファイルの中身ではなくファイルについて保持していたものは残らないかもしれません。

ですから tarball がデプロイの成果物やコンテナのエクスポート、Unix マシンで展開して実行するものなら、7Z への変換は前提にせず試験すべき変更です。文書やデータセット、写真のコレクション、Windows で読むだけのソースツリーなら、何も気にする必要はなく、この変換で失うものは何もありません。

7Z を選ぶことで受け継ぐばらつきのある対応状況

レジストリは 7Z の既知の問題として対応状況のばらつきを挙げていて、これがここまでの内容への誠実な釣り合いです。Windows のエクスプローラーは何もインストールせずに ZIP を開きますが 7Z は開きません。macOS の Finder も同様です。7-Zip、Keka、PeaZip はどれも対応していますが、どれも先にインストールする必要があります。

これが 7Z を、保管しておくアーカイブには優れ、送るアーカイブには不向きにしています。この変換の目的が自分の端末で作業しやすくすることなら、正しい行き先です。結果を誰かに転送するために変換しているなら、答えは ZIP のほうです。どのツールを入れるべきかという相談なしにどこでも開ける唯一のアーカイブ形式だからです。

gzip されたファイルが展開・再パックされる場所

この変換はブラウザーではなくサーバーで動きます。このサイトの多くの道具はファイルを端末に留めそう明言していますが、アーカイブはその例外です。作業には本物のプログラムとしての 7-Zip が必要だからです。ファイルは暗号化された接続で、独自の外向きインターネット接続を持たないコンテナへ送られます。

ジョブはメモリー上の使い捨てディレクトリを割り当てられ、結果がどうであれジョブ終了時に削除され、粘るのではなく 60 秒で打ち切られます。展開前にアーカイブが申告する展開後の容量を確認し、2 GB を超える申告は拒否されます。強く圧縮された tarball は正直にとても大きな展開容量を申告し得るファイルの典型です。

GZ を 7Z に変換する手順

  1. お手元の GZ ファイル をこのページに落とすか、押してファイルを選んでください。
  2. 変換先に 7Z を選び、変換を開始します。
  3. できあがった 7Z ファイル をダウンロードします。

GZ と 7Z——何が変わるか

GZと7Zの比較
GZ7Z
正式名称Gzip アーカイブ7-Zip アーカイブ
拡張子.gz, .tgz.7z
メディアタイプapplication/gzipapplication/x-7z-compressed
圧縮方式可逆 — 何も捨てない可逆 — 何も捨てない
最初の公開19921999
仕様RFC 1952
ライセンスオープン標準オープン標準
現在の位置づけ現行現行
ブラウザで開けるか対応なし対応なし
代わりに検討される形式BZ2, XZ, ZIPZIP, XZ

残るもの

失われるものはありません。GZ も 7Z も中身を劣化なしに保持します。この変換が変えるのは包み方であって品質ではないので、劣化が積み重なる心配をせずに何度でも繰り返せます。

変換先の形式が追加で扱えるもの

7Z は作業のための形式で、GZ は完成したものを渡すための形式です。戻ってくるのはページの絵ではなく、編集できる文字です。たいていはそれがこの変換の理由であり、同時にこの変換の限界でもあります。

結果を開く

7Z にはフォルダーがまるごと収まりますが、GZ はひとつながりの圧縮された流れです。名前もフォルダーも日時も、ひとつの塊に溶けてしまうのではなく、記録されます。

7-ZipとKekaは GZ と 7Z のどちらも読めるので、別のプログラムを開かずに、結果を元のファイルと並べて確かめられます。

ファイルサイズと品質

7Z が一度に扱う範囲は 16 MB、GZ は 32 KB です。繰り返しがこの幅の中に収まっていて初めて、それを圧縮で畳めます。圧縮率の差はそこから来ます。そして余分にかかる計算時間も、同じところへ消えます。

どちらの形式が何のためのものか

GZ は 1992 年に登場しました。 RFC 1952 で規定されています。ファイルが、それを書いた道具より長く生きなければならないなら、この一点には値打ちがあります。

7Z は 1999 年から使われています。7-Zip、Keka、PeaZipがこの形式を読めます。

GZ から 7Z:よくある質問

GZ ファイル はどこかにアップロードされますか。

はい。この変換には、ブラウザーの中では動かないソフトウェアが必要です。ファイルは暗号化されて当方のサーバーへ送られ、処理が終わり次第削除されます。結果のファイルも 60 分後に削除されます。

GZ から 7Z への変換は無料ですか。

はい。25 MB までのファイルなら 1 日 100 回まで無料です。この変換だけは当方が費用を負担するサーバーで動くため、ここに上限があります。それ以外に制限はなく、透かしはどの場合も入りません。

GZ を 7Z に変換すると品質は落ちますか。

いいえ。7Z は同じ内容を何も捨てずに保持できるので、結果は品質の点で元のファイルと同じです。 ファイルは 1 バイトも変わらずに出てきます。失われるのは、容れ物が中身として持っていたものではなく、中身について持っていたもの——パスワードや、形式によっては元のアクセス権と日時です。

7Z ファイル に複数のファイルを入れられますか。

7Z にはフォルダーがまるごと収まりますが、GZ はひとつながりの圧縮された流れです。名前もフォルダーも日時も、ひとつの塊に溶けてしまうのではなく、記録されます。

GZ から 7Z への変換は可逆ですか。

失われるものはありません。GZ も 7Z も中身を劣化なしに保持します。この変換が変えるのは包み方であって品質ではないので、劣化が積み重なる心配をせずに何度でも繰り返せます。

7Z ファイル はそのあと編集できますか。

7Z は作業のための形式で、GZ は完成したものを渡すための形式です。戻ってくるのはページの絵ではなく、編集できる文字です。たいていはそれがこの変換の理由であり、同時にこの変換の限界でもあります。

これらのフォーマットについて