3. SquashFS 工具详解

3.1. 使用 mksquashfs

mksquashfs 是用于创建新的 SquashFS 文件系统以及将新数据附加到现有 SquashFS 文件系统的工具。 mksquashfs 的通用命令行格式为

	bash# mksquashfs source1 source2 ... destination [options]

默认 mksquashfs 行为的注意事项

有关所有可能选项的更多详细信息,请参见下一节。

3.2. 命令行选项

下表显示了 mksquashfs 的所有可能选项。

表 1. mksquashfs 工具的命令行选项

选项描述
-2.0 强制 mksquashfs 版本 2.1 创建版本 2.0 文件系统
-all-root-root-owned使目标文件系统中的所有文件都归 root 用户(UID=0,GID=0)所有
-always-use-fragments将所有大于块大小的文件分成片段(通过版本 2.x)。 这将导致更高的压缩率
-b [块大小]使用 [块大小] 文件系统块大小(2.x 默认为 32 Kbytes,3.x 默认为 128 kbytes) - 可以是 4096、8192、16384、32768、65536 或 131072
-be-le分别强制使用大端或小端文件系统
-check-data启用额外的文件系统检查
-e [file1] ( [file2] ... )指定要从要创建的新文件系统中省略的文件和/或目录
-ef [file]指定一个文件,其中包含要排除的文件/目录列表
-force-gid [GID]将目标文件系统中的所有组 ID 设置为 [GID](可以指定为名称或数字)
-force-uid [UID]将目标文件系统中的所有用户 ID 设置为 [UID](可以指定为名称或数字)
-info在将文件添加到文件系统时,打印文件、其原始大小和压缩率
-keep-as-directory如果源是单个目录,则强制此目录成为创建的文件系统中根目录的子目录
-noappend如果目标文件/设备已经包含 SquashFS 文件系统,则覆盖它,而不是将新数据附加到现有文件系统
-no-duplicates不检测/删除重复的文件名
-noD-noDataCompression不压缩数据
-noF-noFragmentCompression不压缩片段(2.x 可用)
-no-fragments不生成片段块(2.x 可用,这将产生几乎与 1.x 相同的文件系统)
-noI-noInodeCompression不压缩 inode 表
-nopad不将结果文件系统填充到 4 KBytes 的倍数
-root-becomes [name]可以在附加到预先存在的 SquashFS 文件系统时使用:它将创建一个新的根目录,并且 [name] 目录将包含所有预先存在的文件/目录
-version打印版本、版权和许可消息
-recover [name]使用恢复文件 [name] 恢复文件系统数据 (3.3)
-no-recovery不创建恢复文件 (3.3)。
-no-exports不允许通过 NFS 导出文件系统 (3.x)
-no-sparse不检查稀疏文件 (3.x)
-processors [number]设置用于创建文件系统的 CPU 数量。 默认情况下,将使用所有可用的处理器 (3.x)
--read-queue [size]将输入队列设置为 [size] Mb。(默认为 64 Mb)(3.x)
-write-queue [size]将输出队列设置为 [size] Mb (3.x)
-sort [sort_file]根据 [sort_file] 中的优先级对文件进行排序 (3.x)
-wildcards启用扩展 shell 通配符以排除目录/文件(与 -e 一起使用)
-regex启用使用 POSIX 正则表达式 (3.3)

在大多数情况下,您应该保留所有压缩/块选项为默认值,因为它们允许 mksquashfs 达到最佳可能的压缩率。

3.3. 使用 unsquashfs

unsquashfs 是用于从 SquashFS 文件系统提取数据的工具。 unsquashfs 的通用命令行格式为

unsquashfs [options] target [files/directories to extract]

unsquashfs 行为的注意事项

下表显示了 unsquashfs 的所有可能选项。

表 2. unsquashfs 工具的命令行选项

选项描述
-v[ersion]打印版本、许可证和版权消息
-i[nfo]在从文件系统提取文件时打印文件
-l[ist]列出 SquashFS 文件系统,但不提取文件
-li列出文件及其属性,就像它们被解压缩一样 (3.3)
-ll列出 SquashFS 文件系统文件及其属性,无需任何提取 (3.3)
-d[estination] path指定解压缩项的目标路径
-f[orce]如果文件存在则覆盖它们
-s[tat]显示文件系统的超级块信息(它可以发现文件系统版本和用于压缩它的选项)(3.3)
-e[f] [extract file]要提取的目录或文件列表(每行给出一个条目)(3.3)
-r[egex]将提取名称视为 POSIX 正则表达式 (3.3)

请注意,在 3.x 版本中,您也可以提取 1.x 和 2.x SquashFS 文件系统。