GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Dd está creando un archivo enorme cuando intento crear una imagen de disco de copia de seguridad?

He estado tratando de hacer que CUDA funcione en mi sistema y en el proceso de jugar con los controladores de nvidia he roto ubuntu tan mal que he tenido que reformatear la partición de mi disco varias veces. Ahora he sido golpeado con ese palo tantas veces que estoy tratando de hacer una copia de seguridad de mi partición una vez que he instalado todas mis herramientas y programas y esas cosas, usando dd (según lo recomendado por un amigo).

Sin embargo, cuando corrí

sudo dd if=/dev/sda4 of=~/backup.img

Eventualmente recibí un error de que mi unidad se quedó sin espacio. Esto fue extraño para mí, ya que la partición es bastante grande y solo tengo una instalación nueva de ubuntu junto con algunos (pequeños) programas.

Supuse que lo que podría estar pasando es que intentaba escribir una copia de lo que ya había escrito de forma recursiva, así que intenté escribir el archivo directamente en otra partición:

sudo dd if=/dev/sda4 of=/media/Ye\ Olde\ Data/ubuntu\ reinstall\ backup/backup.img

Pero esto tomó una eternidad y aborté el proceso una vez que el archivo alcanzó un tamaño que estaba bastante seguro de que era demasiado grande para contener solo los datos que quería.

¿Qué está pasando? ¿Es que /media tiene montadas las otras particiones y, por lo tanto, trata a las otras particiones como parte de /dev/sda4? ¿Es que dd copia la partición completa byte por byte, ignorando qué bytes realmente tienen archivos?

Y en cualquier caso, ¿cómo puedo hacer lo que estoy tratando de hacer correctamente?

Ah, y aquí está la información de mi disco, en caso de que sea importante:

sudo sfdisk -l /dev/sda

Disk /dev/sda: 62260 cylinders, 255 heads, 63 sectors/track
Warning: extended partition does not start at a cylinder boundary.
DOS and Linux will interpret the contents differently.
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sda1   *      0+     12-     13-    102400    7  HPFS/NTFS/exFAT
/dev/sda2         12+  14602-  14590- 117187500    7  HPFS/NTFS/exFAT
/dev/sda3      29192+  62260-  33069- 265622493+   5  Extended
/dev/sda4      14602+  29191-  14590- 117193728   83  Linux
/dev/sda5      61228+  62260-   1032-   8287232   82  Linux swap / Solaris
/dev/sda6      29192+  61227   32036- 257329138+   7  HPFS/NTFS/exFAT

Respuesta aceptada:

Si copia una partición con dd , el archivo de salida será tan grande como la partición. dd hace una copia física del disco, no tiene conocimiento de espacios en blanco o usados.

Sin embargo, si comprime el archivo de resultados, ahorrará mucho espacio, dado que el espacio en blanco se comprimirá muy bien (cuidado, esto va a ser computacionalmente muy pesado). Incluso puedes comprimir la salida de dd sobre la marcha, con algo en la línea de dd if=/dev/sdaX | gzip -c > compressed_file.gz .

muy importante:

Además, no puedes (nunca) hacer un dd en una partición en vivo (montada)
, los datos registrados serán totalmente inconsistentes y
absolutamente inútiles para una copia de seguridad. Piénselo:los bloques de datos se
asignan, mueven y eliminan continuamente; es como tomar una foto
con un tiempo de exposición prolongado a un objetivo en movimiento.

Para copiar la partición con dd debe arrancar desde uno diferente:
USB en vivo o lo que sea.

¿Qué haría para resolver el problema en cuestión? (Aviso, solo instrucciones genéricas porque necesita saber lo que está haciendo)

Relacionado:¿Varias cuentas de Dropbox en la misma computadora?

Primera opción compre Norton Ghost o explore las opciones de código abierto:partimage y clonezilla (nunca lo probé).

Segunda opción hazlo manualmente:

  1. cree una partición adicional para las copias de seguridad, llámela /dev/sdX (o use una partición de datos común, lo que sea).

  2. para respaldar:

    • arranque con USB en vivo
    • montar la partición raíz real en /real
    • montar la partición extra en /extra
    • haga un tar grande, en la línea de (cd /real && tar cvf /extra/mybck.tar.gz)
  3. para restaurar

    • arranque con USB en vivo
    • montar la partición raíz real en /real
    • montar la partición extra en /extra
    • restaurar, en la línea de (cd /real && tar xvpf /extra/mybck.tar.gz) , cuidado con el p opción para conservar los metadatos
    • chroot en /real
    • actualice grub o el gestor de arranque que está utilizando

Puedes sustituir tar con su archivador preferido, solo asegúrese de que respetará la propiedad/modo de los archivos. rsync vale la pena explorar.


Ubuntu
  1. Linux:¿cómo crear un archivo de imagen de partición formateado desde cero?

  2. ¿Evitar archivos adicionales al crear Tar.gz?

  3. ¿Cuándo sería útil crear un enlace duro?

  4. Cómo crear un archivo de intercambio en un disco SSD con btrfs

  5. Crear imagen de partición de Windows en Linux

Comando Fdisk en Linux (Crear particiones de disco)

Utilidad DD:haga copias de seguridad y restaure fácilmente archivos de imagen de disco en Ubuntu

Cree un archivo de copia de seguridad de imagen ISO desde una carpeta en Ubuntu 17.10

¿Cómo montar un archivo de disco duro virtual (VHD) en Ubuntu Linux?

Cómo crear particiones de disco en Linux

Cómo crear particiones de disco usando cfdisk