Tengo que transferir grandes cantidades de datos (> 80 GB) a través de ssh usando rsync. Todo funciona bien, pero la conexión DSL desde donde se envían los datos de la copia de seguridad se reducirá una vez cada 24 h durante un máximo de 3 minutos (cambiar de proveedor no es una opción).
Cómo puedo:
¿Reiniciar automáticamente la transferencia cuando se vuelve a realizar la conexión?
¿Asegúrate de que no hay por accidente dos comandos rsync ejecutándose al mismo tiempo?
linux
command-line
ssh
rsync
Sathyajith Bhat
fuente
fuente
while ./run_script; do echo "Retrying..."; done; echo "Done."
Asegúrate de querun_script
regrese0
el éxitoRespuestas:
Lo siguiente debería ser útil:
Cuando se corta la conexión, rsync se cerrará con un código de salida distinto de cero. Este script simplemente sigue ejecutando rsync, dejándolo continuar hasta que la sincronización se complete normalmente.
fuente
Esto hace lo mismo que la respuesta de Peter, pero le da al usuario la opción de qué archivo remoto desea y dónde quiere guardarlo (además de realizar el rsync a través de ssh). Reemplace el USUARIO y el ANFITRIÓN con su nombre de usuario y host respectivamente.
Las opciones de rsync utilizadas aquí permiten las estadísticas de progreso durante la transferencia, el almacenamiento de archivos parciales en caso de falla inesperada y la capacidad de agregar archivos parcialmente completados al reanudar. La opción -v aumenta la verbosidad, la opción -z permite la compresión (buena para una conexión lenta, pero requiere más potencia de CPU en ambos extremos), y la opción -e nos permite realizar esta transferencia a través de ssh (el cifrado siempre es bueno).
Nota: Use esto solo si tiene habilitado el inicio de sesión de clave pública con su ssh; de lo contrario, le pedirá una contraseña cuando se reinicie (eliminando todas las funciones del script).
fuente
supervisor daemon (un administrador de control de procesos) podría funcionar muy bien después de crear certificados rsa de ambos lados, con una configuración similar a la siguiente: (/ etc / supervisor / supervisord.conf es la ruta del archivo de configuración en sistemas basados en Debian)
fuente
La respuesta de @Peter parece ser muy útil, pero para mí fue importante usar la
--update
opción. Después de que se reanudó la conexión, sin--update
rsync intentaba sincronizar todo desde el principio. Con--update
, se omiten los archivos que ya existen.rsync --partial --update --progress -r [SOURCE] [DESTINATION]
fuente
--update
omite los archivos que ya existen ... Incluidos los que no se han copiado completamente en el destino. Creo que va en contra de la mayoría de los casos de uso.rsync --partial --update file1 remotehost:file1
. después de transferir el 15% rompí la transferencia (kill -KILL).