unsquashfs -s
не было возможности отображать тип сжатия, используемый до этой фиксации 7 августа 2009 года. Это означает, что если вы используете squashfs-tools
версии 4.0 или старше, вы не сможете увидеть используемый метод сжатия.
Из этой информации я получил способ прочитать суперблок SquashFS 4.0, чтобы определить используемый метод сжатия (где SQUASHFS
- это путь к вашему файлу SquashFS):
dd if=SQUASHFS bs=1 count=2 skip=20 2>/dev/zero | od -An -tdI | xargs
Кроме того, вот функция для тех, кто хотел бы ввести имя файла в конце строки:
sqsh_comp_method(){ dd if="$1" bs=1 count=2 skip=20 2>/dev/zero|od -An -tdI | xargs;};sqsh_comp_method
Вы получите число (от 1 до 5, начиная с SquashFS 4.3). Вы можете сопоставить это число со следующей таблицей, чтобы увидеть, какой метод сжатия использовался:
╔═══╦════════════════════╦════════════════════╗
║ # ║ Compression Method ║ Compatible Version ║
╠═══╬════════════════════╬════════════════════╣
║ 1 ║ gzip ║ 1.0 and newer ║
║ 2 ║ lzma ║ 4.1 and newer ║
║ 3 ║ lzo ║ 4.1 and newer ║
║ 4 ║ xz ║ 4.2 and newer ║
║ 5 ║ lz4 ║ 4.3 and newer ║
╚═══╩════════════════════╩════════════════════╝
(Источник)
Обратите внимание, что приведенная выше команда dd
будет обеспечивать надежный вывод только в том случае, если указанный файл имеет суперблок SquashFS 4.0. Следующая команда выведет « Not SquashFS 4.0
», если файл SQUASHFS
не имеет магического номера SquashFS 4.0:
if [[ "$(dd if=SQUASHFS bs=1 count=4 skip=28 2>/dev/zero | xxd -p)" != "04000000" ]] ; then echo -n "Not " ; fi ; echo "SquashFS 4.0"
объяснение
В файловых системах SquashFS 4.0 метод сжатия сохраняется в 21- м и 22- м байтах суперблока как short
тип данных. dd bs=1 count=2 skip=20
извлечет short
, od -An -tdI
превратит short
в удобочитаемое число, а xargs
просто избавится от ведущих пробелов.
До SquashFS 4.0 существовал только метод gzip .
Старый ответ
unsquashfs
есть флаг -s
для отображения информации о файловой системе SquashFS.
Пример использования:
deltik@node51 [/tmp]# unsquashfs -s template.squashfs
Found a valid SQUASHFS 4:0 superblock on template.squashfs.
Creation or last append time Thu Apr 30 23:07:23 2015
Filesystem size 47225242.44 Kbytes (46118.40 Mbytes)
Compression gzip
Block size 131072
Filesystem is exportable via NFS
Inodes are compressed
Data is compressed
Fragments are compressed
Always_use_fragments option is not specified
Xattrs are compressed
Duplicates are removed
Number of fragments 23629
Number of inodes 437076
Number of ids 1
Если вы просто хотите определить тип сжатия, вы можете передать вывод через awk '/^Compression/{print $2}'
. Пример:
deltik@node51 [/tmp]# unsquashfs -s template.squashfs | awk '/^Compression/{print $2}'
gzip