
共有ホスト上のデータベースをバックアップするためのスクリプトを作成しました。スクリプトは次のとおりです。
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]/ は、mysqldump がダンプに必要とする .cnf ファイル内の mysql 認証情報が保存されている場所です。また、同時に '%' もエスケープしたので、おそらくこれも役立つでしょう。エスケープのヒントを提供してくれた @alex-atkinson に感謝します。