我希望能够将多个文件合并到一个文件中,并且能够访问内部文件而无需进行任何类型的解包。像Mac的通用二进制文件。
这样的文件格式是否存在?
编辑
一些进一步的研究帮助我澄清了我想要的东西:a 单文件文件系统 。此时唯一的选项似乎是挂载的ISO文件。但是,总是欢迎更好的建议。
我希望能够将多个文件合并到一个文件中,并且能够访问内部文件而无需进行任何类型的解包。像Mac的通用二进制文件。
这样的文件格式是否存在?
编辑
一些进一步的研究帮助我澄清了我想要的东西:a 单文件文件系统 。此时唯一的选项似乎是挂载的ISO文件。但是,总是欢迎更好的建议。
Answers:
明确地解压缩/解压缩存档并不是绝对必要的。你想要一个FUSE( 用户空间中的文件系统 )允许你 mount
存档文件。
任何必要的解包/重新打包都在文件系统中完成,因此它对您用于访问或修改已安装存档中的文件的程序是透明的。
一个这样的项目是 archivemount
( 维基百科链接 , 源代码压缩包 )。它和各种其他项目都列在Sourceforge的维基上 存档文件系统页面 。不同的项目使用不同的库作为后端来完成实际工作。
有些项目似乎只支持读取操作,但许多项目都很年轻,可能会在以后包含写入功能。
archivemount
使用 libarchive
,访问cpio,.tar.gz,.tar.bz2档案 fuse-zip
使用 libzip
,包括.zip档案的写支持 avfs
(虚拟文件系统)“支持软盘,tar和gzip文件,zip,bzip2,ar和rar文件,ftp会话,http,webdav,rsh / rcp,ssh / scp”等。 理想情况下,用于存档的FUSE文件系统的工作方式有点像Windows资源管理器对浏览.zip文件的支持。
最好的办法是查看零压缩压缩格式。这是一个在Linux中使用命令行7zip的示例(尽管默认情况下可能没有安装)
7z a -mx0 archive folder
有关更多答案,请查看stackoverflow上发布的类似问题:
https://stackoverflow.com/questions/79136/how-do-i-create-a-container-file
你可以使用循环设备: http://en.wikipedia.org/wiki/Loop_device 。如何: http://www.walkernews.net/2007/07/01/create-linux-loopback-file-system-on-disk-file/ (来自serverfault的Zoredache的荣誉)
你可以看看klik是如何做到的: http://klik.atekon.de/wiki/index.php/Main_Page 它与Mac的dmg非常相似,它使用FUSE。