Siéntete en la libertad de divulgar nuestra página y códigos en tus redes sociales, apóyanos para hacer crecer nuestra comunidad.
Solución:
Para referencia futura, así es como procedí finalmente, con algunos comentarios sobre los diversos problemas o dificultades encontradas:
1. Inicie la máquina con un sistema Linux en vivo
El primer paso fue arrancar la máquina que contenía el disco a la imagen, usando un sistema Linux en vivo.
NOTA: mi primera idea fue usar un disco USB de Ubuntu Live, pero la máquina no admitía el arranque desde USB, así que me resultó más fácil usar un disco viejo CD en vivo de Knoppix.
2. Imagen del disco usando dd
y canalizar los datos a través ssh
Luego, copié todo el contenido del disco a una imagen de archivo en mi servidor local usando dd
y canalizar los datos a través de ssh
:
$ dd if=/dev/hdX bs=4k conv=sin error, sincronizar | ssh -c pez globo [email protected] ‘dd de=miarchivo.dd’
Algunos comentarios aquí: este método leerá todo el contenido del disco, por lo que puede llevar mucho tiempo (me tomó 5 horas para un disco de 80 Gb). El cuello de botella no es la red, sino la velocidad de lectura del disco. Antes de iniciar la copia, aconsejo verificar los parámetros del BIOS/disco/sistema para asegurarse de que el disco y la placa base funcionen a la velocidad más alta posible (esto se puede verificar usando el comando hdparm -i
y ejecutando una prueba con hdparm -Tt /dev/hdX
).
NOTA: dd
no muestra el progreso de la operación, pero podemos obligarlo a hacerlo enviando el USR1 señal a la dd
procesar PID desde otra terminal:
$ matar -USR1 PIDofdd
Nota: Las versiones más recientes de dd
apoyen el status=LEVEL
opción (man dd
)
status=LEVEL
The LEVEL of information to print to stderr; 'none' suppresses everything but error messages, 'noxfer' suppresses
the final transfer statistics, 'progress' shows periodic transfer statistics
3. Recuperar el espacio no utilizado
En este punto, la máquina de origen ya no es necesaria y trabajaremos exclusivamente en el servidor de destino (también con Linux). VirtualBox se utilizará para convertir la imagen de disco sin procesar al formato VHD, pero antes de hacerlo, podemos poner a cero los bloques no utilizados, de modo que VirtualBox no les asigne espacio en el archivo final.
Para hacerlo, monté las imágenes como un dispositivo de bucle invertido:
$ mount -o loop,rw,offset=26608813056 -t ntfs-3g /mnt/mydisk/myfile.dd /mnt/tmp_mnt
$ cat /dev/zero > zero.file
$ rm zero.file
NOTA: El desplazamiento que indica el comienzo de la partición dentro de la imagen del disco se puede obtener utilizando parted
en el archivo de imagen:
$ parted /mnt/mydisk/myfile.dd
(parted) unit
Unit? [compact]? B
(parted) print
Model: (file)
Disk /mnt/mydisk/myfile.dd: 80026361856B
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 32256B 21936821759B 21936789504B primary ntfs boot
2 21936821760B 80023749119B 58086927360B extended lba
5 26608813056B 80023749119B 53414936064B logical ntfs
NOTA 2: El controlador NTFS predeterminado del kernel de Linux proporciona acceso de solo lectura, por lo que es necesario instalar y usar el espacio de usuario ntfs-3g
controlador o escribir en el disco generará un error.
4. Cree la imagen VHD usando VBoxManage
En este punto, podemos usar las utilidades de VirtualBox para convertir la imagen sin procesar en un archivo VHD:
VBoxManage convertfromraw myfile.dd myfile.vhd --format VHD
Estaba tratando de hacer exactamente lo mismo que el OP (mientras rescataba una instalación de Windows) y terminé creando una nueva herramienta para él, ntfsclone2vhd
.
Entonces simplemente harías algo como esto:
ntfsclone --save-image -o - /dev/sdXX | ntfsclone2vhd - /mnt/usb/output.vhd
Un enfoque es usar un par de tecnologías útiles: VirtualBox y el ntfsprogs
paquete.
Las versiones recientes de VirtualBox le permiten crear archivos de disco duro VHD, mientras que ntfsprogs
proporciona el ntfsclone
utilidad. Como su nombre indica, ntfsclone
clona sistemas de archivos NTFS, y creo que lo hace a nivel del sistema de archivos, omitiendo bloques de disco no utilizados.
Entonces, para comenzar, cree una nueva VM en VirtualBox y aprovisione una nueva unidad de archivo VHD vacía para ella. La unidad VHD solo necesita ser tan grande como el tamaño de los datos en uso en la unidad física que desea clonar (bueno, en realidad, hágala un poco más grande, para permitir un poco de margen de maniobra).
A continuación, busque un CD en vivo de Linux que contenga el ntfsprogs
paquete, así como openssh-server
. Me gusta System Rescue CD para esto, pero casi cualquier Live CD basado en Debian o Ubuntu debería funcionar también.
Inicie la máquina virtual VirtualBox con el Live CD de Linux y comience sshd
dentro de la VM para que pueda ejecutar comandos en ella de forma remota. Particione la unidad VHD vacía de manera adecuada, utilizando cualquier herramienta de partición que prefiera (me gusta la vieja y simple fdisk
pero soy algo de la vieja escuela).
Con otra copia del Live CD de Linux, inicie la máquina que contiene el disco físico que desea clonar. Supongo que la máquina virtual VirtualBox y esta máquina son accesibles entre sí a través de la red. En esta máquina, ejecute el siguiente comando (todo en una línea):
ntfsclone --save-image -o - /dev/sdXX |
ssh [email protected] 'ntfsclone --restore-image --overwrite /dev/sdYY -'
donde:
/dev/sdXX
es el nombre del dispositivo (en la máquina local) de la unidad física que desea clonar, y/dev/sdYY
es el nombre del dispositivo (en la VM) de la unidad de destino VHD.
Explicación: la primera ntfsclone
El comando en la canalización extrae una imagen del sistema de archivos NTFS de origen y la envía a través del túnel ssh, mientras que el segundo ntfsclone
El comando recibe la imagen y la restaura en la unidad VHD.
Una vez que se completa la operación, el archivo VHD debe contener un clon exacto archivo por archivo del disco físico original (salvo que se produzcan errores de hardware, como sectores defectuosos, que podrían provocar la interrupción prematura del proceso).
Una última cosa que puede querer hacer es ejecutar un Windows chkdsk
en la unidad VHD, solo para garantizar que la clonación no haya presentado ningún problema (no debería haberlo hecho, pero bueno, estoy un poco paranoico con estas cosas).
Puntuaciones y comentarios
Si posees alguna incertidumbre o disposición de perfeccionar nuestro sección eres capaz de escribir una crítica y con gusto lo leeremos.