Meu site é controlado via cpanel . Quero automatizar o backup dos meus bancos de dados e depois automatizar o download deles para minha máquina de desenvolvimento. O primeiro passo foi configurar os cron jobs da seguinte forma
0 3 * * 4 mysqldump -u username -p password database1 > backup/db_biz_directory.sql
0 4 * * 4 mysqldump -u username -p password database2 > backup/db_swr_software.sql
- Existem dois arquivos vazios na pasta de backup com data e hora 11, que é na última quinta-feira.
- Não há erros na seção de erros do cPanel.
- Não há nada em etc , logs ou pastas var .
- Não recebi nenhum e-mail, eles estão configurados e funcionam.
- Existem tabelas e dados nesses bancos de dados.
Como os arquivos existem, os trabalhos obviamente foram executados. O que há de errado com o meu trabalho? Os erros podem ser registrados em outro lugar?
Você pode não ter fornecido informações suficientes para termos certeza. Você pode querer informar em QUE arquivo cron isso está (ou seja, crons do sistema -
/etc/crontab
por exemplo, ter um campo extra com um nome de usuário - embora eu suspeite que esse não seja o problema. Também existem diferentes implementações do cron - seria útil saber quais você usou, ao lado de qual sistema operacional)A primeira coisa que eu faria é adicionar um caminho - ou seja, mudar
mysqldump
para/usr/bin/mysqldump
assumir que esse é o caminho correto para o seu sistema.Não está claro por que você esperaria receber e-mails desse comando. Você tem um comando mais alto no crontab com uma linha como
[email protected]
? Mesmo com isso, se o comando mysqldump não produzir nenhuma saída, ele não enviará um email.Você pode tentar colocar isso em um arquivo de lote e chamá-lo, junto com algumas instruções de eco. Além disso, redirecionar stderr para stdout pode ser útil (ou seja, adicionar
2>&1
ao final do comando no arquivo de lote).Você diz que não há nada em etc logs ou pastas var - mas você procurou nos logs do sistema (por exemplo
/var/log/messages
,/var/log/syslog
) a saída do crontab?Como um aparte, eu coloco para você que codificar sua senha na linha de comando é uma má ideia de um POV de segurança. Você deve remover o nome de usuário e a senha da linha de comando e adicioná-lo a .my.cnf - consulte https://serverfault.com/questions/358903/store-the-mysql-client-password-or-setup-password-less -autenticação
Acontece que houve uma série de problemas.
Eu tive que esperar até que o trabalho fosse executado, está tudo bem agora.
O novo comando é
E terminei o script para fazer backup de vários bancos de dados e enviar por e-mail o status/erros para mim.