問題タブ [iso9660]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
filesystems - ISO 9660 ファイルシステムのサイズを予測するにはどうすればよいですか?
データを DVD にアーカイブしていますが、DVD をフルパックしたいと考えています。DVD に入れたいすべてのファイルの名前とサイズはわかっていますが、メタデータがどのくらいの容量を占めているかわかりません。各 DVD にできるだけ多くのファイルを入れたいので、貪欲なビン パッキングを使用した Bubblesearch ヒューリスティックを使用しています。10,000 通りの選択肢を試して、最良の選択肢を見つけます。現在、すべてのファイルのサイズはわかっていますが、ファイルが ISO 9660 ファイルシステムにどのように格納されているかがわからないため、メタデータ用に多くのスロップを追加しています。スロープを減らしたいです。
遅すぎることを除いて、私は使用できgenisoimage -print-size
ました--- 500MB を占める 40,000 個のファイルを考えると、約 3 秒かかります。DVD 1 枚につき 8 時間かかるということはありません。以前にソースを変更したgenisoimage
ことがありますが、ソース コードからアルゴリズムを絞り出すことにあまり熱心ではありません。誰かが見積もりを取得するためのより良い方法を知っているか、役立つ仕様を教えてくれることを願っています.
問題と質問の明確化:
複数の DVD に分割されたアーカイブを書き込む必要があり、通常は一度に 5 枚程度です。私が解決しようとしている問題は、各 DVD (最後を除く) ができるだけいっぱいになるように、各 DVD にどのファイルを配置するかを決定することです。この問題は NP 困難です。
私は、標準の貪欲なパッキング アルゴリズムを使用しています。このアルゴリズムでは、最大のファイルを最初に配置し、十分なスペースがある最初の DVD に配置します。だからj_random_hacker、私は間違いなくランダムから始めていません. ソート済みから開始し、Bubblesearch を使用してファイルがパックされる順序を乱します。この手順により、パッキングが推定容量の約 80% から推定容量の 99.5% 以上に改善されます。この質問は、容量をより適切に見積もることに関するものです。現在、私の推定容量は実際の容量よりも低くなっています。
私は 10,000 回の摂動を試みるプログラムを作成しました。それぞれの摂動には次の 2 つのステップが含まれます。
- ファイルのセットを選択
- これらのファイルが DVD で占める容量を見積もる
ステップ2は私が改善しようとしているステップです。タイラー D が示唆するように、現在、私は「注意を怠っている」。しかし、私はもっとうまくやりたいです。
genisomage -print-size
遅すぎて使えない。同様に、ファイルをディスクに tar することはできません。これは単に速度が遅すぎるためですが、tar ファイルは ISO 9660 イメージと同じサイズではありません。これは、予測する必要がある ISO 9660 画像のサイズです。原則として、これは完全に正確に行うことができますが、その方法はわかりません。それが問題です。
注: これらのファイルは、3 TB のハード ドライブ ストレージを備えたマシン上にあります。いずれの場合も、ファイルの平均サイズは少なくとも 10MB です。場合によっては大幅に大きくなります。結局のところ、それは十分に高速になる可能性genisomage
がありますが、私はそれを疑っています--- ISO イメージを /dev/null に書き込むことで機能するように見えます。 4.7GB。現在、または元の質問を投稿したとき、そのマシンにアクセスできません。夕方にアクセスできるときは、質問のより良い数字を取得しようとします. しかし、これが良い解決策になるとは思いませんgenisomage
が、ファイルシステムがどのように機能するかを教えてくれるモデルを学ぶには良い方法かもしれません。ブロック サイズが 2KB であることは、すでに役に立ちます。
同じディレクトリ内のファイルが同じ DVD に書き込まれることを知っておくと、検索が簡単になる場合もあります。tar-before-burning を除外して、ファイルに直接アクセスしたい。(ほとんどのファイルはオーディオまたはビデオです。つまり、それらにgzip
.
c++ - Universal Disk Format デバイスまたはファイルから読み取るための C/C++ ライブラリ
UDF や ISO9660 などのファイルシステムを備えた一般的なデバイスから読み取り、ファイル/メタデータなどを抽出できる、優れた無料の C/C++ ライブラリはありますか?
これまでのところ、私が見つけることができたのは、有望なGNUのlibcdioと、うんざりしているほど多くのヒットがあり、他の結果をGoogleにプッシュし、かなり極端な価格のタグが付いている「マジックUDF」だけです。
クロスプラットフォームのサポートが望ましい (もちろん個人的な好みです)、Windows との互換性は残念な要件です。libcdio の GPLv3 ライセンスとの互換性については、まだ調査していません。
この質問はまだ開いていることに注意してください。誰かがそのようなライブラリを見つけたら、別の回答を受け入れます。
c - Cを使用してLinux上のDVDにメモリデータを書き込む方法は?
Linux プラットフォームで DVD にコピーする必要がある MP4 形式のデータがあります。現在、ハードディスクに MP4 ファイルを作成し、growisofs コマンドを使用してそのファイルを DVD に焼き付けています。MP4 データを DVD に書き込む前にハードディスクに書き込む必要がなければ、より効率的です。Cプログラムを使ってメモリデータをDVDに書き込む方法があれば教えてください。
bootloader - ブータブル CD の最初に実行されたバイトはどこにありますか?
小さな Linux ディストリビューションの iso イメージ (ISO 9660) を調べてみました。16 個の空のセクターが見つかり、その後にプライマリ ボリュームの説明を記述するセクターが続きました。次のセクターは通常、システムやバージョン識別子などの説明情報と、指定されていないバイト範囲内のリトル エンディアン整数のみを含むブート レコードです。次に、Supplementary Volume Descriptor が続き、最後に Volume Descriptor Set Terminator が続きます。
ブート レコードのリトル エンディアン整数だと思います。これに関するこれ以上の情報は見つかりませんでした。私が使用したすべての画像で、プライマリ ボリューム記述子のセクター カウントの値よりも小さいリトル エンディアンの整数が使用されていたため、画像内のセクターを指していると推測されます。誰かがこれについてより詳細な情報を提供できますか?
standards - ECMA-119 仕様で言及されている ISO 2375 および 2735 規格は何ですか?
ECMA-119 仕様外:
8.5 補足ボリューム記述子
...
8.5.3 ボリュームフラグ (BP 8):
このフィールドのビットには、最下位ビットから始まる 0 から 7 までの番号が付けられます。このフィールドは、次のようにボリュームの特定の特性を指定するものとします。
ビット 0:
ゼロに設定されている場合、エスケープ シーケンス フィールドは、ISO 2735に従って登録されたエスケープ シーケンスのみを指定することを意味します。
ONE に設定されている場合、Escape Sequences フィールドが、ISO 2375に従って登録されていない少なくとも 1 つのエスケープ シーケンスを指定することを意味します。
iso.org で、ISO- 2735標準を見つけました。
密封された金属製食品容器 -- 牛乳用の丸型オープントップ缶と通気穴付き缶の容量と直径
ISO 2375規格:
データ処理 -- エスケープシーケンスの登録手順
入力エラーが「ISO 2375」を意味するため、誰かが「ISO 2735」を確認できますか? ISO 2375 に相当する ECMA 規格はありますか?
c - C でのディスク イメージの作成が非常に遅い (iso 9660)
楽しいプロジェクトとして、iso ファイルを作成するプログラムを書こうと思いました。私が知る限り、動作しますが、30 秒ごとに 4KB しか読み取れません。イジェクト -x 11 を使用して、cdrom ドライブを適切な速度まで遅くしました。それがなければ、ドライブは全速力で動作し、プロセスをすぐに強制終了します。これをより速く/より良くするための提案は大歓迎です。
delphi - ISOイメージにファイルを追加および削除するにはどうすればよいですか?
ISOファイルを処理する(できれば無料の)コンポーネントまたはライブラリはありますか?
特に、ファイルを追加してISOに保存したり、ISOからファイルを抽出したりできるようにしたいと思います。
高度な機能やベルやホイッスルは必要ありません。上記のことを行うためだけのものです。
私はいくつかを見つけようとしましたが、実際には何も思いつきませんでした。
おそらく、これはそのようなライブラリを必要とせずに行うことができますか?もしそうなら、どのようなアプローチをお勧めしますか?
c# - C# からの DVD ISO - .NET DiscUtils の代替
C# のファイル フォルダー構造に基づいて.ISO ファイルを作成する最良の方法は何ですか? DiscUtils以外のオープン ソース ライブラリはありますか? DiscUtilsで問題が発生しました。別の方法を試してみたいと思います。私のオプションは何ですか?私はオープンソースを好みますが、解決策に喜んでお金を払うかもしれません.
assembly - ISO9660ファイルシステムへのファイルのロード
ISO 9660ファイルシステムでのファイルの読み取りに関するこの記事を読み終えたところですが、ファイルをメモリに読み取る方法について混乱しています。ルートディレクトリがPVDのオフセット156にあることを理解しています。これを使用して、ルートディレクトリにあるファイルを検索します。ファイル名を見つけたら、そのファイルが存在するアドレスをどのように見つけますか。 (int 0x13 AH = 42を使用して)メモリにロードできるようにしますか?
maven - Maven アセンブリ プラグインの新しい形式オプションを作成する
Maven アセンブリ プラグインを使用すると、アセンブリ記述子でさまざまな形式を指定できます。サポートされるように新しいフォーマットを開発するにはどうすればよいですか?
すでにサポートされている zip、jar、または tar ファイルではなく、ISO イメージを作成したいと考えています。ISO イメージ ( https://github.com/stephenc/java-iso-tools )を作成するプラグインを見つけましたが、アセンブリ プラグインの一部としてではありません。そのプラグインを拡張することさえできます。
私は基本的に、アセンブリ記述子で次のことができるようにしたいと考えています。
また、作成されたアーカイブ内の余分なレベルの間接性を削除できるようにしたいので、ファイルがアーカイブのルートにある必要があると宣言すると、実際にそうなります。これは tar ファイルの場合は tar 爆弾になりますが、ISO イメージには便利な機能です。