Tornando um crontab mais eficiente

2

Eu gerencio um servidor relativamente simples com alguns sites que mantenho.

Eu configurei um crontab para despejar o mysql e zipar o PHP diariamente. Rodando ao longo de uma semana eu tenho 7 incrementos de tudo o que está acontecendo. Eu então uso o mesmo crontab para copiá-los do servidor para outro.

Usando o bit mysql como exemplo, tenho

16 3 * * tue mysqldump filename > /var/backups/b-Tuesday/filename.sql  
16 3 * * wed mysqldump filename > /var/backups/b-Wednesday/filename.sql
[etc]

Isso se repete para o PHP ser compactado para cada um dos sites e novamente para a parte scp do processo.

Existe uma maneira de ter um trabalho diário para cada site que saiba salvá-lo na pasta de backup do dia em vez de ter 7 trabalhos para cada coisa que eu estou fazendo backup?

    
por Humpton 08.05.2009 / 16:57

5 respostas

15

Que tal usar a função date na chamada?

16 3 * * * mysqldump filename > /var/backups/b-'date +%A'/filename.sql
    
por 08.05.2009 / 17:06
2

Tente um script de shell como este:

#!/bin/bash
/usr/bin/mysqldump filename | /usr/bin/bzip2 -c > /var/backups/b-'date +%A'/filename.sql.bup.bz2

Isso é semelhante ao que está em meu /etc/cron.daily/, mas com alterações para seus caminhos. Eu continuo querendo fazer mais com isso, mas funciona e os backups são muito bem compactados também!

Meu formato de data é, na verdade, date +%Y%m%d para fornecer mais informações, mas guardo os backups por mais de sete dias.

    
por 08.05.2009 / 18:15
2

Como alternativa, o comando logrotate tratará de compactar, renomear (com datas), remoção, etc. de arquivos gerados todos os dias. Você poderia chamar seus comandos de despejo todos os dias e chamar logrotate uma vez por dia também. O arquivo de configuração logrotate permite especificar quais arquivos devem ser rotacionados e o que fazer com eles.

    
por 08.05.2009 / 19:20
1

Para uma solução rápida e viável, o local de Brent com o uso da data.

Dependendo da necessidade e do desejo de flexibilidade futura, posso considerar lançar os backups em um script de shell. Dessa forma, você pode usar a mesma base de código para diário, semanal, por hora ou qualquer outra coisa. Você também ganha o benefício do registro de erros e relatórios (se é de valor).

    
por 08.05.2009 / 17:14
0

Relacionado de maneira tangencial, o rsnapshot gerenciará rotações de backup por hora, diárias, semanais e mensais para você. Ele usa uma combinação inteligente de rsync e hard links para fazer backups.

    
por 09.05.2009 / 15:14

Tags