Reanudar transferencias fallidas de ficheros con rsync sobre ssh

Para la subida o descarga de ficheros de gran tamaño es recomendable utilizar un método que permita reanudar la transferencia de ficheros en caso de pérdida de conectividad o cualquier otro fallo. Usando rsync sobre ssh, además de proporcionarnos un método seguro para la transferencia de datos podemos indicarle que en caso de fallo se permita la reanudación  donde se había quedado.

Los siguientes parámetros nos ayudarán con esta tarea:

     --partial               keep partially transferred files
     --partial-dir=DIR       put a partially transferred file into DIR
     -P                      same as --partial --progress
     --progress              show progress during transfer
     --append                append data onto shorter files
     --append-verify         like --append, but with old data in file checksum

Básicamente especificando -P ó –partial y –progress activamos el soporte para la reanudación de transferencia de ficheros en el punto en el que nos hemos quedado. Por otro lado –append nos permite lo mismo pero para ficheros individuales. Después con -e especificaremos que utilizaremos ssh en lugar de rsh:

 -e, --rsh=COMMAND           specify the remote shell to use

Podríamos entonces construir el comando rsync con el siguiente ejemplo:

$ rsync -avz --append --progress --partial -e ssh test.tgz foo@192.168.1.129:/home/foo
foo@192.168.1.129's password: 
sending incremental file list
test.tgz
    97648640   6%    3.57MB/s    0:06:05  ^C
rsync error: unexplained error (code 130) at rsync.c(549) [sender=3.0.9]

Como podéis ver, he parado con un Ctrl + c la subida, en el destino el fichero ha quedado prácticamente con el tamaño especificado:

-rw-------.  1 root root 97255424 Jan  4 18:08 test.tgz

Si ahora reanudamos la subida, veremos como continúa donde se había quedado en lugar de empezar desde el 0%:

$ rsync -avz --append --progress --partial -e ssh test.tgz foo@192.168.1.129:/home/foo
foo@192.168.1.129's password: 
sending incremental file list
test.tgz
   134938624   9%    3.28MB/s    0:06:26

2 comentarios en “Reanudar transferencias fallidas de ficheros con rsync sobre ssh

  1. Núnca te acostarás sin aprender algo nuevo… No sabía que rsync resumiera ficheros parciales :)

    Por otro lado, por lo visto, las versiones actuales de rsync ya usan ssh por defecto. De la man del mismo en la versión de Debian Testing:


    For remote transfers, a modern rsync uses ssh for its communications, but it may have been configured to use a different remote shell by default, such as rsh or remsh. You can also specify any remote shell you like, either by using the -e command line option, or by setting the RSYNC_RSH environment variable.

Comments are closed.