1

is there any way to check the final size of a specific file after compression in a squashfs filesystem?

I'm looking through mksquashfs/unsquashfs command line options but I can't find anything.

Using the -info option in mksquashfs only prints the size before the compression.

Thanks

4

1 回答 1

3

这在粒度较大的情况下是不可行的,因为压缩是在块级别完成的,而不是文件级别。

一个文件可能在开始 50kb 时被标记为解压缩块 50 创建的缓冲区大小,并继续在解压缩块 52 中结束 50 个字节(忽略此处的片段,这是一个单独的问题)——但这不会让您映射回该文件开始的块 50的压缩副本内的位置。(您可以轻松确定块 51 的压缩比,但在我们的示例中,您无法轻松计算出包含在 50 和 52 中的文件部分的比率,因为它们与其他内容共享)。

所以信息不会被公开,因为它不容易获得。这实际上使大量(相似)小文件的存储效率显着提高,因为所有这些文件都使用一个压缩上下文(并且解压缩一个块以检索一个文件可能意味着您旁边的文件已经在内存中解压缩)... 但如果没有可能毫无根据的假设(例如假设一个块中的所有内容共享该块的平均比率),它对尝试回溯每个单独项目的压缩程度没有帮助,因为这些项目不是单独压缩的首先。

于 2018-07-06T16:58:55.253 回答