Clonando discos con ‘cat’

By 7 de agosto de 2006 BSD, Debian, FreeBSD, Gentoo, Linux, OpenBSD, SuSE, Ubuntu 7 Comments

freebsdpower.pngUna opción que nos puede salvar la vida en un determinado momento sería la de clonar el disco en el que trabajemos, antes de ponernos a hacer 'animaladas'; mediante este truco podemos hacerlo de forma sencilla:

Para ello utilizaremos el comando 'cat', lo que hará cat en este caso es copiar bit a bit todo lo que encuentre en el disco y compilarlo en una imagen:

# cat /dev/ad0 > /mnt/baskup/imagen 

En Linux sería:

# cat /dev/hda > /mnt/backup/imagen 

Si quisiéramos sólo hacer la imagen de una partición, pues lo propio:

# cat /dev/ad0s1a > /mnt/backup/imagen 

Luego, para restaurarlo podemis arrancar con un Live CD, montar las unidades y restaurar (esto incluye la tabla de particiones y el mbr) de la siguiente manera:

# cat imagen > /dev/ad0 

Algo más que recomendable después de hacer la imagen sería el comprimir esta imagen por ejemplo con bzip2:

# bzip2 -9 /mnt/backup/imagen.bz2 

Aunque también nos podemos ahorrar el paso haciendo esto:

# cat /dev/ad0 | bzip2 > /mnt/backup/imagen.bz2 

Nota:
Las unidades cambiarán, evidentemente, Ej.: /dev/ad0 - /dev/ad1 - /dev/hda - /dev/hdb
(Gracias Sharek, por la inspiración)

7 Comments

  • Juantxu dice:

    La clonación con el cat, es algo que vengo haciendo hace tiempo con excelentes resultados, pero hace poco se me ha presentado una situación a la que de momento, por mi inexperiencia, no soy capaz de dar solución. Cuando clonas una partición es sencillo montarla después desde la imagen que has creado, ¿pero y cuando clonas el dispositivo completo? ¿como puedes montar sus particiones desde el archivo imagen? ¿Alguien con una ayudita guardada en el bolsillo?

  • Jordi dice:

    Para montar particiones dentro de una imagen de disco deberás calcular el offset de la partición, para eso hay una fórmula muy interesante:

    ( tamaño sector * sectores por pista ) +1 = offset en bytes de partición

    Se suma 1, pq el primer sector del disco está reservado para el MBR y como el conteo se hace por pistas, se pieden los primeros...32256 byte (nada despreciables 32Kb

    Puedes obtener el tamaño de sectores y los sectores por pista con un fdisk -l o un cfdisk, y luego echar mano de la calculadora (bc)

    Luego usando la opción -o del mount "-o loopback,offset=XXXX" para decirle a mount que ignore los primeros X bytes

    así podrás montar cualquier partición de una imagen de disco :)

    Aqui tienes un ejemplo patatero de como montar la primera partición
    http://wiki.archlinux.org/index.php/Qemu#Mounting_the_hard_disk_image

  • 1???

    Cuando haces un "fisk -l imagen_fichero" ya te indica el principio de la particion, y el offset será el principio de la partición por tal como indicas 32256 (que resulta de 63 sectors/track por 512 que es el tamaño del sector), pero sin sumarle un 1!!! ya que el principio de la partición contempla el espacio usado por el mbr. Un ejemplo:

    [[email protected] machines]# fdisk -l niflheim
    Disk niflheim: 0 MB, 0 bytes
    255 heads, 63 sectors/track, 0 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

    Device Boot Start End Blocks Id System
    niflheim1 * 1 956 7679038 83 Linux
    niflheim2 957 1044 706860 82 Linux swap / Solaris

    [[email protected] machines]# mount -o loop,offset=$((1*32256)) niflheim /home/nose

    Otra opción a mi gusto más clara y sencilla es usar "fisk -l -u", (el -u muestra la información en cilindros en lugar de sectores) y quedaría de la siguiente forma:

    [[email protected] machines]# fdisk -l -u niflheim
    Disk niflheim: 0 MB, 0 bytes
    255 heads, 63 sectors/track, 0 cylinders, total 0 sectors
    Units = sectors of 1 * 512 = 512 bytes

    Device Boot Start End Blocks Id System
    niflheim1 * 63 15358139 7679038 83 Linux
    niflheim2 15358140 16771859 706860 82 Linux swap / Solaris

    [[email protected] machines]# mount -o loop,offset=$((63*512)) niflheim /home/nose

    Y paso de mirarme un enlace!!! El mundo está lleno de enlaces que la gente te dice que sigas para acabar llegando a ninguna parte o a un sitio todavía peor del que provienes. Por no comentar la perdida de la información, que tiende a convertirse en un enlace en si misma, sin aportar valor alguno y haciendo olvidar lo que verdaderamente buscabas...

  • Jordi dice:

    No había pensado en que fdisk ya lo tenía en cuenta, lo hice de cabeza

  • Solusan dice:

    fDisk tiene en cuenta muuuuuuuuuuuuuuuuchas cosas.....

    (no he podido evitarlo)

    😀

  • Jordi dice:

    yo también lo pensé! >XDDDDDDDDDD pero luego dije "bahhh no hagas el tonto" hahahhahah

  • Solusan dice:

    ains.... si no fuera por estos momentos ... :''')

Leave a Reply

Your email address will not be published.