Me gusta clonar una partición completa o un disco duro completo en un disco externo más grande, pero me gusta crear un archivo disperso. A menudo lo uso dd
para clonar, pero no admite archivos dispersos. Como solución, usé algo como:
cp --sparse=always <(dd if=/dev/sda1 bs=8M) /mount/external/backup/sda1.raw
Sin embargo, esto es un poco complicado para mi gusto y no me permite reanudar el proceso si lo aborto. Es curioso que exista una herramienta NTFS para esto ( ntfsclone
), pero no existe tal herramienta para los sistemas de archivos nativos de Linux (EXT2-4).
¿Existe alguna herramienta mejor para esto, por ejemplo, una dd
variante con escaso soporte? No busco algún software patentado para copias de seguridad de disco, sino que simplemente quiero hacer una copia de clon escasa que pueda montar como dispositivo de bucle si es necesario.
fuente
cp
, nunca se me ocurrió que podía copiar de forma dispersa una imagen de disco. Siempre los comprimía si necesitaba ahorrar espacio. Ahora, ¿por qué eso en una pregunta no es una respuesta?Respuestas:
Que desea
dd_rescue
.fuente
dd_rescue
línea, descubrí que también hay una herramienta diferente llamadaddrescue
(sin el guión bajo) que se desarrolló de forma independientedd_rescue
pero parece hacer básicamente lo mismo. Solo menciono eso aquí como un FYI general.dd_rescue
yddrescue
no son lo mismo. Teóricamente hacen el mismo trabajo, pero en general he tenido mejor suerte con el anterior / originaldd_rescue
.-s
y la posición al comando original. (Por lo que parecedd_rescue -a -b 8M -s 42000k /dev/sda1 /mount/external/backup/sda1.raw
.)Solo para completar la llamada a ddrescue . La bandera
--sparse
o-S
permite que el destino se escriba escasamente:O con opción larga:
O si prefieres MiBs :
Para permitir que el rescate se interrumpa y se reanude, también puede utilizar un archivo de registro:
Tenga en cuenta que GNU
ddrescue
ydd_rescue
son programas diferentes. Pero GNUddrescue
parece estar más extendido. Por ejemplo, ya está empaquetado con GRML .fuente
dd if=sda1.raw of=/dev/sdb1
. Sin embargo, para usar ddrescue para la restauración, simplemente cambie la fuente / destino que utilizó para el rescate a la nueva fuente / destino, preferiblemente con un nuevo archivo de registro. Si es posible (a menudo no), puede usar ddrescue para copiar datos directamente desde el disco fuente defectuoso a un disco de reemplazo.Se ofreció un parche en 2007 para proporcionar compatibilidad con archivos dispersos en GNU dd, pero parece que no se convirtió en coreutils (al menos no a partir de 8.4). Dudo que dd haya cambiado demasiado desde entonces, el parche podría aplicarse a la versión actual sin mucho trabajo.
También estoy realmente impresionado por el uso creativo de
cp
en su pregunta, y me puso en el camino de usarlo para lograr la reanudación (aquí reanudando desde ~ 80M en la fuente):Editar: rasca eso. El segundo
dd
, por supuesto, sería buscar la posición incorrecta en el archivo de salida, ya que no tiene la misma longitud que la entrada.fuente
cp
¡gracias!Solo agrego mis 2 centavos. Otra forma de crear un archivo disperso desde un disco sin formato es con qemu-img usando algo como:
Puede usar esto en una sola partición también. Además, tiene la opción de convertir el disco / partición sin formato a cualquier otro formato que admita qemu-img (QCOW2, VHD [x], vmdk, etc.)
fuente
Otra opción es rsync . Por ejemplo:
Explicación:
-S
/--sparse
para omitir bloques dispersos en escritura-P
/--partial --progress
para mostrar el progreso y mantener archivos parcialmente transferidos--copy-devices
copiar el contenido del dispositivoPuede agregar
--append
para reanudar una copia interrumpida (o--append-verify
para confirmar la suma de verificación sobre coincidencias de datos nuevas y antiguas).Editar : Acabo de darme cuenta de que copy-devices.diff está bajo consideración y puede no estar presente en muchos sistemas (aunque está incluido en Fedora , Ubuntu , Debian y otros)
fuente
Nota: esto no funciona por las razones descritas en los comentarios, lo dejo aquí como referencia.
Monitoree las estadísticas de dd usando kill -USR1:
Reanude usando skip / seek:
Sin $ i_bytes sería más difícil reanudar. Probablemente sea más fácil registrar las estadísticas de dd en un archivo en caso de que la máquina falle o lo que sea.
fuente
cp
simplemente sobrescribirá el archivo existente, ¿no? Conozco lasskip
y otras opciones dedd
. El problema es lacp
parte.Hay xfsdump y xfsrestore para XFS, que ha sido un sistema de archivos nativo de Linux durante bastante tiempo.
fuente
Por qué no simplemente:
fuente