¿Es seguro tomar la image del disco de la unidad de trabajo actual?

Tengo que hacer una copy de security de mi disco duro. Quiero usar dd y poner la image en un disco duro externo.

  • ¿Puedo hacer esto usando dd desde el sistema operativo que reside en el disco duro o tengo que arrancar desde otro dispositivo, por ejemplo, un LiveCD?
  • ¿Es seguro, en general, tomar la image de un dispositivo, si el dispositivo está montado y funcionando?
  • ¿Qué pasa si el dispositivo está montado, pero estoy seguro de que no hay otra operación de E / S mientras dd está ejecutando?

Estoy seguro de que rsync es la mejor herramienta para usar en las copys de security, especialmente las incrementales.

Pero estoy interesado en dd , porque también quiero hacer una copy de security de otros dispositivos de almacenamiento, y también copy los datos almacenados en el espacio no particionado. Por ejemplo, mi lector de libros electrónicos usa un espacio sin particiones para almacenar uboot, kernel y otros datos.

En general, no es seguro. El FS supone que las operaciones se escriben en cierto order para que pueda escribir nuevos datos del file y luego hacer un puntero desde otros datos, los detalles exactos dependen del sistema de files. Imagina si sucede lo siguiente:

  1. dd lee desde la location X que contiene basura o algunos datos
  2. El sistema de files escribe en la location X
  3. El sistema de files escribe en la location X + 1 apuntando a la location X
  4. dd lee desde la location X + 1 enlace a la location X

Desde el punto de vista de la copy de security, obtienes datos basura. Sin embargo, hay varias forms de solucionarlo:

  • Congelar sistema de files por command específico del sistema de files (creo que xfs_freeze es uno y no conozco otro, pero tal opción existe al less en teoría)
  • Cree una instantánea lvm y cópiela. La copy será como-si reinició la computadora (less la reorderación de la HDD) por lo que será un sistema de files sucio, pero la copy será atómica. Tenga en count que algunos filesystems como XFS deben congelarse primero.
  • Use rsync como lo sugirieron otros. Ahora la copy es segura y no necesita LVM, pero la copy no es atómica. Entonces, si bien evita el problema anterior en el nivel del sistema de files, podría tener problemas con los files (es poco probable, pero uno puede imaginar files perdidos mientras mv se ejecuta en segundo plano, por ejemplo)
  • Use el sistema de files con snapshoting como btrfs , tux3 , zfs , nilfs … Luego puede evitar ambos problemas: puede simplemente crear una instantánea y copyrla mediante rsync con total atomicidad. Sin embargo, tenga en count que dicho sistema de files a menudo tiende a ser experimental.

Como última nota, dd podría no ser la mejor forma de copy de security. Copia un disco completo que a menudo es un desperdicio al copyr la "basura" también. Si necesita tener imágenes de disco, algo como partimage podría ser mejor. Si no lo hace, una mejor opción es utilizar rsync, tar en modo diferencial / incremental, etc. o un sistema de respaldo completo como bacula , tarsnap o uno de muchos otros. La deduplicación de datos puede hacer maravillas para los tamaños de las copys de security.

Depende de para qué es exactamente la partición y cuál es el propósito de la copy. Sin embargo, diré que, en general, dd es una herramienta inapropiada para realizar copys de security de filesystems . Tampoco es para lo que estaba destinado.

  • Perderá mucho time copyndo secciones vacías de la partición.

  • Puede llevar a inconsistencias si el sistema de files está actualmente montado, en parte porque es una entidad de nivel de sistema operativo y puede no estar sincronizado con el dispositivo de bloque subyacente. Llamar sync inicialmente no ayudará mucho con esto, ya que el process no es instantáneo.

Use cp -a o rsync lugar. Entonces necesita crear la partición de destino, por supuesto, por lo que no es tan sencillo, pero es mucho más segura y más flexible. Si necesita crear una image del sistema de files, consulte a continuación.

Si tiene la intención de copyr el sistema de files raíz, absolutamente no use dd . Debe usar algo como rsync -ax (o cp -ax en directorys individuales a nivel), porque hay un montón de cosas que NO deben estar en la copy . En Linux, esto incluye:

 /dev /lost+found /mnt /proc /run /sys /tmp 

Algunos de estos son en realidad interfaces de kernel y no directorys reales en el disco. Si los copy, está copyndo una gran cantidad de información que no se aplicará en la copy; si intentas ejecutar un sistema con él, solo será un desperdicio de espacio ya que la interfaz real se montará en la parte superior. Otros contienen información temporal en uso mediante la ejecución de processs y estos son más un problema, ya que el sistema no podrá orderar la basura si la copy.

Si desea crear un file de image del sistema de files raíz (o cualquier sistema de files), cree un file de image vacío; este es un uso apropiado para dd :

 dd if=/dev/zero of=whatever.img bs=1024 count=1000000 

