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 me@host.com:/datafiles/ ./
... Happy Transfer ...
...     BREAK!     ...
$ rsync -P me@host.com:/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.

Respuestas:


10

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

rsync -avzl -e ssh /directory/with/files/ you@host.com:/new/directory/

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 me@host.com: / datafiles / ./

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


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, me@site.com: / data / es equivalente a / data / *, en otras palabras, si agrega una barra inclinada, copiará todo el contenido. pero me@site.com: / data sería el directorio en sí [y, naturalmente, sus subcarpetas]


1

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

rsync --partial --progress -avzl -e ssh /directory/with/files/ you@host.com:/new/directory/

(rsyncing recursivamente y mostrando el progreso de cada archivo)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.