Lo que quieres es rsync.
Este comando se puede usar para sincronizar una carpeta y también para reanudar la copia cuando se cancela a la mitad. El comando para copiar un disco es:
rsync -avxHAX --progress / /new-disk/
Las opciones son:
-a : all files, with permissions, etc..
-v : verbose, mention files
-x : stay on one file system
-H : preserve hard links (not included with -a)
-A : preserve ACLs/permissions (not included with -a)
-X : preserve extended attributes (not included with -a)
Para mejorar la velocidad de copia, agregue -W
(--whole-file
), para evitar calcular deltas/diffs de los archivos. Este es el valor predeterminado cuando tanto el origen como el destino se especifican como rutas locales, ya que el beneficio real del algoritmo de transferencia delta de rsync es reducir el uso de la red.
También considere agregar --numeric-ids
para evitar la asignación de valores uid/gid por nombre de usuario/grupo.
La respuesta de Michael Aaron Safyan no tiene en cuenta los archivos dispersos. -S
opción corrige eso.
Además, esta variante no genera spam con el progreso de cada archivo y no realiza sincronización delta, lo que reduce el rendimiento en casos fuera de la red.
Perfecto para copiar sistemas de archivos de una unidad local a otra unidad local.
rsync -axHAWXS --numeric-ids --info=progress2
A menudo uso
> cp -ax / /mnt
Suponiendo que /mnt es el nuevo disco montado en /mnt y no hay otros montajes en /.
el -x lo mantiene en un sistema de archivos.
Esto, por supuesto, debe hacerse como root o usando Sudo.
Este enlace tiene algunas alternativas, incluida la anterior
http://linuxdocs.org/HOWTOs/mini/Hard-Disk-Upgrade/copy.html