date関数使用
90DayDataBackup.sh
# vi /root/90DayDataBackup.sh
#!bin/sh
PATH=/usr/local/sbin:/usr/bin:/bin
## ----------------------------------------------------------
NAME="example.com-ファイル90日世代管理"
NOW_DATE=`date +%Y%m%d`
DATA_PATH="/root/backup/example.com/data/"
BACKUP_PATH="/root/backup/example.com/data/${NOW_DATE}"
DELETE_DAY=`date -d '90 day ago' +%Y%m%d`
## ----------------------------------------------------------
error ()
{
echo "【Error Backup】${NAME} HOST:`hostname` `hostname -I`" | mail -s "Backup Error ${NAME} HOST:`hostname` `hostname -I`" root
exit
}
success ()
{
echo "【Success Backup】${NAME} HOST:`hostname` `hostname -I`" | mail -s "【Success Backup】${NAME} HOST:`hostname` `hostname -I`" root
}
# バックアップ関数
backup ()
{
# バックアップディレクトリ作成
mkdir -p ${BACKUP_PATH}
# バックアップ
/usr/bin/rsync -avvuz --progress -e "ssh -p xxx22 -i /root/.ssh/example.com.ppk" example-user@xxx.yyy.zzz.aaa:/var/www/data/ ${BACKUP_PATH} 1>/dev/null
# 90日前のディレクトリを削除
rm -rf ${DATA_PATH}/${DELETE_DAY}
}
# 変数空チェック
if [ -z "${NOW_DATE}" ] || [ -z "${DATA_PATH}" ] || [ -z "${BACKUP_PATH}" ] || [ -z "${DELETE_DAY}" ] ; then
error
fi
# バックアップ実行
backup && { success; exit 0; }
rmコマンドが絡むので面倒でも変数の空判定はしましょう。
実行権限付与と実行
# chmod +x /root/90DayDataBackup.sh # sh /root/90DayDataBackup.sh
CRONに登録
# vi /etc/crontab (略) # 毎日3時10分に日付毎にデータディレクトリを90世代管理バックアップ 10 3 * * * root /usr/bin/sh /root/90DayDataBackup.sh
設定反映
# systemctl restart crond
簡易版
# vi /root/90DayDataBackup.sh
#!bin/sh
PATH=/usr/local/sbin:/usr/bin:/bin
## ----------------------------------------------------------
NOW_DATE=`date +%Y%m%d`
DATA_PATH="/root/backup/example.com/data/"
BACKUP_PATH="/root/backup/example.com/data/${NOW_DATE}"
DELETE_DAY=`date -d '90 day ago' +%Y%m%d`
## ----------------------------------------------------------
# 変数空チェック
if [ -z "${NOW_DATE}" ] || [ -z "${DATA_PATH}" ] || [ -z "${BACKUP_PATH}" ] || [ -z "${DELETE_DAY}" ] ; then
echo "Error"
echo "BackUP Error `hostname`" | mail -s "Backup Error `hostname`" root
exit
fi
# バックアップディレクトリ作成
mkdir -p ${BACKUP_PATH}
# バックアップデータ取得
/usr/bin/rsync -avvuz --progress -e "ssh -p xxx22 -i /root/.ssh/example.com.ppk" example-user@xxx.yyy.zzz.aaa:/var/www/data/ ${BACKUP_PATH}
# 90日前のディレクトリを削除
rm -rf ${DATA_PATH}/${DELETE_DAY}



