7Z を XZ に変換 — tar.xz の形にする

7Z を XZ にすると、圧縮方式は変わらず形だけが変わります。どちらも辞書サイズ最大 64 MB の LZMA2 なので、容量はほとんど動きません。7Z は目次を持つ入れ物で、XZ はただ 1 本の圧縮ストリームなので、中身はまず tar にまとめられます。名前こそ .xz ですが、実質は .tar.xz です。

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

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

Linux 側の作法に合わせるための変換です

これは互換性のための変換であって、圧縮率のための変換ではありません。ソースリリースを準備するメンテナー、PKGBUILD や RPM のスペックファイルを書くパッケージャー、ビルドスクリプトが `curl … | tar xJ` を前提にしている技術者。彼らのパイプラインは圧縮された tarball を期待していて、Windows 側で 7-Zip を使って作られた 7Z が代わりに届いた、という状況です。

受け取り側のツールを 1 個のファイルのために変えることはできません。ですからこの変換の範囲は狭く定義するのが誠実です。下流が tar.xz を要求するなら変換し、要求しないなら 7Z のままにしておく。容量を理由に変換する意味はどちらの方向にもありません。

同じ圧縮方式を、同じ設定で使っています

7Z は 1999 年、XZ は 2009 年に登場しましたが、どちらも LZMA 系列の上に成り立っていて、レジストリはどちらにも 64 MB の辞書を記録しています。これだけの辞書サイズがあると、40 番目のファイルにある文字列が 3 番目のファイルにすでに出ていたことに気づけます。両方の形式が同じことに気づけるということです。

ですから比率を決めているのはデータであって形式の選択ではありません。ソースコードやログのフォルダなら重複が多く見つかり、両者とも同じくらい見つけます。JPEG や MP4 のフォルダなら何も見つかりません。冗長性はアーカイブ化される前にすでに取り除かれているからです。容量を減らす目的でこの変換を選んだのなら、圧縮方式は最初から問題ではありませんでした。

XZ の下に tar がある理由

XZ が圧縮するのはちょうど 1 本のストリームです。ファイル名を入れる欄も、ディレクトリという概念も、このバイト範囲が 1 つのメンバーでこちらは別、と示す方法もありません。それは直し忘れた欠陥ではなく設計そのもので、だからこそ tar が隣にいます。

この変換は 7Z を展開し、中身を tar にまとめ、その tar を xz で圧縮します。展開したディレクトリの内側からアーカイブを組み立てるので、tarball の中身は先頭にラッパーフォルダを持たず、直接あなたのファイルが並びます。1 つだけ注意点があります。これは今新しく書かれた tar であり、元の 7Z が中に .tar ファイルを普通のファイルとして持っていた場合、それはそのままファイルとして残り、展開されることはありません。

ダウンロードした後の名前の付け方

届くファイルの拡張子は .xz で、正直な名前は .tar.xz です。放置しても壊れません——`xz -d` も `tar` も拡張子ではなく中身のバイトを見ます——ただし人間も自動化スクリプトの半分も先に拡張子を読みます。tarball を含む .xz は、バグ報告のもとになる種類の驚きです。

公開する前にリネームしてください。`tar xf project.tar.xz` なら 2 つの層を 1 回の実行で処理できて、リリースノートを読んだ人が期待するとおりに動きます。`project.xz` という名前は `unxz project.xz` を誘い、結果は実はアーカイブである `project` というファイルです。gzip と違い XZ は元のファイル名を保持しないので、あなたが付けた拡張子だけがこのファイルの唯一の手がかりになります。

目次を手放すという代償

7Z アーカイブは中身を知っています。名前、パス、サイズ、各エントリのチェックサムがアーカイブ自体に記録されているので、400 MB の 7Z の中身を、何も展開せずに一瞬で表示できます。XZ は何も知りません。`xz --list` はブロック数とストリーム全体のサイズを報告するだけで、それがすべてです。

tar.xz の中身の一覧は、内側の tar を読んで初めて得られます。つまりストリーム全体を展開しなければなりません。小さなリリースなら 1 秒で気づきもしませんが、数ギガバイトのアーカイブの中身をのぞきたいだけのときは、一瞬で終わる作業とコーヒー休憩の差になります。中身を頻繁にのぞく用途なら、この変換はむしろ状況を悪くするので、7Z のままにしておくべきです。

xz はすでにあり、7-Zip はない場所

