unsquashfs -s až do tohoto odevzdání dne 07. srpna 2009 neměl možnost zobrazit typ komprese použitý. To znamená, že pokud používáte squashfs-tools 4.0 nebo starší, neuvidíte použitou metodu komprese.
Z těchto informací jsem odvodil způsob, jak číst superblok SquashFS 4.0, abych určil použitou metodu komprese (kde $SQUASHFS je cesta k vašemu souboru SquashFS):
dd if=$SQUASHFS bs=1 count=2 skip=20 2>/dev/zero | od -An -tdI | xargs
Alternativně je zde funkce pro ty, kteří by chtěli zadat název souboru na konec řádku:
sqsh_comp_method(){ dd if="$1" bs=1 count=2 skip=20 2>/dev/zero|od -An -tdI | xargs;};sqsh_comp_method
Získáte číslo (mezi 1 a 6 od SquashFS 4.4). Toto číslo můžete přiřadit k následující tabulce, abyste viděli, jaká metoda komprese byla použita:
╔═══╦════════════════════╦════════════════════╗
║ # ║ 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 ║
║ 6 ║ zstd ║ 4.4 and newer ║
╚═══╩════════════════════╩════════════════════╝
Všimněte si, že výše dd příkaz poskytne spolehlivý výstup pouze v případě, že vámi zadaný soubor měl superblok SquashFS 4.0. Následující příkaz vypíše "Not SquashFS 4.0 " pokud je soubor $SQUASHFS nemá magické číslo 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"
Vysvětlení
V souborových systémech SquashFS 4.0 je metoda komprese uložena na 21 a 22 bajtech superbloku jako datový typ short . dd bs=1 count=2 skip=20 načte short , od -An -tdI změní short na číslo čitelné pro člověka a xargs je jen zbavit se úvodních mezer.
Před SquashFS 4.0 existoval pouze gzip metoda.
Stará odpověď
unsquashfs má -s příznak pro zobrazení informací o souborovém systému SquashFS.
Příklad použití:
example@unixlinux.online [/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
Pokud chcete pouze identifikovat typ komprese, můžete výstup zpracovat přes awk '/^Compression/{print $2}' . Příklad:
example@unixlinux.online [/tmp]# unsquashfs -s template.squashfs | awk '/^Compression/{print $2}'
gzip