Como agendar um comando rsync?

0

Bom dia!

Estou trabalhando no Chile. O problema é que a conexão aqui é super lenta e tarefas como fazer com que todas as estações atualizem seus pacotes diretamente para a internet simplesmente não é possível. Então, eu tenho um repositório local que gostaria de atualizar via rsync apenas à noite.

Eu não tenho um problema com o rsync, sei como usá-lo. Onde eu sou um pouco novo é em áreas como cronjobs e similares.

Para encurtar a história, o que preciso fazer é atualizar meu repositório todas as noites. Digamos que comece todos os dias às 19:00 e pare às 7:00.

Como posso fazer isso?

Obrigado antecipadamente.

Atenciosamente.

PD: Eu uso o Ubuntu 16.04.

    
por Alain 17.09.2017 / 16:34

1 resposta

1

Existem duas maneiras de usar o cron, criando um arquivo em /etc/cron.d/repo-sync com o formato:

<minute> <hour> <day_of_month> <month> <day_of_week> <user> <command>

Por exemplo, para executar o rsync de src para dest as 19:00 todos os dias, você pode usar:

0 19 * * * root rsync -a src dest

Ou você pode criar um crontab executando crontab -e (como o usuário para o qual deseja executar o comando) com uma linha como acima, menos o usuário, como:

0 19 * * * rsync -a src dest

Pessoalmente, prefiro criar arquivos cron.d para tarefas de sistema / raiz, mas ambas as abordagens terão um resultado idêntico.

Agora, isso executará o comando uma vez no momento determinado - ele será interrompido assim que o comando terminar, portanto, não é necessário especificar um comando para interrompê-lo às 7:00, como o rsync deve ter esperado até então. Se você realmente precisar interromper o comando às 7:00, poderá emitir outro trabalho cron que simplesmente elimina os processos existentes no momento determinado.

0 7 * * * root killall rsync

Infelizmente isso irá matar todos os comandos rsync - que podem ter efeitos colaterais se tentar rodar o rsync ao mesmo tempo, então eu não aconselho este método.

Você pode ir mais longe colocando o comando rsync dentro de um script que escreve seu pid em um arquivo, e use esse pid no comando kill para atenuar isso, mas isso pode ser mais complicado do que você realmente precisa.

Você pode ler mais sobre como configurar tarefas do cron aqui ou aqui .

    
por 17.09.2017 / 17:12

Tags