如何将TAR文件转换为ISO文件


9

我有一个Linux TAR文件,我想直接将其转换为ISO。有没有一种方法,最好不必首先提取文件的内容?

这将与以下问题类似;但是,这只针对普通或直接的tar文件,与bzip或bzip压缩的tar不相关。

这也是我打算在脚本中使用的内容,也是我不想首先提取它的原因。


从理论上讲,无需将每个文件都提取到磁盘即可(必须将它们从存档中提取才能放入新映像中),但是我不知道有什么能做的。
伊格纳西奥·巴斯克斯

为什么要这样做而不提取焦油?
尼尔斯

我想知道是否有一种方法可以将其传输到类似stdin的内容,然后再传输到iso文件中?
约翰

我不确定这是否行得通,因为我不确定100%是否正在执行命令。-tar -jxf / dev / stdin file.tar | mkisofs -o file.iso -stream-media-size 512
John

实际上为此使用了-stream-media-size选项!:-)有关信息,请参见genisoimage手册页 -当前,它在文档中为此选项提到了tar(并在示例中使用了tar)。
Abbafei 2012年

Answers:


6

使用AVFS来访问tar存档的内容,就好像它是一个目录一样。AVFS是基于FUSE构建的虚拟文件系统。将您喜欢的ISO构建器指向tar归档文件中的目录。

mountavfs
cd ~/.avfs/path/to/archive.tar\#
genisoimage -o /path/to/iso .

@ Gilles-感谢您的想法。看来这可能是个好主意;但是,我在CentOS 6上,尝试安装AVFS时遇到问题。
约翰

1

如果您的主要目的是为了加快过程并避免由于性能原因而导致不必要的磁盘活动,并且相对于tarball的大小有足够的RAM可用,则可以使用tmpfs将.tar提取到RAM中。除非您能够使用@bulleric的管道方法并且正在从一个磁盘读取并写入另一个磁盘,否则该选项很有可能是最快的。


0
archivemount /file.tar /media/ISO

或未压缩的.tar

genisoimage -o myfile.iso directory_src

可以是文件夹 /media/ISO 或点挂载 /media/cdrom


-2

您必须将其解压缩,但不必将其解压缩到硬盘驱动器,您可以使用stdtout并将其通过管道传输到genisoimage或mkisofs

tar --to-stdout xf tareddata.tar | genisoimage -o image.iso tareddata

测试一下: mount -o loop image.iso /mnt

您可以编写一个小的脚本来自动解决此问题

格里兹公牛


又如何分辨下一个文件?
伊格纳西奥·巴斯克斯

运行此命令时,我会遇到一系列错误,第一个错误是:tar:您必须指定-Acdtrux' or --test-label'选项之一。下一个错误是:I:未指定输入字符集,使用utf-8(在语言环境设置中检测到)。最后一个错误是:genisoimage:没有这样的文件或目录。无效的节点-“ tareddata”。
约翰

我要解决的第一个问题是我在tar中选择了错误的选项;在我看来:第二个嗯第一目录中获取extractet了相同的名称作为未提取的目录一样tardata.tar tardata
bulleric

抱歉,我很确定这不可能。-1。
MadHatter 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.