Reanudar transferencia scp recursiva (con rsync?)

14

Estaba transfiriendo varios miles de archivos cada ~ 1MB a través de scp y mi conexión se interrumpió después de los primeros 2k archivos más o menos. Quería saber si había una manera de reanudar la transferencia recursiva sin comenzar de nuevo. Algo como

$ scp -r [email protected]:/datafiles/ ./
... Happy Transfer ...
...     BREAK!     ...
$ rsync -P [email protected]:/datafiles/ ./
... Continue transf...

El problema es que parece que no puedo obtener la sintaxis correcta si es posible. ¿Alguien puede arrojar algo de luz si / cómo se puede hacer?

PD. Si especifica la barra diagonal después de "archivos de datos" en la línea rsync, ¿eso transfiere el directorio o su contenido? Vi comentarios contradictorios cuando busqué en Google.

physicsmichael
fuente

Respuestas:

10

si está sincronizando desde una máquina local a un host remoto, esto funcionaría:

rsync -avzl -e ssh /directory/with/files/ [email protected]:/new/directory/
kibitzer
fuente
Gracias. No pensé que esto funcionara porque comenzaría a enumerar todos mis archivos, pero no me di cuenta de que mostraba la "transferencia de archivos", lo que solo significaba notar que el archivo estaba actualizado. A la derecha, mi transferencia se dejó recogida con transferencias reales (más lentas).
physicsmichael
Hmm, para mí ssh -i akey.pemes necesario y no puedo hacer que la -iparte funcione con estos comandos.
isomorphismes
2
Si usted está tratando de reanudar un archivo de gran tamaño, estas opciones pueden ser útiles: --partial --inplace --no-whole-file.
Rafael Xavier
@kibitzer: una vez que le mostró el archivo (en el servidor remoto), ¿cómo comenzó la transferencia nuevamente? El mío solo construye el archivo de lista y me muestra el archivo y cuánto se cargó. Pero simplemente se cuelga sin ninguna opción para continuar o avanzar la salida. ¿Comenzó la transferencia nuevamente o necesito hacer algo para iniciarla?
masterninja01
3
-lno es necesario. Está implícito en-a
Guido
11

La siguiente línea debería hacer el truco para eso:

rsync --partial --progress --rsh = ssh -r [email protected]: / datafiles / ./

Nunca he usado esto para directorios recursivos antes, pero cuando envié un mensaje de texto justo ahora parecía funcionar como se esperaba.

Tyler
fuente
1
Esto también funciona, siempre que incluya -r =)
physicsmichael
La mayoría de mis transferencias rsync son del tipo "rsync -ahP something / user @ host: / somewhere /". El --rsh = ssh es completamente innecesario. Luego, también -P arrastra --partial y --progress.
Killermist
1

El comando rsync que enumeró funcionaría si solo agrega "-r". pero también es probable que desee "-a" y "-v".

Y sobre la barra inclinada final, [email protected]: / data / es equivalente a / data / *, en otras palabras, si agrega una barra inclinada, copiará todo el contenido. pero [email protected]: / data sería el directorio en sí [y, naturalmente, sus subcarpetas]

Mate
fuente
1

Combinar las respuestas de kibitzer y Tyler funcionó mejor para mí:

rsync --partial --progress -avzl -e ssh /directory/with/files/ [email protected]:/new/directory/

(rsyncing recursivamente y mostrando el progreso de cada archivo)

Tarc
fuente