GNU/Linux >> Tutoriels Linux >  >> Linux

Quelle était la méthode de compression SquashFS ?

unsquashfs -s n'avait pas la capacité d'afficher le type de compression utilisé jusqu'à ce commit le 07 août 2009. Cela signifie que si vous exécutez squashfs-tools 4.0 ou antérieure, vous ne pourrez pas voir la méthode de compression utilisée.

À partir de ces informations, j'ai dérivé un moyen de lire le superbloc SquashFS 4.0 pour déterminer la méthode de compression utilisée (où $SQUASHFS est le chemin d'accès à votre fichier SquashFS) :

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

Alternativement, voici une fonction pour ceux qui voudraient taper le nom du fichier à la fin de la ligne :

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

Vous obtiendrez un nombre (entre 1 et 6 depuis SquashFS 4.4). Vous pouvez faire correspondre ce nombre au tableau suivant pour voir quelle méthode de compression a été utilisée :

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

Notez que le dd ci-dessus La commande ne fournira une sortie fiable que si le fichier que vous avez spécifié avait un superbloc SquashFS 4.0. La commande suivante affichera "Not SquashFS 4.0 " si le fichier $SQUASHFS n'a pas le nombre magique 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"

Explication

Dans les systèmes de fichiers SquashFS 4.0, la méthode de compression est stockée sur les 21 et 22 octets du superbloc en tant que type de données short . dd bs=1 count=2 skip=20 récupérera le short , od -An -tdI tournera le short en un nombre lisible par l'homme, et xargs est juste de se débarrasser des espaces de début.

Avant SquashFS 4.0, il n'y avait que le gzip méthode.

Ancienne réponse

unsquashfs a le -s drapeau pour afficher les informations du système de fichiers SquashFS.

Exemple d'utilisation :

[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

Si vous souhaitez simplement identifier le type de compression, vous pouvez diriger la sortie via awk '/^Compression/{print $2}' . Exemple :

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

Linux
  1. Linux vs Unix :Quelle est la différence ?

  2. Joyeux anniversaire au noyau Linux :Quelle est votre version préférée ?

  3. Quel a été le moment le plus important de l'histoire de Linux ?

  4. Qu'est-il arrivé à l'espace libre ?

  5. Quelle est la signification de POSIX ?

Qu'est-ce que le Shell sous Linux ?

iptables vs nftables :quelle est la différence ?

Qu'est-ce que la commande kill sous Linux ?

Qu'est-ce que la vulnérabilité Logjam ?

Qu'est-ce que le système de fichiers NSFS ?

Que se passe-t-il si la limite de 4 milliards de fichiers est dépassée dans une partition ext4 ?