我编写了一个脚本来备份共享主机上的数据库。脚本如下:
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 不会创建任何文件。
有任何想法吗?
非常感谢。
答案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
答案2
我找到的解决方案是将其附加到命令开头:cd /home/[user]/ && {其余命令} 因为 /home/[user]/ 是 mysql 凭据保存在 .cnf 文件中的位置,mysqldump 需要该文件来进行转储。我同时还转义了“%”,所以这也许也有帮助。感谢 @alex-atkinson 提供的转义提示。