unsquashfs -s
hatte bis zu diesem Commit am 7. August 2009 nicht die Möglichkeit, den verwendeten Komprimierungstyp anzuzeigen. Das bedeutet, wenn Sie squashfs-tools
ausführen 4.0 oder älter, können Sie die verwendete Komprimierungsmethode nicht sehen.
Aus diesen Informationen habe ich eine Möglichkeit abgeleitet, den SquashFS 4.0-Superblock zu lesen, um die verwendete Komprimierungsmethode zu bestimmen (wobei $SQUASHFS
ist der Pfad zu Ihrer SquashFS-Datei):
dd if=$SQUASHFS bs=1 count=2 skip=20 2>/dev/zero | od -An -tdI | xargs
Alternativ ist hier eine Funktion für diejenigen, die den Dateinamen am Ende der Zeile eingeben möchten:
sqsh_comp_method(){ dd if="$1" bs=1 count=2 skip=20 2>/dev/zero|od -An -tdI | xargs;};sqsh_comp_method
Sie erhalten eine Zahl (zwischen 1 und 6 ab SquashFS 4.4). Sie können diese Nummer der folgenden Tabelle zuordnen, um zu sehen, welche Komprimierungsmethode verwendet wurde:
╔═══╦════════════════════╦════════════════════╗
║ # ║ 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 ║
╚═══╩════════════════════╩════════════════════╝
Beachten Sie, dass die obigen dd
Der Befehl liefert nur dann eine zuverlässige Ausgabe, wenn die von Ihnen angegebene Datei einen SquashFS 4.0-Superblock hatte. Der folgende Befehl gibt "Not SquashFS 4.0
aus " Wenn die Datei $SQUASHFS
hat nicht die magische Nummer von 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"
Erklärung
In SquashFS 4.0-Dateisystemen wird die Komprimierungsmethode auf den 21 und 22 Bytes des Superblocks als Datentyp short
gespeichert . dd bs=1 count=2 skip=20
ruft den short
ab , od -An -tdI
dreht den short
in eine menschenlesbare Zahl und xargs
ist nur, die führenden Leerzeichen loszuwerden.
Vor SquashFS 4.0 gab es nur das gzip Methode.
Alte Antwort
unsquashfs
hat den -s
Flag zum Anzeigen von SquashFS-Dateisysteminformationen.
Beispielverwendung:
[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
Wenn Sie nur den Komprimierungstyp identifizieren möchten, können Sie die Ausgabe durch awk '/^Compression/{print $2}'
leiten . Beispiel:
[email protected] [/tmp]# unsquashfs -s template.squashfs | awk '/^Compression/{print $2}'
gzip