标签: iso9660

如何在ISO映像中添加和删除文件?

是否有任何(最好是免费的)组件或库来处理ISO文件?

特别是我希望能够添加文件并保存到ISO,以及从ISO中提取文件.

我不需要高级功能或花里胡哨,只需要做我上面提到的事情.

我试图找到一些,但真的没有想到.

也许这可以在不需要这样的库的情况下完成?如果是这样,你会推荐什么方法?

delphi archive iso9660

7
推荐指数
1
解决办法
3522
查看次数

从原始磁盘映像读取文件(2352字节/扇区)

几个月前我已经在这里问了类似的东西,但当然我的更新中使用的解决方案并不好,因为我不知道哪个偏移量启动了我想要的文件,该代码读取整个文件,直到找到所需的字符串那不方便 这就是我搜索用Java编码的ISO9660文件阅读器的原因,我在这个项目中读到了完美的ISO9660文件,但有些文件格式bin 和img 我希望能够打开.

不幸的是,代码不起作用,因为它期望ISO9660标题\x01CD001\x01位于前缀的偏移量(32768,紧接在前16个扇区之后,保留用于其他目的),如此此处标准所定义:

7.前十六个部门是空的

前16个扇区(扇区号0到15,包括0和15)只包含零.ISO9660没有定义这些扇区的内容,但对于DOS,它们显然总是写为零.它们显然保留供可以从CD-ROM引导的系统使用.

在我的情况下,我有imgbin 磁盘映像的\x01CD001\x01标题位于第18扇区结束后的偏移量37656,792字节.这使代码抛出错误.

由于有软件能够 在不需要 或文件的情况下读取bin 和img文件的内容,在这种情况下,使用标头的规则是什么?它是标准还是粗暴地通过字节搜索标题?如果它是一个标准,我在哪里可以找到任何类型的文档/实现?cueccd

更新:我发现这些文件具有不同的扇区大小:2352字节/扇区,因为它们是CD-R的原始副本.

java iso9660

7
推荐指数
1
解决办法
1543
查看次数

如何预测ISO 9660文件系统的大小?

我正在将数据存档到DVD,我想要将DVD打包完整.我知道DVD上我想要的所有文件的名称和大小,但我不知道元数据占用了多少空间.我想在每张DVD上获得尽可能多的文件,所以我使用了一个带有贪婪的bin-packing的Bubblesearch启发式算法.我尝试了10,000种替代方案并获得最佳选择.目前我知道所有文件的大小,因为我不知道文件如何存储在ISO 9660文件系统中,我为元数据添加了大量的slop.我想减少污泥.

我可以使用,genisoimage -print-size但它太慢了 - 假设40,000个文件占用500MB,大约需要3秒钟.每张DVD需要8小时不在卡片中.我以前修改了genisoimage源代码,我真的不想尝试从源代码中挤出算法; 我希望有人知道更好的估算方法,或者可以指出一个有用的规范.


澄清问题和问题:

  • 我需要刻录分成多张DVD的档案,通常一次大约五张.我试图解决的问题是决定将哪些文件放在每张DVD上,以便每张DVD(除了最后一张)尽可能充分.这个问题是NP难的.

  • 我正在使用标准的贪婪打包算法,您首先放置最大的文件,然后将其放入第一张有足够空间的DVD中.所以j_random_hacker,我绝对不是从随机开始的.我从排序开始并使用Bubblesearch来扰乱文件的打包顺序.此程序将我的包装从估计容量的约80%提高到估计容量的99.5%以上.这个问题是关于更好地估计容量 ; 目前我估计的容量低于实际容量.

  • 我编写了一个尝试10,000次扰动的程序,每个程序包含两个步骤:

    1. 选择一组文件
    2. 估计这些文件在DVD上占用多少空间

    第2步是我正在努力改进的步骤.正如Tyler D所暗示的那样,目前我正在"谨慎行事".但我想做得更好.我买不起,genisomage -print-size因为它太慢了.同样,我不能将文件tar到磁盘,因为它只是太慢,但tar文件与ISO 9660图像的大小不同.这是我需要预测的ISO 9660图像的大小.原则上这可以完全准确地完成,但我不知道该怎么做.这就是问题所在.


注意:这些文件位于具有3TB硬盘存储空间的计算机上.在所有情况下,文件的平均大小至少为10MB; 有时候它会大得多.所以有可能genisomage毕竟会足够快,但我怀疑它 - 似乎通过将ISO映像写入/ dev/null来工作,我无法想象当图像大小接近时它会足够快4.7GB.我现在无法访问该计算机,或者当我发布原始问题时.当我确实在晚上访问时,我会尝试获得更好的数字.但我认为这不是genisomage一个好的解决方案 - 虽然它可能是学习文件系统模型的好方法,它告诉我它是如何工作的.知道块大小为2KB已经很有帮助.

知道同一目录中的文件被刻录到samae DVD也很有用,这简化了搜索.我希望直接访问这些文件,这会排除tar-before-burning.(大多数文件都是音频或视频,这意味着尝试使用它们没有意义gzip.)

filesystems dvd-burning iso9660

6
推荐指数
1
解决办法
2844
查看次数

ECMA-119 规范中提到的 ISO 2375 和 2735 标准是什么?

超出 ECMA-119 规范:

8.5 补充卷描述符

...

8.5.3 卷标志(BP 8):

该字段的位应从最低有效位开始编号为 0 到 7。该字段应指定卷的某些特性如下。

位 0:

如果设置为零,则表示转义序列字段仅指定根据 ISO 2735注册的转义序列;

如果设置为 ONE,则表示转义序列字段指定了至少一个未根据 ISO 2375注册的转义序列。

在 iso.org 上,我找到了 ISO- 2735标准:

密封金属食品容器——牛奶用圆形开顶和通气孔罐的容量和直径

和 ISO 2375标准:

数据处理——转义序列注册程序

有人可以确认“ISO 2735”是输入错误,意思是“ISO 2375”吗?是否有等效于 ISO 2375 的 ECMA 标准?

standards iso9660 ecma

5
推荐指数
1
解决办法
406
查看次数

来自C#的DVD ISO - .NET DiscUtils替代品

基于C#的文件夹结构制作.ISO文件的最佳方法是什么?是否有DiscUtils以外的开源库?遇到DiscUtils的问题,我想尝试另一条路径.我有什么选择?我更喜欢开源但可能也愿意为解决方案买单.

.net c# dvd iso9660

5
推荐指数
2
解决办法
6543
查看次数

在ISO 9660文件系统上加载文件

我刚刚读完在ISO 9660文件系统读取文件的文章,我对我怎么会去读取文件到内存困惑.我知道根目录位于PVD的偏移量156处,如何使用它来查找驻留在根目录中的文件,一旦找到文件名,我将如何找到该文件所在的地址,这样我就可以将它加载到内存中(使用int 0x13 AH = 42)?

filesystems x86 assembly bios iso9660

4
推荐指数
1
解决办法
1294
查看次数

标签 统计

iso9660 ×6

filesystems ×2

.net ×1

archive ×1

assembly ×1

bios ×1

c# ×1

delphi ×1

dvd ×1

dvd-burning ×1

ecma ×1

java ×1

standards ×1

x86 ×1