GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo clonar discos con el comando dd de Linux

En este tutorial, nos referiremos a un ejemplo práctico del comando dd de Linux que los administradores de sistemas pueden usar para migrar o clonar un sistema operativo Windows o un sistema operativo Linux desde un HDD más grande particionado en estilo de diseño MBR o GPT a un SSD más pequeño. En este extracto usaremos como ejemplo un sistema Windows instalado en un disco duro con múltiples particiones. Este método puede volverse bastante complicado en caso de que el HDD esté particionado en el esquema MBR y contenga una partición extendida con múltiples particiones lógicas o las particiones estén desordenadas. Le sugiero que no use este método si ese es el caso. En tales casos, es más seguro usar ddrescure, que puede clonar todo el diseño de su disco (tabla de particiones y bloques usados ​​dentro de cada partición) sin transferir realmente el espacio vacío. DDrescure se puede obtener instalando el paquete gddrescue desde los repositorios principales de Ubuntu.

PASO UNO - Partición reducida

Puede cambiar el tamaño de una partición de Linux o Windows (reducir) al tamaño mínimo utilizando una distribución de Linux en vivo como Gparted o ejecutar la utilidad GUI gparted desde la imagen ISO de Ubuntu Desktop Live. Otras distribuciones de Linux pagas que puede usar para manipular los tamaños del sistema de archivos de partición de disco (ext2, ext4, NTFS, xfs) son Partition Wizard o Parted Magic. También puede usar la utilidad diskmgmt.msc de Microsoft Windows para reducir una partición NTFS. Al reducir el espacio libre de una partición, el tiempo necesario que tardará dd en copiar bloques de disco no utilizados, en el caso de particiones grandes, se reducirá drásticamente. En el caso de una partición grande con solo un pequeño porcentaje de espacio utilizado, es recomendable reducir el sistema de archivos porque la utilidad dd también copiará el espacio no utilizado en el proceso (dd también copiará todos los bloques libres de una partición de 100 GB o 1 TB que tiene menos del 10 % del espacio utilizado).

PASO DOS:Clonar discos

Después de que la partición se redimensionó al mínimo, conecte físicamente el segundo disco o SSD en el controlador SATA/SCSI, etc. de la máquina y arranque la máquina con una distribución Live Linux. Una vez que la distribución de Linux en vivo se haya cargado en la RAM, abra una consola de Linux y ejecute fdisk -l /dev/sda (asumiendo que /dev/sda es su disco de instalación de Windows o unidad C:en el entorno de Windows) y anote el último " Sector final" (44898303 como se muestra en el siguiente ejemplo):

- Ejemplo uno:clonar disco MBR (sistema operativo Windows instalado en la segunda partición)

En este extracto, los discos están invertidos, por lo que /dev/sdb representa la instalación de Windows en el disco y /dev/sda representa el SSD vacío.

Luego ejecute el siguiente comando con privilegios de root para clonar el disco de instalación de Windows desde HDD (/dev/sdb) a SSD (/dev/sda). La utilidad pv no está instalada por defecto en Ubuntu. Puede instalarlo ejecutando:

sudo apt install pv

Luego inicie el proceso de clonación emitiendo el siguiente comando:

sudo dd if=/dev/sdb bs=512 count=44898303 conv=sync,noerror | pv -s 21G |sudo dd of=/dev/sda

ATENCIÓN:el disco de destino debe tener al menos el tamaño del espacio total ocupado por todas las particiones hasta la partición de Windows del disco de origen, incluida la partición de Windows.

Explicando el comando usado en el ejemplo anterior:

dd - dd significa "Copiar y convertir". Algunos podrían decir que significa 'Destructor de datos' (en caso de que engañe el comando, pueden ocurrir daños graves) o Duplicado de datos o Descripción de datos. ¡Utilice cualquier descripción que se adapte a sus necesidades!

if - el disco de origen (archivo de entrada/entrada)

bs:valor del tamaño del sector de la salida fdisk (tamaño del bloque o número de bytes que se leerán/escribirán una vez)

count - Último sector "Fin" de la salida fdisk incrementado en un número entero (+1) - Cuántos bloques de tamaño 512 deben copiarse antes de que se detenga. Aquí, debería transferir 44099584 sectores de 512 bytes de tamaño.

conv=sync,noerror:sincroniza la E/S y no se detiene en caso de que encuentre errores de bloque en el disco de origen

| - Linux pipe (canal de comunicación entre procesos en Linux o FIFO)

pv -s 21GB - monitorear el progreso de la clonación - Aproximadamente 21 GB deben transferirse a través de la canalización

