Tengo 200 GB de espacio libre en disco, 16 GB de RAM (de los cuales ~ 1 GB está ocupado por el escritorio y el núcleo) y 6 GB de intercambio.
Tengo un SSD externo de 240 GB, con 70 GB utilizados 1 y el resto libre, que necesito hacer una copia de seguridad en mi disco.
Normalmente, dd if=/dev/sdb of=Desktop/disk.img
primero usaría el disco y luego lo comprimiría, pero hacer la imagen primero no es una opción, ya que hacerlo requeriría mucho más espacio en el disco que el que tengo, aunque el paso de compresión provocará que el espacio libre se aplaste, por lo que El archivo final puede caber fácilmente en mi disco.
dd
escribe en STDOUT de forma predeterminada y gzip
puede leer desde STDIN, por lo que, en teoría, puedo escribir dd if=/dev/sdb | gzip -9 -
, pero gzip
tarda mucho más en leer los bytes que dd
puede producirlos.
De man pipe
:
Los datos escritos en el extremo de escritura de la tubería se almacenan en el núcleo hasta que se leen desde el extremo de lectura de la tubería.
Visualizo un |
como una tubería real: una aplicación introduce datos y la otra saca datos de la cola de la tubería lo más rápido posible.
¿Qué sucede cuando el programa del lado izquierdo escribe más datos más rápido de lo que el otro lado de la tubería puede esperar procesar? ¿Causará un uso extremo de memoria o intercambio, o el núcleo intentará crear un FIFO en el disco, llenando así el disco? ¿O simplemente fallará SIGPIPE Broken pipe
si el búfer es demasiado grande?
Básicamente, esto se reduce a dos preguntas:
- ¿Cuáles son las implicaciones y los resultados de insertar más datos en una tubería de los que se leen a la vez?
- ¿Cuál es la forma confiable de comprimir un flujo de datos en el disco sin poner todo el flujo de datos sin comprimir en el disco?
Nota 1: No puedo simplemente copiar exactamente los primeros 70 GB usados y esperar obtener un sistema o sistema de archivos que funcione, debido a la fragmentación y otras cosas que requerirán que el contenido completo esté intacto.
lzop
lugar de gzip
; se comprime mucho más rápido con solo una relación de compresión ligeramente inferior. Lo encuentro ideal para imágenes de disco donde la velocidad de compresión puede ser un verdadero cuello de botella.