Quello che vuoi è rsync.
Questo comando può essere utilizzato per sincronizzare una cartella e anche riprendere la copia quando viene interrotta a metà. Il comando per copiare un disco è:
rsync -avxHAX --progress / /new-disk/
Le opzioni sono:
-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)
Per migliorare la velocità di copia, aggiungi -W
(--whole-file
), per evitare di calcolare delta/diff dei file. Questa è l'impostazione predefinita quando sia l'origine che la destinazione sono specificate come percorsi locali, poiché il vero vantaggio dell'algoritmo di trasferimento delta di rsync è la riduzione dell'utilizzo della rete.
Considera anche l'aggiunta di --numeric-ids
per evitare di mappare i valori uid/gid per nome utente/gruppo.
La risposta di Michael Aaron Safyan non tiene conto dei file sparsi. -S
l'opzione risolve questo problema.
Inoltre, questa variante non invia spam con l'avanzamento di ciascun file e non esegue la sincronizzazione delta che riduce le prestazioni nei casi non di rete.
Perfetto per copiare il filesystem da un'unità locale a un'altra unità locale.
rsync -axHAWXS --numeric-ids --info=progress2
Uso spesso
> cp -ax / /mnt
Supponendo che /mnt sia il nuovo disco montato su /mnt e non ci siano altri montaggi su /.
il -x lo mantiene su un unico filesystem.
Questo ovviamente deve essere fatto come root o usando sudo.
Questo link ha alcune alternative, inclusa quella sopra
http://linuxdocs.org/HOWTOs/mini/Hard-Disk-Upgrade/copy.html