GNU/Linux >> Linux Esercitazione >  >> Linux

Qual era il metodo di compressione SquashFS?

unsquashfs -s non era in grado di visualizzare il tipo di compressione utilizzato fino a questo commit del 07 agosto 2009. Ciò significa che se stai eseguendo squashfs-tools 4.0 o precedente, non sarai in grado di vedere il metodo di compressione utilizzato.

Da queste informazioni, ho ricavato un modo per leggere il superblocco SquashFS 4.0 per determinare il metodo di compressione utilizzato (dove $SQUASHFS è il percorso del tuo file SquashFS):

dd if=$SQUASHFS bs=1 count=2 skip=20 2>/dev/zero | od -An -tdI | xargs

In alternativa, ecco una funzione per coloro che desiderano digitare il nome del file alla fine della riga:

sqsh_comp_method(){ dd if="$1" bs=1 count=2 skip=20 2>/dev/zero|od -An -tdI | xargs;};sqsh_comp_method

Otterrai un numero (tra 1 e 6 a partire da SquashFS 4.4). Puoi abbinare quel numero alla tabella seguente per vedere quale metodo di compressione è stato utilizzato:

╔═══╦════════════════════╦════════════════════╗
║ # ║ 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      ║
╚═══╩════════════════════╩════════════════════╝

Nota che il precedente dd Il comando fornirà un output affidabile solo se il file specificato aveva un superblocco SquashFS 4.0. Il seguente comando restituirà "Not SquashFS 4.0 " se il file $SQUASHFS non ha il numero magico di 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"

Spiegazione

Nei filesystem SquashFS 4.0, il metodo di compressione è memorizzato sui 21 e 22 byte del superblocco come tipo di dati short . dd bs=1 count=2 skip=20 recupererà short , od -An -tdI girerà il short in un numero leggibile dall'uomo e xargs è solo per eliminare gli spazi iniziali.

Prima di SquashFS 4.0, esisteva solo gzip metodo.

Vecchia risposta

unsquashfs ha il -s flag per la visualizzazione delle informazioni sul filesystem SquashFS.

Esempio di utilizzo:

[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

Se vuoi solo identificare il tipo di compressione, puoi reindirizzare l'output attraverso awk '/^Compression/{print $2}' . Esempio:

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

Linux
  1. Qual è l'uso di $# in Bash

  2. Qual è la password predefinita dello schermo?

  3. Cos'è il file system NSFS?

  4. Cosa succede se il limite di 4 miliardi di file è stato superato in una partizione ext4?

  5. Cos'è il linker d'oro?

Che cos'è la shell in Linux?

Cosa è successo allo spazio libero?

iptables vs nftables:qual è la differenza?

Qual è il comando kill in Linux?

Che cos'è la vulnerabilità di Logjam?

Qual è la differenza tra procfs e sysfs?