
De vez en cuando descargo un archivo muy grande a través de scp y cada vez existe una pequeña posibilidad de que la conexión se caiga y se corte la transferencia a mitad de camino.
¿Hay alguna manera de reanudarlo?
Respuesta1
Puedes probar el siguiente enfoque: en lugar descpusarddpara omitir la parte descargada y agregar el resto al archivo.
sofar=`ls -l ./destfile | awk '{print $5}'`
ssh user@host "dd if=./srcfile bs=1 skip=$sofar" >> ./destfile
Posible optimización: trabajar con bloques grandes. Dejemos esto como tarea.
Respuesta2
Con scp
ningún.
Si ambos extremos lo tienen, puedes usarlo rsync -LvzP remoteserver:path/to/file localfile
para transferir un solo archivo.
Respuesta3
Sí, hay formas de reanudar desde el punto de interrupción, pero no es posible usando scp. sftp reget filename
hace lo que necesitas. Yarek y Grawity han proporcionado soluciones válidas a las que hago +1 en ambos, pero para reanudar desde un punto de interrupción, me gusta rsync. Los comandos de ejemplo proporcionados asumen que está recuperando un archivo de un servidor remoto a su estación de trabajo local (descargando). Tenga en cuenta que los dos últimos parámetros deben considerarse archivo_origen y archivo_destino en ese orden. La sintaxis del nombre del archivo varía según si el archivo de origen o de destino es local o remoto. Si estuviera enviando (cargando) archivos [de texto], reescribiría los ejemplos proporcionados como:
#De local a remoto sofár=`ssh sistema_remoto ls -l archivo_interrumpido | awk '{imprimir $5}'`; dd if=archivo_fuente bs=1 skip=$hasta ahora | ssh sistema_remoto "cat >> ./archivo_interrumpido"
Y a la solución rsync, agrego -e ssh
. Debe considerar si necesita o no detalle, compresión, preservar la propiedad, permisos, marca de tiempo, directorios recurrentes, etc. Consulte las páginas de manual y Google con respecto al parámetro -L. Es posible que desee que los enlaces simbólicos permanezcan como enlaces en lugar de hacer referencia a ellos.
rsync -P -e ssh local_source_file remoteserver:path/to/interrupted_target_file
Respuesta4
Sí, si ambos extremos admiten sftp; después de scp remoteuser@remotehost:/absolute/filename .
un error, puede continuar haciendo sftp remoteuser@remotehost
y luego reget /absolute/filename
reanudar la descarga.