viernes, 5 de abril de 2013

Continuando una copia fallida de un archivo

Digamos que quieres copiar un archivo muy grande, en media lenta o propensa a fallos como una llave o disco USB baratos, y la copia falla dejándote un archivo incompleto:

olimpo:/Linux_minimal# ls -la
total 18739092
drwx------ 2 root root        4096 Apr  3 16:22 .
drwxr-xr-x 8 root root        4096 Apr  3 15:11 ..
-rw-r--r-- 1 root root 19170066432 Apr  3 16:46 Linux.dsk
-rw-r--r-- 1 root root         211 May  2  2010 create.txt
-rwxr-xr-x 1 root root         154 Apr  2 16:02 launch

olimpo:/Linux_minimal# ls -la ../Linux_test2
total 19417644
drwxr-xr-x 2 root root        4096 Mar 28 16:55 .
drwxr-xr-x 8 root root        4096 Apr  3 15:11 ..
-rw-r--r-- 1 root root 19864223744 Apr  2 15:47 Linux.dsk
-rw-r--r-- 1 root root         211 May  2  2010 create.txt
-rwxr-xr-x 1 root root         154 Apr  2 16:02 launch

¡Qué frustración! No importa cuántas veces intentes copiar el archivo, la operación de copiado aborta antes de completarse.

Afortunadamente puedes continuar la copia con rsync:

olimpo:/Linux_minimal# rsync --progress --partial --append ../Linux_test2/Linux.dsk Linux.dsk
Linux.dsk
 19864223744 100%   10.87MB/s    0:01:00 (xfer#1, to-check=0/1)

sent 694242119 bytes  received 31 bytes  11107874.40 bytes/sec
total size is 19864223744  speedup is 28.61

Y sólo para estrar seguro, puedes revisar los archivos con diff (la forma lenta) o md5sum (la forma rápida):

olimpo:/Linux_minimal# md5sum Linux.dsk
eccc1436fe7a10acb44973449fd430bc  Linux.dsk

olimpo:/Linux_minimal# md5sum ../Linux_test2/Linux.dsk
eccc1436fe7a10acb44973449fd430bc  ../Linux_test2/Linux.dsk

Más información:

How To Resume Failed copy ( cp command ) where it left off?