Utilizo el comando scp shell para copiar una carpeta enorme de archivos.
Pero en algún momento tuve que matar el comando en ejecución (con Ctrl + C o matar).
A mi entender, 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 correctamente y para manejar correctamente 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.
dd
con unaskip
variable adecuada y canalizar assh
:)Respuestas:
Deberías usar
rsync
másssh
La opción clave es
-P
, que es la misma que--partial --progress
También se pueden utilizar 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
fuente
-r
. Fuente: lucasb.eyer.be/snips/rsync-skipping-directory.htmlrsync -P -rsh remoteuser@remotehost:/remote/path /local/path
Una alternativa a rsync:
Uso
sftp
con la opción-r
(de forma recursiva copiar directorios enteros) y la opción-a
desftp
'sget
de control para reanudar las transferencias parciales de los archivos existentes.Requisito previo: su
sftp
implementación ya tiene una opciónget
with-a
.Ejemplo:
Copie el directorio
/foo/bar
del servidor remoto a su directorio actual local. El directoriobar
se creará en su directorio actual local.fuente
echo "put -a foo/bar" | sftp -r server:/foo
Desde OpenSSH 6.3, puede usar el
reget
comando ensftp
.Tiene la misma sintaxis que el
get
, excepto que inicia una transferencia desde el final de un archivo local existente.fuente
Otra posibilidad es intentar salvar el scp que ya ha iniciado cuando se detiene.
ctrl + z en segundo plano y detenerlo, luego ssh hacia el servidor receptor e inicie sesión, luego salga. ¡Ahora fg el proceso scp y observe cómo se reanuda desde 'estancado'!
fuente
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:
fuente
Puede hacer uso de las opciones
-rsh
y-P
dersync
.-P
es para descarga parcial e-rsh
indica que la transferencia ha terminado con el procotol ssh.El comando completo sería:
rsync -P -rsh remoteuser@remotehost:/remote/path /local/path
fuente
Ayer tuve el mismo problema, transfiriendo un volcado de sql enorme 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
fuente