レジストリは XZ を読めるソフトとして xz、7-Zip、Keka を挙げますが、重要なのは最初の 1 つです。xz は事実上あらゆる Linux ディストリビューションと BSD の基本インストールに含まれています。パッケージマネージャー自身が依存しているからです。GNU tar は 1.22 以降 `-J` を理解するので、別のステップは要りません。シェルしか入っていないコンテナイメージでも、たいてい tar.xz を展開できます。

7-Zip は違います。優れた無料のソフトですが、それでも誰かが、あるいはビルドイメージが、あらためてインストールしなければならないものです。レジストリが 7Z 形式の対応状況にばらつきがあることを記録しているのも同じ理由からです。自分の管理下にあるマシンならこの差は些細ですが、ビルドエージェントや顧客のマシン、あるいは自分で作っていない最小構成のコンテナでは、これがすべての違いになります。この変換が買っているのは容量ではなく、その非対称性です。

暗号化と巨大な 7Z は断られます

7Z は暗号化に対応していますが XZ にはその仕組みがないので、保護された 7Z を原理的にそのまま渡すことはできません。パスワードを推測したり中途半端なファイルを作る代わりに、展開ツールは空のパスワードで呼び出され、暗号化されたアーカイブは待たされることなく読める理由とともに失敗します。自分の環境で 7-Zip や Keka を使って復号してから、平文のアーカイブを変換してください。

もう 1 つの拒否は、何も書き込む前に起きます。アーカイブが展開後にどれだけの容量になるかを自己申告し、2 GB を超えると宣言されたものは断られます。小さな 7Z がテラバイト単位に展開すると正直に申告することもあり得るので、展開の途中で気づくのでは遅すぎます。この確認は完全ではありません——申告を過小に偽ることもできるからです——それを補っているのはこのあとの処理の仕組みです。

7Z が詰め直される場所

あなたのブラウザーの中ではありません。このサイトの多くの変換は自分の端末で完結し、そう明言していますが、アーカイブの詰め直しは例外です。7-Zip と xz を実際のプログラムとして必要とするからです。ファイルは暗号化された接続で、それらを動かすコンテナへ送られ、そのコンテナには外向きのインターネット接続がありません。

ジョブごとにメモリー上の使い捨てディレクトリが割り当てられ、結果がどうであれジョブが終われば削除されます。60 秒を過ぎても終わらないジョブは、粘るのではなく打ち切られます。壊れたアーカイブは失敗するのではなく圧縮ツールを無限ループに落とすことがあるからです。無料枠は 1 ファイル 25 MB までです。第三者に渡したくない中身なら、7-Zip と xz を自分のマシンで動かせば同じ 2 手順をオフラインでこなせます。

公開する前に tarball を検証する

`tar tJf` を結果に対して実行し、一覧を 7Z のエントリと 1 つずつ突き合わせてください。件数、パス、サイズが一致するか。これはもっとも安上がりな確認で、この場面でいちばん起きがちな失敗——先頭のパスが 1 段ずれる——を捕まえます。親ディレクトリからまとめた アーカイブはすべてのパスに先頭フォルダを持ち、中から詰めたものは持ちません。想定と違う方を受け取ったビルドスクリプトは、原因を読むのに 1 時間かかる壊れ方をします。

タイムスタンプと Unix のパーミッションも、確認すべき対象です。ファイルはバイト単位でそのまま出てきます——これは可逆な詰め直しです——ただし古い入れ物が中身について記録していたことがすべて残るわけではありません。Windows で作られた 7Z は、そもそも Unix のモードビットを一度も持っていないこともあります。実行可能ファイルとして届く必要があるなら、tarball の中で確認し、そこで直しておいてください。誰かのマシンで発覚するより先に。

7Z を XZ に変換する手順

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

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

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

残るもの

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

結果を開く

XZ が圧縮するのはひとつながりの流れだけで、フォルダーを持つことはできません。XZ がたいてい書庫形式と組み合わされるのは、まさにそのためです。書庫がファイルをまとめ、XZ がその結果を圧縮します。

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

ファイルサイズと品質

XZ が一度に扱う範囲は 8 MB、7Z は 16 MB です。繰り返しがこの幅の中に収まっていて初めて、それを圧縮で畳めます。圧縮率の差はそこから来ます。そしてだからこそ、2 つのうち速いのはこちらです。

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

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

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

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

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

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

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

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

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

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

XZ が圧縮するのはひとつながりの流れだけで、フォルダーを持つことはできません。XZ がたいてい書庫形式と組み合わされるのは、まさにそのためです。書庫がファイルをまとめ、XZ がその結果を圧縮します。

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

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

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