Estou usando o Linux Mint mais recente. Eu queria saber se é possível criar um cronjob especial para um backup do banco de dados.
No meu /etc/cronjob
arquivo, tenho o seguinte código:
# Minute Hour Day of Month Month Day of Week Command
# (0-59) (0-23) (1-31) (1-12 or Jan-Dec) (0-6 or Sun-Sat)
30 4 * * 1-6 /home/users/backup.sh
No meu /home/users/backup.sh
eu tenho:
mysqldump -uroot -p MyDatabase > /home/users/backup_MyDB/full_myDB.sql
Em vez de full_myDB.sql
eu gostaria de ter algo como 2014-04-04_full_myDB.sql
onde a data é adicionada dinamicamente, dependendo da data que temos.
Se o arquivo SQL Backup é mais de uma semana que eu gostaria que o cron para apagar automaticamente.
Usei as informações acima e queria fornecer mais uma atualização menor que realmente trunca uma das tabelas realmente grandes que estavam atrasando nossos backups.
Espero que isso ajude outra pessoa.
Usando as informações acima, criei um script shell básico chamado mysqlbackup.sh com o seguinte conteúdo:
Certifique-se de executar: chmod + x mysqlbackup.sh
Eu também coloquei isso no meu crontab -e:
fonte
Eu sei que é muito antigo, mas usei as respostas acima e adicionei uma instrução de compactação de arquivos. Espero que alguém ache isso útil.
1) Pesquisando um pouco, o 7-zip parece o melhor compressor por aí. Se a sua distribuição Linux o suportar, você pode usar o instalador do apt:
Como alternativa, você pode usar o tar.gz se sentir mais confortável com ele.
2) Em seguida, você cria um script, por exemplo
/home/users/backup.sh
Com o conteúdo:Esse script encontrará os arquivos com mais de 7 dias e os excluirá; em seguida, fará o dump do sql; em seguida, compactará 7 todos os arquivos .sql no diretório e excluirá todo o .sql no diretório ( BTW, você pode opcionalmente adicionar um comando mysql antes do despejo, conforme observado na resposta anterior, se necessário)
3) Fazemos um
chmod +x /home/users/backup.sh
para que possa ser executável.3.1) Você deve testar seu script se ele funcionar como pretendido
4) Programamos a tarefa com
crontab -e
E é isso. Ele fará backup do seu banco de dados MySQL todos os dias da semana às 4:30 da manhã (exceto aos domingos) e compactará o backup
fonte
Para adicionar à resposta do @ Graeme, pode ser interessante notar que, às vezes, você precisa escapar do caractere '%' em um trabalho cron para que fique assim:
fonte