資料庫備份 bash 透過 ssh 運作但不在 cronjob 中

資料庫備份 bash 透過 ssh 運作但不在 cronjob 中

我編寫了一個腳本來在共享主機上備份我的資料庫。腳本如下:

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]/ && {rest of command} as /home/[user]/ 是mysql 憑證保存在.cnf 檔案中的位置,該文件件mysqldump轉儲所需。我同時也轉義了“%”,所以也許這也有幫助。感謝@alex-atkinson 提供的逃脫提示。

相關內容