从文件夹创建高压缩 SquashFS

问题:

你有一个大型可压缩只读文件夹,占用大量磁盘空间。你想使用 SquashFS 压缩它。

解决方案

只需运行以下命令(用适当的文件/目录替换占位符):

mksquashfs_high_compression.sh
mksquashfs [source folder] [SquashFS target file] -b 1048576 -comp xz -Xdict-size 100%

此命令将整个源文件夹压缩到 SquashFS 目标文件中。有关压缩选项的信息请参见下文。

确保在使用此命令之前SquashFS目标文件不存在。如果它已存在,mksquashfs 尝试更新它,但这可能产生不希望的结果(我没有检查,它可能只产生大量错误消息但有效的输出文件)

你可以使用此命令挂载结果文件(假设目标文件夹存在且为空):

mount_squashfs.sh
mount [SquashFS file] [folder you want to mount it in]

如果此命令失败,你可能需要显式指定一些选项:

mount_squashfs_explicit.sh
mount -o loop -t squashfs [SquashFS file] [folder you want to mount it in]

如果你想自动挂载 SquashFS,你也可以添加这样的 /etc/fstab 条目:

fstab_squashfs.conf
[SquashFS file] [folder you want to mount it in] squashfs auto,defaults 0 0

XZ vs GZip 压缩

mksquashfs 默认使用 gzip(deflate)压缩,但如果压缩时间不如最终大小重要,你应该使用更新 SquashFS 版本的 xz(LZMA2)选项。

上面的命令激活 xz-comp xz),使用最高可能的压缩选项和最高可能的块大小(1 MiB 而不是默认的 128 kiB)。因此创建 SquashFS 文件的过程比使用默认选项慢,但结果文件小得多,可能(取决于磁盘 IO 时间等)稍快。LZMA2 是高度非对称压缩算法,因此解压缩比压缩快得多且使用更少内存


Check out similar posts by category: Linux