我喜欢使用 squashfs 进行压缩,因为将它们安装为循环设备来访问内部文件很简单。
我有很多 rar、tgz 和 zip 文件,我想将它们转换为 squashfs。
在这个答案,我发现在将磁盘映像压缩到squashfs时可以使用伪文件,以避免使用整个磁盘大小的临时文件。
mkdir empty-dir
mksquashfs empty-dir squash.img -p 'sda_backup.img f 444 root root dd if=/dev/sda bs=4M'
我想使用伪文件以相同的方式(即时)从 rar、tgz 或 zip 转换为 squashfs,因此我不必首先将整个存档提取到磁盘,然后在单独的操作中压缩到 squashfs 。
其中一些档案包含数千个单独的文件,其中一些文件的文件名中包含空格或其他特殊字符。
我在看自述文件,我想我需要使用该-pf <pseudo-file>
选项,但我不确定如何动态创建伪文件(并且也不存在带空格的文件名问题)。我想我需要使用进程替换来从源存档创建文件列表。
理想情况下,我希望有一个命令能够转换任何 rar、tgz 或 zip,而不必为每个存档单独创建伪文件,但如果有人可以告诉我如何使用其中一种存档格式来完成此操作,那么希望我能为其他人解决这个问题。
感谢大家。
答案1
您可以使用 或 来安装它们fuse-zip
,archivemount
然后从安装点创建 squashfs 文件。
例如,这适用于 zip 文件:
$ mkdir /tmp/zmnt
$ fuse-zip -r /path/to/file1.zip /tmp/zmnt
$ mksquashfs /tmp/zmnt /path/to/file1.squashfs
$ fusermount -u /tmp/zmnt
答案2
有tar2sqfs
来自
https://github.com/AgentD/squashfs-tools-ng/
可能至少是一个值得研究的替代方案。