下記の質問についてご存知の方がいらっしゃいましたらご教示を願います。
【質問の主旨】
私はWordPressサイトを運営しており、そのテーマとデータベースをシェルスクリプトでVPSサーバーとレンタルサーバーにバックアップするコードを作成し、そのコードを毎日定時にcronで実行しています。またcronによる実行結果の成否は、gmailで通知するように設定しています。
2023年3月中旬ぐらいまでは、バックアップを実行したあとに必ず”SUCESS” から “ERROR”の通知がgmail宛に届いていました。ですが2023年の下旬くらいから、バックアップは必ず実行されているものの、結果を知らせるgmailが届かなくなりました。なぜでしょうか?またどうすればgmailによるお知らせを受け取れるようになるでしょうか?
【質問の補足】
1. シェルスクリプトのコード
シェルスクリプトのコードは以下の通りです(IPアドレス・パスワード・メールアドレスの記述に関しては伏字にしています)。WordPressのテーマやデータベースを一旦VPSで保存して、それらのファイルをレンタルサーバーに転送し、その後gmailでお知らせをするという流れです。
#!/bin/bash datestr=`date +%Y%m%d-%H%M%S` STATUS=0 function scpfile(){ eval "scp -i /root/.ssh/id_rsa $1 user@xx.xxx.xxx.xx:/home/user/www/backup/$2" if [ $? -ne 0 ] then echo "[ERROR]scp error. file=$1" STATUS=1 fi return } function deletefile(){ CNT=0 for file in `ls -1t ${1}*` do CNT=$((CNT+1)) if [ ${CNT} -le 3 ] then continue fi eval "rm ${file}" done return } eval "tar czf /data/backup/file_${datestr}.tar.gz /var/www/user” if [ $? -ne 0 ] then echo "[ERROR]tar error." STATUS=1 fi eval "mysqldump -u root -pMYSQLPASSWORD db1 |gzip -c > /data/backup/db_${datestr}.sql.gz" if [ $? -ne 0 ] then echo "[ERROR]mysqldump error." STATUS=1 fi deletefile "/data/backup/file_" deletefile "/data/backup/edb_" scpfile /data/backup/file_${datestr}.tar.gz wordpress.tar.gz scpfile /data/backup/db_${datestr}.sql.gz wordpressdb.sql.gz if [ ${STATUS} -ne 0 ] then SUBJECT="[ERROR]backup report" else SUBJECT="[SUCCESS]backup report" fi echo "" | mailx -s "${SUBJECT}" “user@gmail.com" exit ${STATUS}
2. 参考としたコード
上記のシェルスクリプトコードは、下記の記事を参考にしました。
https://knowledge.sakura.ad.jp/4334/
3. /usr/local/bin/backup.shでシェルスクリプトを直接実行した場合
Cronによる自動実行ではなく、/usr/local/bin/backup.sh
として手動で実行すると、ターミナル画面に以下のような結果が返ってきます。
file_20230710-153321.tar.gz 100% 3010MB 11.5MB/s 04:22 db_20230710-153321.sql.gz 100% 12MB 17.6MB/s 00:00 /usr/sbin/sendmail: そのようなファイルやディレクトリはありません "/root/dead.letter" 9/250 . . . message not sent.
—
以上、ご確認よろしくお願い申し上げます。
0 コメント