Tener un trabajo rsync completo después de cerrar la conexión SSH


13

Estoy transfiriendo una gran cantidad de archivos de una computadora a otra usando rsync. Estoy haciendo esto mediante SSHing en la computadora de origen y ejecutando un comando como este:

sudo rsync ssh --rsync-path="sudo rsync" source_dir user@host.com:dest_dir.

Incluso si agrego nohupantes de este comando, cada vez que cierro la ventana de terminal desde la que hice SSH, la conexión se cierra.

¿Cómo puedo tenerlo para que mi transferencia de archivos continúe cuando cierro mi conexión SSH?

Respuestas:


16

La razón por la nohupque no te está ayudando es porque el programa funciona con archivos IO estándar.

Aquí hay un extracto de la página Wiki para nohup:

Nota: Nohupping trabajos en segundo plano generalmente se usa para evitar terminarlos al cerrar sesión en una sesión SSH remota. Un problema diferente que a menudo surge en esta situación es que ssh se niega a cerrar sesión ("se bloquea"), ya que se niega a perder datos de / a los trabajos en segundo plano. Este problema también se puede superar redirigiendo las tres secuencias de E / S:

nohup ./myprogram > foo.out 2> foo.err < /dev/null &También tenga en cuenta que una sesión de cierre SSH no siempre envía una señal HUP a los procesos dependientes. Entre otros, esto depende de si se asignó un pseudo-terminal o no.

Puedes usar screenpara eso.

Simplemente cree una sesión de pantalla con: screen -S rsync luego, separe su pantalla con CTRL+A d

Y puedes desconectarte de SSH


44
Quiero agregar eso al realizar cualquier trabajo que si se interrumpe, por ejemplo, por una conexión perdida, sea problemático, luego ejecutarlo en una sesión de pantalla. La pantalla está diseñada para proteger contra la pérdida accidental de conexión. Puede iniciar sesión de forma remota, iniciar la pantalla, comenzar su trabajo y, si pierde la conexión, puede volver a conectarse a cualquier instancia de pantalla en ejecución. La pantalla tiene otra funcionalidad útil: capturar la sesión en un archivo de registro, tener múltiples "pantallas" en una sola sesión (ahorrando sobrecarga de red) y múltiples espectadores (estilo de clase). También vale la pena mencionar que tmux es una alternativa de pantalla.
Johan

6

Ese comando de pantalla está bien, pero no funcionó exactamente para mis necesidades.

Esto funcionó mucho mejor:

nohup rsync -va --delete ###.###.###.###:/var/www/sites/ /var/www/sites < /dev/null &

funcionó para mí, al igual que la respuesta aceptada, gracias
Salaros
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.