¿Cómo puedo pausar / reanudar rsync

49

¿Cómo puedo pausar un rsync que se está ejecutando?

La primera vez hice Ctrl+ Cpara matarlo y usé la -Pbandera para volver a correr. ¿Es propenso a corromper la transferencia de archivos actual?

La segunda vez simplemente pongo MacOS a dormir (cerrando la tapa). Mirando el proceso en ejecución, puedo ver 2 (no estoy seguro de por qué) con un estado de 'S'.

Intenté usar

kill -SIGCONT

para reanudar el proceso, pero no tiene ningún efecto.

qnoid
fuente

Respuestas:

61

Puede pausar cualquier programa enviándole una señal TSTP(educada) o STOP(forzada). En la terminal en la que te has encontrado rsync, presionando Ctrl+ Zenvía TSTP. Reanude con el comando fgo bgen el terminal o una CONTseñal.

Es seguro matar un proceso rsync y ejecutar todo de nuevo; continuará donde lo dejó. Puede ser un poco ineficiente, especialmente si no lo ha aprobado --partial(incluido en -P), porque rsyncverificará todos los archivos nuevamente y procesará el archivo desde el que se interrumpió desde cero.

Puede haber combinaciones inusuales de opciones que harán que algunos archivos no se sincronicen correctamente, tal vez --inplacecon algo más, pero creo que ninguna opción única causará esto.

Si desconecta su computadora portátil y la vuelve a conectar en otro lugar, puede obtener una dirección IP diferente. Luego, la conexión TCP utilizada por rsync se cortaría, por lo que tendría que matarla y comenzar de nuevo. Esto también puede suceder si suspende su computadora portátil y se agota el tiempo de espera de la conexión TCP. El tiempo de espera eventualmente se filtrará al nivel de la aplicación, pero puede tomar un tiempo. Es seguro presionar Ctrl+ Cy ejecutar rsync nuevamente.

Gilles 'SO- deja de ser malvado'
fuente
1
En realidad, matar rsync -avhsimplemente perder el archivo actual que se está copiando, si el archivo es grande, ha perdido bastante tiempo. Tal vez Ctrl+zmover el archivo temporal (comience con un punto) y luego Ctrl-Crsync podría ser una mejor solución.
Malat
Gracias por una explicación tan detallada. Para aclarar: ctrl + z para pausar, fg para reanudar, bg para detener.
Praesagus
3
@Praesagus bgpara poner de proceso a la b ack g redondo , de no parada.
Jari Keinänen
--partiales lo que necesitaba Estoy tratando de copiar 21GB de datos, y entre estos tengo un archivo de 6.6GB. El problema es que la red mata mi conexión después de unos pocos GB de transferencia de datos, para lo cual --partiales exactamente lo que necesito.
AnthonyD973
20

Ctrl+ Zpara suspender, y:

$ fg

para continuar, usa

$ jobs

para ver trabajos suspendidos; bg [number]para ponerlos en segundo plano; fg [number]ponerlo en primer plano.

Gauteh
fuente
2
Ctrl+Ssolo suspende la salida de desplazamiento, no el programa subyacente (a menos que se bloquee esperando que el terminal acepte su salida), y solo si no la ha deshabilitado.
Gilles 'SO- deja de ser malvado'
1
Con el estado actual de 'S' no se reanuda. ¿Es seguro matarlo usando Ctrl + C y ejecutar rsync nuevamente? ¿Qué otras opciones tengo? Aunque lo tendré en cuenta la próxima vez, gracias.
qnoid
1
También tenga en cuenta que es probable que Ctrl-Z para suspender un proceso, después de un tiempo, resulte en el tiempo de espera de cualquier conexión de red TCP establecida por ese programa. Por lo tanto, dejar un rsync suspendido por más de unos minutos probablemente hará que se cierre abruptamente con un mensaje de error cuando lo vuelva a poner en primer plano y descubra que sus sockets abiertos devuelven errores de lecturas y escrituras.
Jim Dennis
8

Corre rsynccon la --partialbandera. Luego mantendrá transferencias parciales y reanudará archivos parciales cuando se inicie.

bahamat
fuente
5

Las personas aquí han mencionado que el uso de la --partialbandera funciona, sin embargo, debe mencionarse que solo se reanuda cuando se usa la bandera --appendo --append-verifycuando se reanuda.

--partialcrea un archivo oculto del archivo que no ha finalizado el proceso de sincronización, el archivo se mantiene cuando interrumpe la sincronización. Continúa completando el archivo cuando lo usa --appenddespués de reanudar, de lo contrario, cuando no lo usa --append, el archivo oculto incompleto se mantiene y permanece incompleto.

Conclusión: puede interrumpir el rsync --partialuso de Ctrl+ Csi lo usa rsync --appendal reanudar

(Fuente: ¿Se puede reanudar rsync después de ser interrumpido? Consultado el 5 de abril de 2016)

Mehdi Nellen
fuente
así que si lo he usado rsync --avP <source> <destination>, ¿tengo que pausarlo con CTRL + C y luego continuar simplemente escribiendo rysnc --append?
kingmakerking
@kingmakerking sí
Mehdi Nellen
@kingmakerking: No. todavía necesita las opciones de su primer rsync, y el origen y el destino. Para reanudar, reinicie su comando rsync anterior y agregue --append a las opciones existentes.
mivk