Si hago una imagen de disco y la comprimo con gzip / xz / etc, ¿hay alguna forma de montarla directamente sin descomprimirla primero?
Digamos que he usado
sudo dd if=/dev/sdc1 | gzip -9 > image1.dd.gz
¿Cómo puedo montar la imagen original, sin crear primero una copia sin comprimir?
O he usado
sudo dd if=/dev/sdc | gzip -9 > wholedisk.dd.gz
y el disco tiene múltiples particiones, ¿eso lo haría más difícil?
Con una imagen descomprimida de un disco completo, el uso de kpartxversiones más recientes o losetupcon su -Pbandera debería crear un bucle para cada partición.
Pero, ¿hay alguna forma de montar / configurar / leer la imagen comprimida?
Si no funciona para gzip / xz, ¿hay algún método de compresión para el que funcione?
Nota sobre Q duplicada
El duplicado sugerido actualmente
- Montar una partición única de la imagen de todo el disco (dispositivo) , siendo una excelente Q útil
NO UTILIZA COMPRESIÓN , Y NO ES UN DUPLICADO .
mount no montará una imagen comprimida por sí misma.
fuente

Respuestas:
Puede usar
squashfspara comprimir imágenes de disco y luego montarlas.Crea la imagen de disco
Si aún no tiene una imagen de disco, úsela
ddpara crear una:Comprime la imagen con squashfs
Instalar
squashfs:Comprime la imagen:
O transmita la compresión (no necesita un archivo dd temporal)
Felicitaciones a terminator14 en UbuntuForums.org . Definiciones / Explicaciones:
empty-dir- "fuente" dir. Básicamente en nuestro caso, solo un directorio vacío para satisfacer el formato arg de entrada de mksquashfssquash.img- el destino y el nombre del archivo squashfs de salidasda_backup.img- el nombre de la copia de seguridad dd DENTRO del archivo squashfsf- especifica que sda_backup.img es un archivo normal (a diferencia de un directorio, dispositivo de bloque o dispositivo char)444- permisos del archivo sda_backup.img dentro de la imagen squashfsroot root- UID y GID para el archivo sda_backup.img dentro de la imagen de squashfs. Se puede especificar por números decimales o por nombredd if=/dev/sda bs=4M- el comando dd utilizado para leer el dispositivo que queremos respaldarMonta la imagen
Primero monte la
squashfsimagen:Esto presentará la imagen de disco sin comprimir para que la monte:
O si se trata de una imagen de unidad completa (particionada) que puede usar
losetuppara adjuntar la imagen dd a un dispositivo de bucle (posiblemente opcional) y luegokpartx -aopartprobepara buscar y separar las particiones en dispositivos separados, o inclusovgscan/vgchange -aysi hay LVM.fuente
ro,noloadopciones:mount -o ro,noload /mnt/squash/sda1.img /mnt/sda1Pude conseguir que un servidor NBD "sirviera" una versión sin comprimir de un archivo .gz o .xz. No estoy seguro de si tiene que leer todo el archivo comprimido con mucha frecuencia (solo probado hasta ahora con archivos pequeños en RAM), pero al menos funciona sin tener que extraer una copia completa sin comprimir.
Visualización de una imagen dd comprimida gz / xz "sobre la marcha"
Instalar nbdkit y cliente
Crear un archivo de estilo "dd" de demostración: un archivo vacío de 50M con un sistema de archivos ext y comprimirlo (Opcional solo para pruebas)
Luego comprima con gzip o xz
Nota: Una
xzopción de--block-size=16MiBdebería proporcionar un mejor rendimiento de acceso aleatorio, pero a expensas de una menor compresión (¿tal vez 1%?). Consulte la descripción del complemento xz de nbdkit .Ejecutar servidor en imagen COMPRIMIDA
o para xz
El
--no-forkle dice al servidor "No se bifurque en el fondo", por lo que ver posibles mensajes de error y matarlo con CTRL-C es un poco más fácil.-vpuede / mostrará demasiados mensajes de estado, especialmente al leer.Ejecutar cliente (en otra terminal / ventana)
El
-noforkes similar a la-no-forkanterior, pero podría no matar al cliente con CTRL-C,kill <pid>osudo kill <pid>. Finalizar el servidor con CTRL-C detuvo tanto el servidor como el cliente.Observe que
/dev/nbd0ahora es idéntico a la imagen NO COMPRIMIDA/dev/nbd0ahora puede usarse como la imagen sin comprimir; montada, de lectura / copiar condd, o usokpartx,partprobe,vgscan/vgchange, etc!Gracias a Cristian Ciupitu en Unix y Linux , aunque tomó un poco más de tiempo encontrar el complemento y poner todo en marcha.
fuente
nbdkit -v --no-fork -i 127.0.0.1 --filter=xz file ~/Downloads/50m.xzfuncionó muy bien con el mismo comando de clientenbdkit 1.1.11utiliza el protocolo NBD de edad, que se diferencia del nuevo protocolo NBD, utilizado ennbd-client 3.13, pero ca utilizar la versión NBD-cliente antes de 3.10, por ejemplonbd-client 3.8 from Ubuntu precise 12.04 old LTS[uso versiones antiguas sólo a nivel local para la seguridad!]Aquí está mi forma de hacerlo, no sé el equivalente de consola de esto, sin embargo,
.isoarchivo conDisk Image Mounter.fuente
dd if=/dev/zeroy el rodillo de archivos) y en realidad agrega 362k de datos (sobrecarga iso, supongo). Gracias, sin embargo, la idea está en el camino correcto