専用サーバーにスクリプトを設定して、すべてのCpanelバックアップファイルをAmazon S3にバックアップし、cronを介して毎晩実行しています。
昨夜は完全に動作し、すべてをバックアップしましたが、バックアップしたものをすべて削除しました。date
スクリプトの「削除」部分を取り出して別のファイルに入れてエコーとして実行すると、エコーする日付を正しく取得できないため、コマンドと関係があるようです。「コマンドが見つかりません」というエラーが表示され続けます。
バックアップスクリプトの完全なコードは次のとおりです。
#!/bin/bash
##Notification email address
_EMAIL=klawncare1212@gmail.com
ERRORLOG=/var/log/s3_backup_logs/backup.err`date +%F`
ACTIVITYLOG=/var/log/s3_backup_logs/activity.log`date +%F`
##Directory which needs to be backed up
SOURCE=/backup/cpbackup/daily
##Name of the backup in bucket
DESTINATION=`date +%F`
##Backup degree
DEGREE=4
#Clear the logs if the script is executed second time
:> ${ERRORLOG}
:> ${ACTIVITYLOG}
##Uploading the daily backup to Amazon s3
/usr/bin/s3cmd -r put ${SOURCE} s3://MK_Web_Server_Backup/${DESTINATION}/ 1>>${ACTIVITYLOG} 2>>${ERRORLOG}
ret2=$?
##Sent email alert
msg="BACKUP NOTIFICATION ALERT FROM `hostname`"
if [ $ret2 -eq 0 ];then
msg1="Amazon s3 DAILY Backup Uploaded Successfully"
else
msg1="Amazon s3 DAILY Backup Failed!!\n Check ${ERRORLOG} for more details"
fi
echo -e "$msg1"|mail -s "$msg" ${_EMAIL}
#######################
##Deleting backup's older than DEGREE days
## Delete from both server and amazon
#######################
DELETENAME=$(date --date="${DEGREE} days ago" +%F)
/usr/bin/s3cmd -r --force del s3://MK_Web_Server_Backup/${DELETENAME} 1>>${ACTIVITYLOG} 2>>${ERRORLOG}
そして、これが私がテストしているサンプルコードで、上記の日付コードを単純にエコーします。
#!/bin/bash
##Backup degree
DEGREE=4
#######################
##Deleting backup's older than DEGREE days
## Delete from both server and amazon
#######################
DELETENAME=$(date --date="4 days ago" +%F)
echo ${DELETENAME}
私は何が間違っているのですか?この小さなテストスクリプトをCentOSLinuxサーバーでSSH経由で実行するたびに、次のエラーが発生します。
"date --date = 4日前:コマンドが見つかりません"
したがって、「次数」変数値の挿入に問題はありません。また、SSH()のプロンプトで同じコマンドを実行するだけでdate --date="4 days ago" +%F
、チャームのように機能し、期待どおりにデータを出力します。
私は何が間違っているのですか?