mksquashfs 是用于创建新的 SquashFS 文件系统以及将新数据附加到现有 SquashFS 文件系统的工具。 mksquashfs 的通用命令行格式为
bash# mksquashfs source1 source2 ... destination [options] |
source1, source2等等:要添加到结果文件系统中的文件和目录,使用相对和/或绝对路径给出
destination:常规文件(文件系统镜像文件)或块设备(例如/dev/fd0或/dev/hda3),您希望在其中创建 SquashFS 文件系统
默认 mksquashfs 行为的注意事项
当新文件添加到新文件系统或附加到现有文件系统时,mksquashfs 将自动重命名具有重复名称的文件:如果两个或多个名为text的文件将出现在同一结果目录中,则第二个文件将被重命名为text_1,第三个文件重命名为text_2等等。
重复文件将被删除,因此只会有一个物理实例(通过 SquashFS 2.x,您可以使用 -no-duplicates 选项禁用重复项的检测/删除)。
如果 destination 上已存在 SquashFS 文件系统,则默认情况下,新的 source 项将附加到现有根目录。查看下面的选项表以强制 mksquashfs 覆盖整个目标和/或更改添加新源项的方式。
如果给出了单个源文件或目录,则它将成为新创建的文件系统中的根目录。 如果给出了两个或多个源文件和/或目录,它们都将成为新文件系统根目录中的子项。
结果文件系统将填充到 4 Kb 的倍数:这是用于块设备上的文件系统所必需的。 如果您非常确定不需要此操作,请使用 -nopad 选项禁用此操作。
有关所有可能选项的更多详细信息,请参见下一节。
下表显示了 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 达到最佳可能的压缩率。
unsquashfs 是用于从 SquashFS 文件系统提取数据的工具。 unsquashfs 的通用命令行格式为
unsquashfs [options] target [files/directories to extract] |
target 是要提取的 SquashFS 文件系统。
unsquashfs 行为的注意事项
在不指定任何目标路径的情况下,unsquashfs 会将压缩的文件系统提取到 ./squashfs-root 目录中。
除非指定 -f 选项,否则该工具不会在已存在的目录上提取 SquashFS 文件系统。
您可以在命令行上指定要提取的多个文件/目录,并且要提取的项目也可以在文件中使用 -e [file] 选项给出。
下表显示了 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 文件系统。