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