GNU/Linux >> Znalost Linux >  >> Linux

Jaká byla metoda komprese SquashFS?

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-s příznak pro zobrazení informací o souborovém systému SquashFS.

Příklad použití:

[email protected] [/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:

[email protected] [/tmp]# unsquashfs -s template.squashfs | awk '/^Compression/{print $2}'
gzip

Linux
  1. Co znamená POSIX?

  2. Co znamená *nix?

  3. Jaký je koncept vruntime v CFS

  1. Jaké je použití $# v Bash

  2. Jaký je rozdíl mezi procfs a sysfs?

  3. Co je to souborový systém NSFS?

  1. Co se stane, když byl překročen limit 4 miliard souborů v oddílu ext4?

  2. Co je zlatý linker?

  3. Jaký je uživatel debian-+?