Copia de seguridad y restauración de imágenes mediante dd

¿Qué es dd?

El comando dd es una utilidad para copiar y convertir archivos, de uso común en la mayoría de los sistemas operativos tipo Unix. Se puede utilizar para tareas como crear copias de seguridad de datos, clonar discos, crear imágenes de particiones, etc. Sin embargo, hay que tener cuidado al utilizar dd, ya que un uso inadecuado puede provocar la pérdida de datos.

A continuación se muestra la sintaxis básica del comando dd:

dd if=fichero_entrada of=fichero_salida [opciones]

Donde
- if (archivo de entrada) especifica el archivo de entrada o la fuente de datos.
- of (archivo de salida) especifica el archivo de salida o destino de los datos.

A continuación se muestran algunas opciones y parámetros comunes de dd:

1. bs (tamaño de bloque): Determina el tamaño del bloque de datos. Por ejemplo, bs=4K establece el tamaño del bloque en 4 kilobytes.
2. count (recuento): Especifica el número de bloques a copiar. Por ejemplo, count=100 copia 100 bloques de datos.
3. iflag y oflag: Opciones para controlar las banderas de entrada y salida. Por ejemplo, iflag=direct se puede utilizar para leer datos directamente, saltándose la caché del sistema operativo.
4. seek y skip: Opciones para mover el puntero del fichero de entrada o salida para iniciar o finalizar la copia desde una posición concreta.
5. estado: Opción para mostrar información sobre el progreso de la operación de copia.
6. conv (conversión): Permite realizar diversas conversiones de datos, como cambiar mayúsculas y minúsculas (conv=ucase o conv=lcase), borrar caracteres (conv=sync), etc.
7. iflag y oflag: Estas opciones permiten configurar banderas para los datos de entrada (iflag) y salida (oflag). Por ejemplo, direct puede utilizarse para leer o escribir datos directamente sin almacenamiento en búfer.
8. estado: Esta opción permite mostrar información relativa al progreso de la operación de copia.
9. buscar y saltar: Permiten mover el puntero del fichero de entrada o salida para iniciar la copia desde una posición concreta.

Veamos ejemplos del uso de dd para copiar archivos y directorios a un almacenamiento remoto en la nube proporcionado por Introserv utilizando el protocolo SSH y el comando rsync. Además, el ejemplo demostrará la copia de seguridad y restauración de una imagen del sistema utilizando un tercer disco. Nota importante: Comandos similares, con la especificación de un servidor de destino, le permitirá copiar directorios y archivos a cualquier servidor remoto a través de SSH. Además, para la integridad de los datos, utilizaremos una imagen de "recuperación" llamada Finnix.

Creación de una copia de seguridad de la imagen del sistema

1.Creación de una copia de seguridad:

Preparativos:
1. Descargue Finnix a su ordenador desde https://www.finnix.org.
2. 2. Conecte la imagen ISO a través de IP-KVM.
3. 3. Arranque el servidor desde la imagen ISO de Finnix.

2.Trabajar con Finnix

Exploraremos dos métodos, uno de los cuales es posible utilizando el Almacenamiento en la Nube de Introserv.

Para montar un almacenamiento de archivos remoto (almacenamiento en la nube) a través de SSH, se recomienda utilizar una herramienta como SSHFS (SSH File System), que le permite conectar directorios remotos en su equipo local utilizando el protocolo SSH. A continuación te explicamos cómo hacerlo:

2.1. Instale SSHFS.

Como ya está instalado en Finnix, no realizaremos este paso.

sudo apt-get install sshfs

2.2. Crea un directorio local donde quieras montar la carpeta remota.

Por ejemplo

sudo mkdir -p /root/mnt/backup

Este comando crea la estructura de directorios necesaria, incluyendo los directorios padre que falten (bandera -p).

2.3. Monte el directorio remoto a través de SSHFS:

sudo sshfs box17469@box17469.introserv.cloud:/backups ~/mnt/backup/

