
Elaborei um script para fazer backup do meu banco de dados em um host compartilhado. O roteiro é o seguinte:
mysqldump --databases [db1] [db2] | openssl aes-256-cbc -a -salt -pass file:/home/[user]/etc/.keys/.backup_key | gzip > /home/[user]/backup/$(date +%Y:%m:%d:%H:%M:%S).gz
As credenciais do banco de dados são armazenadas em um .cnf em /home/[user] e a chave de criptografia no arquivo de chave mostrado no script. Quando executo este script via SSH, tudo funciona corretamente e um arquivo de backup é criado. No entanto, nenhum arquivo é criado pelo cronjob configurado para ser executado no início de cada dia.
Alguma ideia?
Muito obrigado.
Responder1
Use o seguinte para criar o cron job na conta de usuário correta.
crontab -u <username> -e
Além disso, escape de% com '\'.
mysqldump --databases [db1] [db2] | openssl aes-256-cbc -a -salt -pass file:/home/[user]/etc/.keys/.backup_key | gzip > /home/[user]/backup/$(date +\%Y:\%m:\%d:\%H:\%M:\%S).gz
Responder2
A solução que descobri foi anexar ao início do comando: cd /home/[user]/ && {rest of command} como /home/[user]/ é onde as credenciais do mysql foram mantidas em um arquivo .cnf que mysqldump necessário para o despejo. Eu também escapei do '%' ao mesmo tempo, então talvez isso também ajude. Obrigado a @alex-atkinson pela dica de fuga.