¡Buenos días!
Estoy trabajando desde Chile. La cuestión es que la conexión aquí es muy lenta y tareas como que cada estación actualice sus paquetes directamente a Internet simplemente no es posible. Así que tengo un repositorio local que me gustaría actualizar a través de rsync solo por las noches.
No tengo ningún problema con rsync, sé cómo usarlo. Donde soy un poco nuevo es en áreas como cronjobs y cosas similares.
Para resumir, lo que necesito hacer es actualizar mi repositorio todas las noches. Digamos que comienza todos los días a las 7:00 p. m. y termina a las 7:00 a. m.
¿Cómo puedo hacer eso?
Gracias de antemano.
Saludos cordiales.
PD:Uso Ubuntu 16.04.
Respuesta aceptada:
Hay dos formas de usar cron, creando un archivo en /etc/cron.d/repo-sync
con el formato:
<minute> <hour> <day_of_month> <month> <day_of_week> <user> <command>
Por ejemplo, para ejecutar rsync de src a dest a las 19:00 todos los días, puede usar:
0 19 * * * root rsync -a src dest
O puede crear un crontab ejecutando crontab -e
(como el usuario con el que desea ejecutar el comando) con una línea como la anterior menos el usuario como:
0 19 * * * rsync -a src dest
Personalmente, prefiero crear archivos cron.d para tareas de sistema/raíz, pero ambos enfoques tendrán un resultado idéntico.
Ahora, esto ejecutará el comando una vez en el momento dado; se detendrá una vez que el comando haya terminado de ejecutarse, por lo que no hay una necesidad real de especificar un comando para detenerlo a las 7:00, ya que, con suerte, rsync debería haberse completado para entonces. Si realmente debe detener el comando a las 7:00, puede ejecutar otro trabajo cron que simplemente elimine los procesos existentes en el momento dado.
0 7 * * * root killall rsync
Desafortunadamente, esto eliminará todos los comandos de rsync, lo que podría tener efectos secundarios si intenta ejecutar rsync al mismo tiempo, por lo que no recomiendo este método.
Puede ir más allá al colocar el comando rsync dentro de un script que escribe su pid en un archivo y usar ese pid en el comando kill para mitigar esto, pero esto podría ser más complicado de lo que realmente necesita.
Puede leer más sobre cómo configurar trabajos cron aquí o aquí.
Relacionado:¿Cómo comprobar todo el disco duro en busca de errores y sectores defectuosos?