数据库备份bash通过ssh工作但不在cronjob中工作


0

我已经整理了一个脚本来备份共享主机上的数据库。脚本如下:

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

数据库凭据存储在/ home / [user]中的.cnf中,以及脚本中显示的密钥文件中的加密密钥。当我通过SSH运行此脚本时,一切正常,并创建备份文件。但是,cronjob集不会创建任何文件以在每天的顶部执行。

有任何想法吗?

非常感谢。


cronjob是否以同一个用户身份运行?我从来没有试过在我的主机上运行crons。可以尝试打印(或保存)用户和组名称的小型cron作业吗?
jcoppens 2015年

@jcoppens:试过这个,cron作业与通过ssh访问的用户一样运行,命令工作。
格雷

Answers:


1

使用以下命令在正确的用户帐户下创建cron作业。

crontab -u <username> -e

另外,使用'\'转义%。

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

0

我找到的解决方案是附加到命令的开头:cd / home / [user] / && {rest of command} as / home / [user] /是mysql凭据保存在.cnf文件中的哪个mysqldump转储需要。我也同时逃过了'%',所以也许这也有帮助。感谢@ alex-atkinson的转义提示。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.