分析と広告のためのCookie
分析と広告のためにCookieを使っており、どちらもGoogleに送られます。拒否しても、目に見える動作は何も変わりません。プライバシーポリシーを読む
ここで TAR を BZ2 に変換できます。無料、アカウント不要です。ファイルを上の枠に落とせば、数秒で結果がダウンロードできる状態になります。 ファイルは暗号化されて当方のサーバーへ送られ、そこで変換され、処理が終わり次第削除されます。
一度に100ファイルまで。フォーマットが混ざっていても構いません。
順番に変換し、まとめてZIPでダウンロードします。
TAR から BZ2
ここに来る人のほとんどは、そう指示されたからここにいます。パッケージのレシピが tar.bz2 をソースとして列挙し、それに対してハッシュを計算します。あるプロジェクトのリリース手順は 2006 年からその拡張子を使い続けていて、ダウンロードページもミラーもサードパーティのビルドスクリプトもそこを指しています。大学や政府機関の登録手続きが提出チェックリストでその形式を指定していることもあります。古いディストリビューションのアップロードツールがそれしか受け付けないこともあります。
どれも 1 つの書庫のために変わるものではなく、変えない判断が間違っているわけでもありません。成果物の名前は、他の誰かがそれを前提に築いた契約の一部だからです。これはコンプライアンスのための変換であり、最適化として扱うより、そう位置づけたほうが正確です。自由に選べる立場で、下流の誰も気にしていないなら、このページの正直な助言は、閉じて gzip なら速さのために、XZ なら大きさのために選ぶことです。
1996 年生まれの bzip2 は、隣り合う二つとは構造的に違うことをします。入力を最大 900 KB のブロックに切り分け、それぞれにバローズ・ホイーラー変換をかけ、同じ文脈のバイトが隣り合うように並べ替えます。そのあと move-to-front パスとハフマン符号化が、生まれた連続部分を圧縮します。スライド窓方式の圧縮とはまったく別物です。
このサイトのレジストリは 900 KB のブロックを窓として記録しており、それが gzip の 32 KB との公平な比較対象です。1 ブロックの中で bzip2 が見渡せる文脈は gzip よりはるかに広く、それがテキストで勝る理由です。同時に XZ の 64 MB 辞書との比較でもあり、そこでは bzip2 が負けます。900 KB のブロックは、書庫の先頭にあるファイルが末尾のファイルに似ていることに気づけません。bzip2 はちょうど二つの中間にいて、そのために取り残されました。
圧縮が遅いのは並べ替えの計算が重いからで、それは一度きり、あなたを待たせない機械の上での話なら我慢できます。展開の速度こそが意外な落とし穴です。ブロックの並べ替えを元に戻すのは実際に重い作業で、スライド窓の一致を戻すのとは違い、bzip2 は gzip よりずっと遅く、XZ よりも遅く展開されます。
これが、繰り返しダウンロードして展開するような用途にこの形式が向かない理由です。CI の実行ごとに取得される依存関係、コンテナのレイヤー、百台の機械が引っ張ってくる成果物——そのすべてが毎回、展開のコストを払います。大きな書庫では秒単位ではなく分単位です。bzip2 は一度書いて一度読むだけの相手には我慢できますが、一度書いて延々と読まれ続ける相手には実質的に高くつきます。
展開時のメモリーです。bzip2 は最大 900 KB のブロック単位で動くので、どれだけ大きな書庫を展開するにも必要なバッファーは小さく固定です。XZ は書き込まれたときの辞書に見合ったメモリーを必要とし、このサイトのレジストリでは最大 64 MB と記録されています。それを用意できない機械では書庫そのものが開きません。
これが効く場面はかつてより狭くなったものの、確かに存在します。ルーターや組み込み機器、メモリー上限のあるコンテナ、復旧環境、initramfs、アップグレードが許されない古いシステムです。展開先がそういう場所なら、bzip2 は古い習慣ではなく擁護できる技術的判断で、次の人が「直そう」としないよう、リリースノートに理由を書いておく価値があります。
BZ2 は 1 本の流れだけを圧縮します。ファイル名を書く欄もフォルダーの概念もなく、1 つの部材がどこで終わり次が始まるかを示す仕組みもありません。このサイトのレジストリはディレクトリ構造の不在をこの形式の既知の問題として挙げています。tar.bz2 の一覧に表示される内容はすべて、その中にある TAR から読み出されています。
そのため変換は渡された書庫を展開し、中身から新しい TAR を組み立て、それを bzip2 で圧縮します。展開済みディレクトリの中から書庫を作るので、あなたのファイルはラッパーフォルダーの中ではなくトップレベルに置かれます。ダウンロードは .bz2 という拡張子で届くので、tar.bz2 に付け替えてください。正確でもあり、tar xjf が一つのコマンドで両方の層を処理できる形でもあります。
bzip2 のブロックは互いに独立して圧縮されるので、両隣の形式にはない性質があります。あるブロックが壊れても、その後ろのすべてが必ず失われるとは限りません。壊れた bzip2 ファイルを歩き、無事なブロックの境目を見つけて読める部分だけ復旧するツールが存在します。
これは戦略というより慰めとして扱ってください。中にある TAR はヘッダーとデータの連続する流れなので、一部のブロックだけ復旧しても穴だらけの tar になり、使えるファイルが得られるかどうかは損傷がどこに落ちたか次第です。ビット化けからの生還が本当に要件なら、答えはメンバーごとのチェックサムと分離されたパリティを持つ形式であって、都合の良い壊れ方をする圧縮器ではありません。
この変換はアップロードされたファイルの周りに bzip2 を巻き付けているのではありません。TAR を展開し、新しい TAR を書いてから圧縮します。中のファイルはバイト単位で同一です——可逆の再パックだからです——が、それを包む書庫は新しく、メンバーの順序や記録されたタイムスタンプ、権限ビットは送ったものと違うことがあります。
パッケージングの文脈では、これがこのツールが向くか向かないかを決める点です。レシピが成果物のハッシュを検査するなら、その成果物は自分が制御する機械で決定論的に作らなければならず、tar --sort=name --mtime=… と bzip2 を自分で実行する必要があります。この変換器は、tar.bz2 が存在しさえすればよいとき——ミラー、同僚への受け渡し、テスト——に使ってください。正確なバイト列が契約の一部であるときには使わないでください。
ブラウザーの中ではなく、こちらのサーバー上です。このサイトの多くのツールは手元の機械で変換すると明記していますが、書庫まわりの作業はその例外で、実際のプログラムを必要とするためです。ファイルは暗号化された通信で、7-Zip と bzip2 を実行するコンテナへ送られ、そのコンテナ自身は外部のインターネットへ出ていけません。
ジョブごとにメモリー上のファイルシステムに作業ディレクトリが作られ、成功しても失敗してもジョブ終了と同時に破棄され、60 秒を超えて動いているジョブは強制終了されます。この上限に達しやすいのはこの組み合わせで、bzip2 の圧縮は遅く、テキストの詰まった大きな tar はまさに時間のかかる入力だからです。無料枠はアップロードするファイル 1 つあたり 25 MB です
信頼できる圧縮率の数字は自分のデータで測ったものだけです。同じ TAR を GZ、BZ2、XZ のそれぞれで圧縮し、三つのサイズを並べてください。ソースツリーやログの集まりでは、XZ が最小、BZ2 が次、GZ が最大という順序がだいたい予想通りになりますが、差の大きさは中身によって大きく変わり、すでに圧縮済みのファイルばかりの tar なら、三つとも誤差程度の差に収まります。
そのうえで、一覧には出てこない数字も考えてください。これは何によって、どれくらいの頻度で展開されますか。答えが「機械によって、絶えず」なら gzip です。「めったに、普通のパソコンで」なら XZ です。「何かが名指ししたから」、あるいは「展開先のメモリーが乏しいから」なら bzip2 です。圧縮率だけで bzip2 を選ぶのは、二十年前なら理にかなっていて、今は静かに成り立たなくなっている判断です。
| TAR | BZ2 | |
|---|---|---|
| 正式名称 | TAR アーカイブ | Bzip2 アーカイブ |
| 拡張子 | .tar | .bz2 |
| メディアタイプ | application/x-tar | application/x-bzip2 |
| 圧縮方式 | 無圧縮 | 可逆 — 何も捨てない |
| 最初の公開 | 1979 | 1996 |
| 仕様 | POSIX.1-2001 ustar | — |
| ライセンス | オープン標準 | オープン標準 |
| 現在の位置づけ | 現行 | 旧式、ただし今もどこでも読める |
| ブラウザで開けるか | 対応なし | 対応なし |
| 代わりに検討される形式 | ZIP, GZ | GZ, XZ |
失われるものはありません。TAR も BZ2 も中身を劣化なしに保持します。この変換が変えるのは包み方であって品質ではないので、劣化が積み重なる心配をせずに何度でも繰り返せます。
BZ2 が圧縮するのはひとつながりの流れだけで、フォルダーを持つことはできません。BZ2 がたいてい書庫形式と組み合わされるのは、まさにそのためです。書庫がファイルをまとめ、BZ2 がその結果を圧縮します。
7-ZipとKekaは TAR と BZ2 のどちらも読めるので、別のプログラムを開かずに、結果を元のファイルと並べて確かめられます。
BZ2 は同じサンプルをおよそ半分の場所に収めます。失われるものはなく——展開すれば TAR ファイルがビット単位で戻ります——だからこそ、取っておきたいものの置き場としてはこちらが優れています。
TAR は 1979 年に登場しました。 POSIX.1-2001 ustar で規定されています。ファイルが、それを書いた道具より長く生きなければならないなら、この一点には値打ちがあります。
BZ2 は 1996 年から使われています。bzip2、7-Zip、Kekaがこの形式を読めます。
TAR は 1979 年、BZ2 は 1996 年に登場しました。人に渡すならたいてい古いほうが安全で、新しいほうは同じ仕事をより少ないバイト数で片づけます。
はい。この変換には、ブラウザーの中では動かないソフトウェアが必要です。ファイルは暗号化されて当方のサーバーへ送られ、処理が終わり次第削除されます。結果のファイルも 60 分後に削除されます。
はい。25 MB までのファイルなら 1 日 100 回まで無料です。この変換だけは当方が費用を負担するサーバーで動くため、ここに上限があります。それ以外に制限はなく、透かしはどの場合も入りません。
いいえ。BZ2 は同じ内容を何も捨てずに保持できるので、結果は品質の点で元のファイルと同じです。 ファイルは 1 バイトも変わらずに出てきます。失われるのは、容れ物が中身として持っていたものではなく、中身について持っていたもの——パスワードや、形式によっては元のアクセス権と日時です。
BZ2 が圧縮するのはひとつながりの流れだけで、フォルダーを持つことはできません。BZ2 がたいてい書庫形式と組み合わされるのは、まさにそのためです。書庫がファイルをまとめ、BZ2 がその結果を圧縮します。
BZ2 は同じサンプルをおよそ半分の場所に収めます。失われるものはなく——展開すれば TAR ファイルがビット単位で戻ります——だからこそ、取っておきたいものの置き場としてはこちらが優れています。
失われるものはありません。TAR も BZ2 も中身を劣化なしに保持します。この変換が変えるのは包み方であって品質ではないので、劣化が積み重なる心配をせずに何度でも繰り返せます。