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 kpartx
versiones más recientes o losetup
con su -P
bandera 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
squashfs
para comprimir imágenes de disco y luego montarlas.Crea la imagen de disco
Si aún no tiene una imagen de disco, úsela
dd
para 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
squashfs
imagen: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
losetup
para adjuntar la imagen dd a un dispositivo de bucle (posiblemente opcional) y luegokpartx -a
opartprobe
para buscar y separar las particiones en dispositivos separados, o inclusovgscan
/vgchange -ay
si hay LVM.fuente
ro,noload
opciones:mount -o ro,noload /mnt/squash/sda1.img /mnt/sda1
Pude 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
xz
opción de--block-size=16MiB
deberí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-fork
le 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.-v
puede / mostrará demasiados mensajes de estado, especialmente al leer.Ejecutar cliente (en otra terminal / ventana)
El
-nofork
es similar a la-no-fork
anterior, 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/nbd0
ahora es idéntico a la imagen NO COMPRIMIDA/dev/nbd0
ahora 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.xz
funcionó muy bien con el mismo comando de clientenbdkit 1.1.11
utiliza 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,
.iso
archivo conDisk Image Mounter
.fuente
dd if=/dev/zero
y el rodillo de archivos) y en realidad agrega 362k de datos (sobrecarga iso, supongo). Gracias, sin embargo, la idea está en el camino correcto