Squashfs проверяет размер сжатого файла

Есть ли способ проверить окончательный размер определенного файла после сжатия в файловой системе squashfs?

Я просматриваю параметры командной строки mksquashfs / unsquashfs, но ничего не могу найти.

С использованием -info опция в mksquashfs печатает только размер перед сжатием.

Спасибо

1 ответ

Это невозможно осуществить с большой степенью детализации, поскольку сжатие выполняется на уровне блоков, а не на уровне файлов.

Файл может быть помечен, начиная с размера 50 КБ, в размер буфера, созданного декомпрессионным блоком 50, и продолжая оканчивать 50 байтов в декомпрессированный блок 52 (игнорируя фрагменты, которые являются отдельной проблемой), - но это не позволяет Вы возвращаетесь обратно в положение внутри сжатой копии блока-50, где начинается этот файл. (Вы можете легко определить степень сжатия для блока 51, но вы не можете легко определить соотношения для частей файла, содержащихся в 50 и 52 в нашем примере, потому что они используются совместно с другим содержимым).

Таким образом, информация не раскрывается, потому что она не легко доступна. Это на самом деле делает хранение множества (похожих) небольших файлов значительно более эффективным, поскольку для всех них используется один контекст сжатия (а распаковка блока для извлечения одного файла может означать, что у вас есть файлы, которые уже распакованы в памяти))... но без потенциально необоснованных предположений (таких как допущение, что все содержимое в блоке совместно использует среднее отношение этого блока), это не помогает попытаться отследить, насколько хорошо каждый отдельный элемент сжат, потому что элементы не сжимаются индивидуально на первом месте.

Другие вопросы по тегам