rsnapshot: O que há de errado com o meu crontab?

1

Estou usando o Rsnapshot para backups (Linux CentOS 6).

Aqui está meu /etc/cron.d/rsnapshot :

30 11 * * * root    /usr/bin/rsnapshot nowandthen > /backups/rsnapshot_cron.txt 2>&1
15 11 * * 4 root    /usr/bin/rsnapshot weekly > /backups/rsnapshot_cron.txt 2>&1
00 11 24-31 * 4 root    /usr/bin/rsnapshot monthly > /backups/rsnapshot_cron.txt 2>&1

O backup mensal foi planejado para ser executado todas as últimas quintas-feiras em qualquer mês.

No entanto, backup mensal executado hoje, quinta-feira, 2016-fev-18 às 11:00. Hoje não é quinta-feira passada em um mês.

O que há de errado com o meu crontab?

    
por Danijel 18.02.2016 / 13:59

1 resposta

3

De acordo com este site , sua string significa "Às 11:00 nos dias 24, 25, 26, 27, 28, 29, 30 e 31 de cada mês e a cada qui. ”(ênfase minha). Se o site estiver correto, isso explicaria por que ele foi executado no dia 18.

A entrada de exemplo em man 5 crontab para ser executada no segundo sábado é:

0 4 8-14 * *    test $(date +\%u) -eq 6 && echo "2nd Saturday"

(ou seja, executar todos os dias da segunda semana e verificar o dia da semana como parte do comando) - isso dá suporte à exibição de que o dia da semana é um filtro adicional alternativo, não uma qualificação adicional, embora a página de manual não deixa claro.

Então, no seu caso, eu usaria:

00 11 * * 4 root test $(date -d @$(('date +\%s'+604800)) +\%m) -ne $(date +\%m) && /usr/bin/rsnapshot monthly > /backups/rsnapshot_cron.txt 2>&1

Verifique se o seu date suporta -d 'next Thursday' : em caso afirmativo, você pode usar o mais simples:

00 11 * * 4 root test $(date -d 'next Thu' +\%m) -ne $(date +\%m) && /usr/bin/rsnapshot monthly > /backups/rsnapshot_cron.txt 2>&1

Isso é executado toda quinta-feira e verifica se a data de uma semana (604800 segundos) está no mesmo mês: se não, deve ser a última quinta-feira para que o comando de backup seja executado.

    
por 18.02.2016 / 15:48