loc*_*ost 4 tar zip compression rar squashfs
我喜欢使用 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'
Run Code Online (Sandbox Code Playgroud)
我想使用伪文件以相同的方式(即时)从 rar、tgz 或 zip 转换为 squashfs,因此我不必首先将整个存档提取到磁盘,然后在单独的操作中压缩到 squashfs 。
其中一些档案包含数千个单独的文件,其中一些文件的文件名中包含空格或其他特殊字符。
我查看了README,我认为我需要使用该-pf <pseudo-file>选项,但我不确定如何动态创建伪文件(并且也不存在带空格的文件名问题)。我想我需要使用进程替换来从源存档创建文件列表。
理想情况下,我希望有一个命令能够转换任何 rar、tgz 或 zip,而不必为每个存档单独创建伪文件,但如果有人可以告诉我如何使用其中一种存档格式来完成此操作,那么希望我能为其他人解决这个问题。
感谢大家。
您可以使用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
Run Code Online (Sandbox Code Playgroud)