de:el disco de destino donde se escriben realmente los datos canalizados (archivo de salida/salida)

En caso de que desee operar con un tamaño de bloque más grande que el tamaño de bloque de disco estándar (512), digamos hasta cuatro veces el tamaño de bloque estándar (2048), para acelerar las cosas, puede hacer algunos cálculos simples y multiplicar por cuatro el tamaño de bloque estándar del disco (512x4) y luego divida el número total de bloques +1 de la última partición por cuatro.

Ejemplo:

En este ejemplo, el "Fin" de sda2:44898303+1 dividido por 4. dd operará con un tamaño de bloque de 2048 bytes.

sudo dd if=/dev/sda bs=2048 count=44898303 conv=sync,noerror | pv -s 21G |sudo dd of=/dev/sdb

Una vez que finaliza el proceso (según el tamaño y la velocidad de su disco, puede demorar diez minutos o incluso horas), verifique el disco de destino con el mismo comando sfdisk y compare los resultados de ambos discos. Los resultados deberían ser similares.

- Ejemplo dos:clonar disco GPT (sistema operativo Windows instalado en la cuarta partición)

En este extracto, dd operará con un tamaño de bloque de hasta ocho veces el tamaño de bloque estándar (4096) para transferir más bloques a la vez. El sistema operativo Windows reside en la cuarta partición del disco duro. Todas las particiones anteriores de Windows también deben clonarse. El disco se copiará por completo hasta el último sector 19855359, que representa el final del límite de la partición de Windows. Los datos que siguen al sector 19855359+1 representan la partición D:en Windows, por lo que esta partición no nos interesa, ya que solo queremos clonar la partición del sistema operativo.

Multiplique por ocho el tamaño de bloque estándar del disco (512x8) y luego divida el número total de bloques +1 de la última partición por ocho como se ilustra en la imagen a continuación. El "Fin" de sda4 que representa la partición de Windows es 19855359+1 dividido por 8. dd funciona con un tamaño de bloque de 4096 bytes.

sudo dd if=/dev/sda bs=4096 count=2481920 conv=sync,noerror | pv -s 9G |sudo dd of=/dev/sdb

En este ejemplo, debido a que solo estamos copiando el sistema operativo Windows y no todos los datos del disco que siguen a la cuarta partición, necesitamos eliminar la última partición. Podemos eliminarlo ejecutando la utilidad de línea de comando cgdisk directamente desde la consola como se ilustra en las siguientes capturas de pantalla

Verifique las diferencias de la tabla de particiones en ambos discos emitiendo el comando fdisk. La tabla de particiones debe ser similar, excepto la quinta partición de /dev/sda, que debe eliminarse del disco clonado (/dev/sdb).

PASO TRES - Pruebe el disco clonado

Finalmente, apague la máquina, desconecte el disco duro antiguo y encienda la computadora solo con el nuevo disco clonado. Debería iniciarse en su sistema operativo en poco tiempo. En caso de que la máquina se niegue a arrancar, verifique físicamente los conectores SATA en la placa base e intente invertirlos o vaya a la configuración de BIOS/UEFI y asegúrese de que el disco apropiado esté habilitado en la secuencia de arranque.

Trate de no iniciar la máquina con ambos discos conectados porque podría confundir el cargador de arranque, haciendo que su máquina no pueda iniciar el sistema operativo. Una vez que tenga la confirmación de que su sistema operativo se inicia normalmente, use la misma herramienta que para reducir el sistema de archivos para ampliar la partición clonada agregando el espacio no asignado.

Con este método dd, puede transferir cualquier variante del sistema operativo Windows o Linux con todas sus configuraciones personalizadas, programas instalados y archivos desde un HDD más grande a un SSD más pequeño, sin la carga de instalar el sistema operativo desde cero y pasar toneladas de horas para personalizarlo .


Linux
  1. Cómo particionar un disco en Linux

  2. Cómo hacer una copia de seguridad o clonar particiones de Linux usando el comando 'cat'

  3. Administrar discos con DiskPart

  4. Cómo configurar el sistema de archivos ZFS en Linux con ejemplos de comandos zpool

  5. Cómo clonar una partición de disco de Linux a través de la red usando dd

Cómo configurar redes IP con el comando nmcli en Linux

Cómo crear y administrar particiones de disco con Fdisk en Linux

Cómo clonar y restaurar una partición de Linux usando el comando dd

Cómo enumerar discos en Linux

Cómo cifrar la partición en Linux

Cómo crear particiones de disco en Linux