GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuál fue el método de compresión SquashFS?

unsquashfs -s no tenía la capacidad de mostrar el tipo de compresión utilizado hasta este compromiso el 07 de agosto de 2009. Esto significa que si está ejecutando squashfs-tools 4.0 o anterior, no podrá ver el método de compresión utilizado.

A partir de esta información, derivé una forma de leer el superbloque SquashFS 4.0 para determinar el método de compresión utilizado (donde $SQUASHFS es la ruta a su archivo SquashFS):

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

Alternativamente, aquí hay una función para aquellos que deseen escribir el nombre del archivo al final de la línea:

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

Obtendrá un número (entre 1 y 6 a partir de SquashFS 4.4). Puede hacer coincidir ese número con la siguiente tabla para ver qué método de compresión se utilizó:

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

Tenga en cuenta que el dd anterior El comando solo proporcionará una salida confiable si el archivo que especificó tenía un superbloque SquashFS 4.0. El siguiente comando generará "Not SquashFS 4.0 " si el archivo $SQUASHFS no tiene el número mágico de 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"

Explicación

En los sistemas de archivos SquashFS 4.0, el método de compresión se almacena en los bytes 21 y 22 del superbloque como un tipo de datos short . dd bs=1 count=2 skip=20 recuperará el short , od -An -tdI convertirá el short en un número legible por humanos, y xargs es solo para deshacerse de los espacios iniciales.

Antes de SquashFS 4.0, solo existía el gzip método.

Respuesta antigua

unsquashfs tiene el -s indicador para mostrar información del sistema de archivos SquashFS.

Ejemplo de uso:

[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 solo desea identificar el tipo de compresión, puede canalizar la salida a través de awk '/^Compression/{print $2}' . Ejemplo:

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

Linux
  1. ¿Qué pasó con el espacio libre?

  2. ¿Qué es el truco LD_PRELOAD?

  3. ¿Cuál es el significado de *nix?

  4. ¿Cuál es el concepto de vruntime en CFS?

  5. ¿Cuál es la contraseña predeterminada de la pantalla?

Linux vs Unix:¿Cuál es la diferencia?

¿Qué es el Shell en Linux?

iptables vs nftables:¿Cuál es la diferencia?

¿Qué es el comando matar en Linux?

¿Qué es la vulnerabilidad de Logjam?

¿Qué es el enlazador de oro?