Bash backup de banco de dados trabalhando via ssh mas não no cronjob

0

Eu criei um script para fazer backup do meu banco de dados em um host compartilhado. O script é 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-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 conjunto de tarefas do cron para ser executado no topo de cada dia.

Alguma idéia?

Muito obrigado.

    
por Grey 14.05.2015 / 02:47

2 respostas

1

Use o seguinte para criar o trabalho cron sob a conta de usuário correta.

crontab -u <username> -e

Além disso, escape do% 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
    
por 14.05.2015 / 05:46
0

A solução que resolvi 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 o mysqldump requeria para o dump. Eu também escapei do '%' ao mesmo tempo, então talvez isso também ajude. Obrigado a @ alex-atkinson pela dica de fuga.

    
por 14.05.2015 / 07:46