- box*****: El nombre de usuario SSH en el servidor remoto.
- box*****.introserv.cloud: La dirección IP o el nombre de host del servidor remoto.
- /backups: La ruta al directorio en cloudstorage.
- ~/remote_mount: La ruta al directorio local que creamos anteriormente, donde queremos montar nuestra carpeta remota desde cloudstorage.

El sistema nos pedirá la contraseña, que podemos encontrar en los detalles de la orden en la sección Backup.

2.4. Comprobar nuestra carpeta de red.

2.5. Para crear una copia de seguridad de tu sistema, utiliza el siguiente comando:

dd if=/dev/sda of=/root/mnt/backup/sda.ing bs=8M conv=sync,noerror

2 método es posible a través de un tercer disco u otro almacenamiento externo

2.1 Determinar el disco duro donde está instalado el sistema principal (en este caso, Ubuntu)

En este caso, es sda.

2.2 Monte también la carpeta del disco externo para poder colocar allí la imagen de copia de seguridad.

Para montar el sistema de archivos creado en el directorio /mnt/, ejecuta los siguientes comandos:

sudo mount /dev/sdX /mnt/папка # sustituye sdX por el dispositivo o partición específica (en este caso, tenemos sdb)

Para crear una copia de seguridad de tu disco duro, utiliza el siguiente comando:

dd if=/dev/sda of=/mnt/backup/sda.img bs=8M conv=sync,noerror

- if=/dev/sda - copia todo el disco duro sda;
- of=/mnt/backup/sda.img - copia a /mnt/backup/sda.img, donde el directorio /mnt/backup es el punto de montaje del disco que contendrá la imagen;
- bs=8M - establece el tamaño de la caché del disco duro para acelerar el proceso de copia (de lo contrario, los datos se volcarán en pequeños lotes de 512 bytes);
- conv=sync,noerror - indica a dd que copie bit a bit ignorando errores.

Restaurar una copia de seguridad del sistema en otro servidor o disco

1. Conexión de la imagen de rescate

  • Conecte la imagen ISO a través de IP-KVM.
  • Reinicie el servidor en la imagen ISO de Finnix.

2. Trabajando con Finnix

Al igual que con la copia de seguridad, tenemos dos maneras, utilizando CloudStorage:

2.1. Crear un directorio local donde queremos montar la carpeta remota. Por ejemplo

sudo mkdir -p /root/mnt/backup

2.2. Monte el directorio remoto a través de SSHFS:

sudo sshfs box17469@box17469.introserv.cloud:/backups ~/mnt/backup

El sistema le pedirá una contraseña, que puede encontrar en los detalles de la orden en la sección Copia de seguridad.

Compruebe también si la carpeta está montada.

ls -l /root/mnt/backup/

2.3. Encontrar la imagen firmada sda.img en nuestra unidad de red conectada.

Para restaurar el sistema a partir de una copia de seguridad, utilice el siguiente comando:

dd if=/root/mnt/backup/sda.img of=/dev/sda bs=8M conv=sync,noerror

2.4. Después de esto, reiniciamos en la BIOS

Configuramos el disco donde desplegamos el sistema para que sea la prioridad de arranque, reiniciamos e intentamos arrancar el sistema.

Además, vamos a considerar el despliegue de una imagen del sistema utilizando un tercer disco u otro almacenamiento:

2.1. Перезеграужаемся в Finniх.

Monte el almacenamiento de red o el disco con la imagen utilizando el comando sudo mount /dev/external_network_disk_or_storage /mnt/folder_for_mounting.

Encuentre la imagen firmada sda.img

Para restaurar el sistema a partir de una copia de seguridad, utilice el siguiente comando:

dd if=/mnt/backup/sda.img of=/dev/sda bs=8M conv=sync,noerror

Después de eso, reiniciamos en BIOS y establecemos el disco donde hemos desplegado el sistema como prioridad de arranque, reiniciamos e intentamos arrancar el sistema.