transferir servidores por password entre copiar consola comando archivos linux bash scp

linux - servidores - ¿Cómo reanudar scp con archivos parcialmente copiados?



transferir archivos de windows a linux ssh (7)

Ayer tuve el mismo problema, transfiriendo un enorme volcado de sql a través de scp, tuve suerte con wget --continue the_url

Esa publicación de blog lo explica bastante bien http://www.cyberciti.biz/tips/wget-resume-broken-download.html

Utilizo el comando scp shell para copiar una gran carpeta de archivos.

Pero en algún momento tuve que matar el comando en ejecución (por Ctrl + C o kill).

Según tengo entendido, scp copió los archivos secuencialmente, por lo que solo debería haber un archivo parcialmente copiado.

¿Cómo se puede reanudar el mismo comando scp para no sobrescribir los archivos copiados con éxito y manejar adecuadamente los archivos parcialmente copiados?

PD: Sé que puedo hacer este tipo de cosas en rsync, pero scp es más rápido para mí por alguna razón y lo uso en su lugar.


Cuando rsync también se detiene después de un par de segundos cuando inicialmente funciona bien, terminé con la siguiente solución de fuerza bruta:

cat run_me.sh #!/bin/bash while [ 1 ] do rsync --partial --progress --rsh=ssh user@host:/path/file.tgz file.tgz & TASK_PID=$! sleep 60 kill $TASK_PID sleep 2 done


Deberías usar rsync sobre ssh

rsync -P -e ssh remoteuser@remotehost:/remote/path /local/path

La opción clave es -P , que es lo mismo que --partial --progress

También se pueden usar otras opciones, como -a (para el modo de archivo) y -z (para habilitar la compresión).

El manual: https://download.samba.org/pub/rsync/rsync.html


Desde OpenSSH 6.3, puede usar el comando reget en sftp .

Tiene la misma sintaxis que get , excepto que comienza una transferencia desde el final de un archivo local existente.


Otra posibilidad es tratar de salvar el scp que ya has comenzado cuando se detiene.

ctrl + z al fondo y detenerlo, luego ssh hacia el servidor receptor e inicie sesión, luego salga. ¡Ahora fg el proceso scp y mira cómo se reanuda desde ''estancado''!


Puede utilizar las opciones -rsh y -P de rsync . -P es para descarga parcial y -rsh indica que la transferencia se realizó por ssh procotol.

El comando completo sería: rsync -P -rsh remoteuser@remotehost:/remote/path /local/path


Una alternativa a rsync:

Use sftp con la opción -r (copie recursivamente directorios completos) y la opción -a del comando get de sftp para reanudar transferencias parciales de archivos existentes.

Requisito previo: su implementación de sftp ya tiene una opción get con -a .

Ejemplo:

Copie el directorio /foo/bar del servidor remoto a su directorio actual local. La bar directorio se creará en su directorio local actual.

echo "get -a /foo/bar" | sftp -r server