Esa es una image de 1024 MB (1000000 * 1024). Ajuste el count si lo quiere de algún otro tamaño. Cree, por ejemplo, un sistema de files ext en el file :

 mke2fs whatever.img 

Te advertirá que este no es un dispositivo de bloque real. Proceder. Ahora monte el file de image:

 mount whatever.img /mnt/img 

/mnt/img debe existir, pero podría cualquier cosa. Ahora puede rsync (o cp -a ) en /mnt/img . El contenido permanecerá dentro de whatever.img cuando lo desmonte.

Sin embargo…

Para que quede claro, solo use el método de image del sistema de files que se acaba de describir si necesita absolutamente un file de image por cualquier razón. Si su objective es copyr la partición en otro disco duro, no necesita una image : cree una nueva partición con un sistema de files vacío en esa unidad, móntela y cópiela allí. En su lugar, puede colocar el contenido del sistema de files en un directory vacío y archivarlo:

 tar -czf myarchive.tar.gz [the directory path] 

A continuación, puede implementar esto en una partición existente (vacía o no) colocándola en el nivel superior y utilizando:

 tar -xzf myarchive.tar.gz 

Tenga en count que sobrescribirá los files existentes si sus routes coinciden con algo en el file. De lo contrario, dejará la jerarquía de directorys existente igual.

Depende de lo que quiere decir con "sistema de trabajo actual". Si simplemente desea evitar el uso de un disco de inicio y no le preocupa la interrupción de los services que se ejecutan en la computadora, es posible:

  1. Cierre todos los progtwigs no esenciales (básicamente, todo excepto el shell raíz en el que está trabajando, no intente esto desde un terminal X, use un shell de console real). El modo de usuario único puede ayudar con esto.
  2. Si tiene discos montados que no sean la raíz del sistema, desmóntelos. No desmonte filesystems virtuales como / proc, / sys o / dev.
  3. Vaciar datos en caching en el disco restante: sync
  4. Reinstalar el sistema de files raíz de solo lectura: mount -o ro / .
  5. Monta tu disco duro externo (probablemente recibirás una advertencia sobre la imposibilidad de escribir en /etc/mtab ; /etc/mtab ).
  6. Haga su copy de security.
  7. Desmonta tu disco duro externo.
  8. Reiniciar. Has hecho un lío con tu sistema al llegar aquí, y reiniciar es la forma más rápida de volver a ponerlo en funcionamiento.

Utilizo este método para hacer un file de una computadora que acabo de actualizar y no espero usar mucho más. No es un método muy bueno para un sistema en uso activo: es lento (lleva horas o días), las copys de security son enormes (por lo que no puede conservar más que unas pocas) y es increíblemente perjudicial para el uso del sistema que se respalda arriba. Para las copys de security diarias, recomiendo algo que funcione en el nivel del sistema de files, como rsnapshot .

rsync es la herramienta de elección para realizar copys de security de un sistema de files, y puede hacer una copy de security de arranque del sistema operativo actual.

Algunas advertencias:

  • debe agregar las opciones apropiadas de sopa de letras
  • las routes son bastante críticas
  • se requiere una list de exclusión, y será diferente para cada sistema operativo y posiblemente cada configuration

Algunas ventajas de rsync sobre otros methods como alquitrán:

  • puede detener e iniciar la copy de security en cualquier momento
  • muchas opciones para manejar files reemplazados como eliminar a pedido, eliminar antes, mover …..
  • las copys de security reanudadas (o repetidas) son mucho más rápidas que otros methods, ya que los files copydos previamente se omiten. (Aumento de velocidad de 20x es común)
  • la opción –link-dest puede crear copys de security versionadas mientras solo se copyn files nuevos

Las copys de security de imágenes tienen su lugar, pero copyn la unidad exactamente como está, incluidos los problemas que pueda tener. Una copy de security de file crea un directory nuevo y tiene el efecto secundario de linealizar (desfragmentar) su unidad en el process. Si desea hacer 10 copys idénticas de su sistema operativo actual, usaría rsync para el maestro de copy y luego dd (o similar) para el rest.

Usa Clonezilla , en serio. Es la mejor utilidad de código abierto similar a Norton Ghost basada en Linux. Hará clonación tanto de partición como de disco completo, ya sea de disco a disco o de disco a sistema de files (save como un file). Es compatible con la mayoría de los filesystems Linux, NTFS, FAT32 y más. Se puede save en un disco interno, una unidad externa o incluso a través de la networking en resources compartidos SMB o NFS.

Es muy fácil de usar y le ahorrará mucho time.

Editar: para responder a la pregunta, no, no puedes dd mayoría de los filesystems mientras están montados porque te arriesgas a terminar con una copy incoherente de tu sistema de files, ya que leer desde un dispositivo de bloque no es atómico. Por ejemplo, si está copyndo 100 bloques, el sistema podría haber actualizado el primer bloque y el último bloque mientras estaba solo a la mitad, lo que significa que su copy includeá el último bloque modificado pero no el primero.