GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was war die SquashFS-Komprimierungsmethode?

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

Linux
  1. Was ist der LD_PRELOAD-Trick?

  2. Was bedeutet POSIX?

  3. Was bedeutet *nix?

  4. Was ist das Konzept von vruntime in CFS

  5. Was ist die Verwendung von $ # in Bash

Linux vs. Unix:Was ist der Unterschied?

Was ist die Shell unter Linux?

iptables vs. nftables:Was ist der Unterschied?

Was ist der Kill-Befehl in Linux?

Was ist die Logjam-Schwachstelle?

Was ist der Goldlinker?