Cómo hacer copia de seguridad y restaurar su servidor mediante imágenes de disco con dd
dd crea una imagen sector a sector de un disco completo. Puede usar esta imagen para restaurar el disco al estado en que se encontraba en el momento de la copia de seguridad. Esta guía muestra cómo crear una imagen de disco con dd y cómo restaurarla. Dado que dd funciona a nivel de disco, ejecútelo desde un entorno live (Finnix), no desde el sistema en ejecución que está copiando.
Use dd cuando necesite una copia a nivel de bloque de un disco completo. Para copias de seguridad a nivel de archivo (archivos y carpetas individuales), rsync o tar suelen ser más adecuados.
Antes de empezar
- ISO de Finnix
- acceso al IP-KVM del servidor (KVM basado en IP)
- almacenamiento con suficiente espacio libre para la imagen (vea la nota en los escenarios de copia de seguridad)
- credenciales SSH, si realiza la copia de seguridad en almacenamiento remoto
- acceso root
1. Breve nota sobre dd
dd copia los datos bloque a bloque. Las partes relevantes del comando:
- if= origen (de dónde se lee)
- of= destino (dónde se escribe)
- bs=8M establece el tamaño de bloque y puede mejorar el rendimiento de la copia
- status=progress muestra cuánto se ha copiado, útil en discos grandes
De forma predeterminada, los comandos siguientes copian un disco en buen estado. Si el disco de origen tiene errores de lectura, agregue conv=noerror,sync: dd continuará más allá de los errores de lectura en lugar de detenerse, y rellenará los bloques ilegibles con ceros. Esto mantiene alineados los bloques siguientes, pero las áreas rellenadas pierden sus datos, por lo que el sistema de archivos de la imagen puede quedar dañado. Para un disco que está fallando, considere usar ddrescue, diseñado para recuperar datos de discos defectuosos y que mantiene un mapa de los errores de lectura.
dd sobrescribe el destino por completo y sin preguntar. Un of= incorrecto destruye datos. Compruebe siempre los nombres de los dispositivos antes de ejecutar cualquier comando.
2. Preparación
Arranque desde Finnix. Monte la ISO de Finnix a través de IP-KVM y arranque el servidor desde ella. Esto le permite trabajar con los discos del servidor sin ejecutar el sistema operativo instalado desde el disco que está respaldando. Evite crear una imagen de un sistema en ejecución: si el disco de origen tiene sistemas de archivos montados que se están modificando, la imagen puede quedar inconsistente. Asegúrese de que el disco de origen no esté en uso por el entorno en ejecución.
Identifique los discos. Liste los discos con sus tamaños y puntos de montaje:
lsblk -o NAME,SIZE,TYPE,MOUNTPOINTS
Como alternativa:
fdisk -l
Localice el disco del sistema (por ejemplo, /dev/sda) y anote su nombre de dispositivo. Este es el paso más importante: dd no pide confirmación, por lo que un error aquí borra el disco equivocado. En los comandos siguientes, /dev/sda es solo un ejemplo. Sustitúyalo por el disco real que identificó con lsblk. Asegúrese de que el disco de origen no muestre puntos de montaje en la salida de lsblk antes de crear su imagen.

3. Escenario A: copia de seguridad en almacenamiento en la nube mediante SSHFS (CloudBox)
Use esto para almacenar la imagen en INTROSERV CloudBox o en cualquier almacenamiento SSH. Tome las credenciales SSH (usuario, host, ruta) de los detalles de su pedido.
Cree un punto de montaje:
mkdir -p /mnt/backup
Monte el almacenamiento en la nube:
sshfs user@host:/path /mnt/backup
Cree la imagen de disco:
dd if=/dev/sda of=/mnt/backup/sda.img bs=8M status=progress
Cuando dd finaliza, informa cuántos datos se copiaron. La imagen sda.img ya está en su almacenamiento en la nube.
Una copia grande a través de SSHFS puede ser lenta. Si la conexión SSH se interrumpe, la copia puede fallar y la imagen puede quedar incompleta.
El tamaño de la imagen es aproximadamente el tamaño de todo el disco de origen, no la cantidad de datos utilizados. Un disco de 2 TB con 100 GB de datos igualmente produce una imagen de unos 2 TB. Asegúrese de que el almacenamiento tenga suficiente espacio libre.
Opcional: para ahorrar espacio y reducir la transferencia de red, comprima la imagen mientras la crea:
dd if=/dev/sda bs=8M status=progress | gzip -c > /mnt/backup/sda.img.gz
Restaure una imagen comprimida con:
gunzip -c /mnt/backup/sda.img.gz | dd of=/dev/sda bs=8M status=progress
El tamaño comprimido depende de cuán compresible sea el contenido del disco. La verificación de suma de comprobación siguiente se aplica a un archivo .img sin comprimir.
4. Escenario B: copia de seguridad en otro disco físico del mismo servidor
Use esto si el servidor tiene un segundo disco (por ejemplo, /dev/sdb) con espacio suficiente para almacenar la imagen. El disco de destino debe tener suficiente espacio libre para una imagen de todo el disco de origen y no debe ser el disco de origen.
Cree un punto de montaje y monte el segundo disco:
mkdir -p /mnt/backup mount /dev/sdb1 /mnt/backup
Cree la imagen de disco:
dd if=/dev/sda of=/mnt/backup/sda.img bs=8M status=progress
5. Verificar la imagen (opcional)
Para verificar la imagen, calcule la suma de comprobación SHA-256 del disco de origen y de la imagen, y compárelas. El disco de origen no debe cambiar entre la creación de la imagen y el cálculo de la suma de comprobación. Esto vuelve a leer todo el disco, por lo que lleva tiempo en discos grandes:
sha256sum /dev/sda sha256sum /mnt/backup/sda.img
Ambos valores deben coincidir.
6. Restauración
La restauración es la copia de seguridad en sentido inverso: la imagen se convierte en el origen (if=) y el disco se convierte en el destino (of=). Vuelva a arrancar desde Finnix y monte el almacenamiento que contiene la imagen, de la misma manera que durante la copia de seguridad.
Antes de restaurar, asegúrese de que el disco de destino no sea más pequeño que el original. No se puede restaurar una imagen de disco completo en un disco más pequeño, incluso si se usaron pocos datos en el origen.
Desde almacenamiento en la nube:
dd if=/mnt/backup/sda.img of=/dev/sda bs=8M status=progress
Desde un segundo disco, móntelo primero y luego ejecute el mismo comando. Aquí también /dev/sda es solo un ejemplo. Sustitúyalo por el disco de destino real.
La restauración sobrescribe todo el disco de destino. Asegúrese de que of= apunte al disco que desea restaurar. Cuando dd finalice, reinicie el servidor y arranque desde el disco restaurado.
Si el disco de destino es más grande que el original, el espacio adicional queda sin usar. Posteriormente puede ampliar la partición y el sistema de archivos si es necesario; los comandos exactos dependen del diseño de la partición y del sistema de archivos. Si restaura en hardware diferente, puede ser necesaria una configuración de arranque adicional. Si el disco de origen utiliza LVM, LUKS, RAID u otra capa de almacenamiento, puede ser necesaria una configuración adicional después de la restauración, especialmente en hardware diferente.