Hdd

Hace no mucho tuve que hacer un backup completo del disco duro de mi Servidor para instalar otro sistema operativo y opté por clonar el disco duro de arranque completo en un fichero comprimido (imagen byte a byte: servidor.img.gz). En caso de desastre (con el nuevo sistema operativo) podría fácilmente dar marcha atrás. Es un proceso sencillo pero siempre tardo un buen rato en encontrar en internet cómo hacerlo, así que he decidido documentarlo. Además añado un “extra”, cómo montar la partición root dentro de dicha imagen para consultar ciertas cosas. Todo esto se consigue con estas herramientas:

  • Copia byte a byte: dd
  • Comprimir: gzip
  • Guardar información sobre las particiones: fdisk

 

Backup /dev/sdX a fichero imagen (.img)

Es imposible hacer un backup del mismo disco con el que he arrancado el equipo, así que lo primero es hacer boot con un LiveCD Linux. Después de arrancar averiguamos el nombre de device del disco fuente (en mi caso el disco duro de arranque es /dev/sdb). Decido salvar tres ficheros: el MBR, el disco completo y la información sobre las paticiones. Notar que el importante es el “disco completo”, los otros dos podrías obviarlos.

 

Restaurar desde fichero (.img) a /dev/sdX

Si hubiese tenido un desastre con la instalación del nuevo sistema operativo simplemente tengo que restaurar la imagen salvada, así que vuelvo a arrancar con el LiveCD, reconocería el disco como “sdb” y ejecutaría lo siguiente para recuperar los datos:

 

Extraer una patición del fichero .img

Este es el extra que comentaba. Imaginemos que lo único que necesito es acceder a consultar datos de mi antiguo disco duro. Resulta que tenemos todo dentro de una única imagen y encima comprimida, así que lo primero que debes hacer es descomprimir la imagen.

Ya tengo una imagen byte a byte del disco original (incluye su MBR, tabla de particiones y las particiones en sí). Para acceder a una partición concreta dentro de servidor.img necesito saber en que “byte” empieza y termina dicha partición, muestro dos formas de harcelo:

 

Opción .fdiskinfo

Utilizo la información de fdisk que salvé (en un fichero que llamé servidor.fdiskinfo) al hacer backup. Cuando consulto dicha información observo que los datos están en bloques de 512bytes, así que usaré este tipo de unidad cuando ejecute el comando dd. Lo que necesito saber es donde debo empezr (skip) y cuantos bloiques extraer (count).

Obtengo la información desde el fichero .fdiskinfo:

Notar que cuando guardé esta información se usan unidades de 512 bytes (Units:). La información que me interesa es la siguiente:

  • skip = fdisk start = 1316864
  • count = fdisk end-start = 468860079 – 1316864 + 1 = 467543216

Con esos datos puedo extraer el file system usando el comando dd indicando dónde empezar y cuanto copiar (en este caso indico dicha información en unidades de 512 bytes)

 

Opción fdisk/parted

Siempre puedes usar fdisk o parted para mostrar la información de las particiones desde el fichero imagen (es decir, no necesitas salvar o tener la información guardada).

Opción fdisk

Obtengo la siguiente información (una vez más en unidades de 512 bytes):

  • skip = 1316864
  • count = 467543216

Opción parted

Obtengo la siguiente información pero esta vez en Bytes, así que lo convierto a bloques de 512, obviamente el resultado es el mismo que antes.

  • skip = 674234368/512 = 1316864
  • count = 239382126592/512 = 467543216

La extracción del file system y su posterior montaje es idéntico a como hicimos la vez anterior.