Garantindo o Funcionamento do Crontab
Colaboração: Renato Rudnicki
Data de Publicação: 19 de Novembro de 2006
Gostaria de agradecer ao edyn pela dica que me deu no forum do underlinux, o que tornou possível a publicação desse post.
Tenho tido várias vezes o mesmo problema, de programar um backup no crontab, para determinado horário, e nem sempre estar com meu computador ligado na hora agendada para que possa ocorrer o backup. Pesquisando em fóruns, e na net, descobri que posso usar parametros como @reboot, @ daily, etc.... Com isso, voçê pode programar o seu backup agendado na crontab funcionar, mesmo que na hora determinada, o PC esteja desligado.
Aqui vão algumas dicas sobre esses parâmetros:
Entry Description Equivalent To @reboot ocorre ao iniciar o pc. None @yearly ocorre 1 vez ao ano 0 0 1 1 * @annually o mesmo que @yearly 0 0 1 1 * @monthly ocorre 1 vez ao mês 0 0 1 * * @weekly ocorre 1 vez na semana 0 0 * * 0 @daily Run once a day 0 0 * * * @midnight mesmo que @daily 0 0 * * * @hourly ocorre 1 vez a cada hora 0 * * * *
Não fiz todos testes descritos acimas, apenas o do @reboot e do @daily, que a princípio são os mais funcionais. Abaixo, algumas conclusões e exemplo da aplicação na crontab.
# Run daily cron jobs at 4:40 every day: 30 21 * * 1-5 /usr/bin/run-parts /etc/cron.daily 1> /dev/null * * * 1-5 /etc/cron.daily/bkp_home.sh @daily
Pelos testes que eu fiz, pude constatar o seguinte:
- o @daily, @reboot etc, tem que ficar no final da linha
- Independente de usar o @daily ou @reboot, ele só fará um novo backup, caso não tenha nenhum com a mesma data ou nome, independente de se você reiniciar a máquina ou não (pelo menos nos testes que eu fiz ocorreu isso)
- Se quiser, não precisa criar uma nova linha na crontab para inserir o parametro @daily por exemplo. Eu apenas inseri uma nova linha, pois ao meu ver, parece algo mais legivel.
- Mesmo que voce modifique algum arquivo que esta no diretório a ser feito backup, caso o backup já tenha ocorrido no dia, e você reiniciar o pc, não será feito um novo backup, devido, a já existir um backup com a data do dia ou mesmo nome
OBS 1: Caso o backup seja muito grande, ele pode deixar um pouco lento a máquina ao efetuar o backup.
OBS 2: Também seria interessante ao invés de utilizar o backup, utilizar o rsync.
Mais informações podem ser encontradas no site http://www.mkaz.com/ref/unix_cron.html