Configurando backups diários no laptop com o cron / anacron em 16.10

0

Eu tenho perguntas semelhantes a confusão sobre cron e anacron (configurando o agendamento de backup para o rsnapshot) , mas também não foram respondidas.

Problema

Meu problema é ter uma rotina de backup diariamente em um laptop. Então, minha primeira ideia foi configurá-lo em crontab like

$ crontab -e
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:   
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# I guess as user I have no access to /var/log from this crontab, do I?
@daily ~/my-backups.sh >> ~/.log/my-backup.log

e, em seguida, o script my-backups.sh deve ser executado todos os dias à meia-noite ( 0 0 * * * ), certo?

Ok, e depois de ler a documentação eu descobri anacron. Mas o problema surge quando o script não é executado. A partir da documentação, entendo que, se o computador estava desligado quando a rotina diária deveria ser executada por cron , então anacron deveria ativá-lo na inicialização. Mas isso não está acontecendo também.

Eu preciso fazer outra configuração? (Da documentação eu assumi que não era necessário e que deveria funcionar de imediato, mas não está acontecendo.)

Pergunta

Como posso configurar o cron / anacron para executar um script diário, e no caso de o computador estar desligado no momento da execução, ele deve executar o script na inicialização ou após algum tempo após a inicialização.

Versão usando cron.daily

Eu modifiquei meu script de backup alterando para cron.daily como sugerido. Meu script de teste é:

#!/bin/bash

date +%Y-%m-%d >> /var/log/backup.log

Em seguida, adicione-o a /etc/cron.daily como um link simbólico

sudo ln -s ~/bin/my-backup /etc/cron.daily/backup

Eu verifiquei e o script e o link simbólico têm permissões de execução.

Hoje, iniciei minha máquina por volta das 9 e as primeiras entradas em /var/log/syslog estão por aí, mas não há sinal de cron.daily .

$ cat /var/log/syslog | grep cron
Feb 16 09:05:15 box cron[981]: (CRON) INFO (pidfile fd = 3)
Feb 16 09:05:15 box cron[981]: (CRON) INFO (Running @reboot jobs)
Feb 16 09:17:01 box CRON[4574]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Feb 16 10:17:01 box CRON[6453]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Feb 16 11:17:01 box CRON[6878]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Feb 16 12:17:01 box CRON[7310]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Feb 16 13:14:01 box CRON[7582]: (root) CMD (   test -x /etc/cron.daily/popularity-contest && /etc/cron.daily/popularity-contest --crond)
Feb 16 13:17:01 box CRON[7595]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Feb 16 14:17:02 box CRON[8134]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

Além disso, a última vez que o anacron foi executado foi ontem

$ sudo cat /var/spool/anacron/cron.daily 
20170215

E eu verifiquei e meu script está listado no cron.daily

$ run-parts --test --report /etc/cron.daily
/etc/cron.daily/0anacron
/etc/cron.daily/apport
/etc/cron.daily/apt-compat
/etc/cron.daily/backup
/etc/cron.daily/bsdmainutils
/etc/cron.daily/cracklib-runtime
/etc/cron.daily/dpkg
/etc/cron.daily/google-chrome
/etc/cron.daily/google-talkplugin
/etc/cron.daily/logrotate
/etc/cron.daily/man-db
/etc/cron.daily/mlocate
/etc/cron.daily/passwd
/etc/cron.daily/popularity-contest
/etc/cron.daily/update-notifier-common
/etc/cron.daily/upstart
    
por adn 15.02.2017 / 12:33

1 resposta

0

Coloque seu script em /etc/cron.daily e você terá exatamente o que queria.

    
por Pilot6 15.02.2017 / 12:36