Linux

90日世代管理+データバックアップ date関数使用シェルスクリプト

 

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}

 

 

 

Amazonおすすめ

iPad 9世代 2021年最新作

iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には通常のiPadをおすすめします><

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)