#!/bin/bash
###=============================
###【作業メモ】
### スクリプトの作成場所:/usr/local/bin/
### 実行コマンド:/usr/local/bin/SCRIPT_cron_backup.sh
### 対象ファイルのバックアップ
### 保存世代数は7個/保存対象外の世代は削除
### 毎日0時0分に実行
### crontab -e
### 0 0 * * * /usr/local/bin/SCRIPT_cron_backup.sh 2>&1 >/dev/null
###=============================
#-----------------------------
# 環境変数の設定
PATH=/usr/local/sbin:/usr/bin:/bin
#-----------------------------
#-----------------------------
# 日付取得
#-----------------------------
DATE_YYYYMMDD=`/bin/date --date '1 day ago' "+%Y%m%d"`
#-----------------------------
# バックアップ名
#-----------------------------
FILE_Name=BACKUP
#-----------------------------
# バックアップ名+日付
#-----------------------------
BACKUP_FILE_NAME=${FILE_Name}-${DATE_YYYYMMDD}
#-----------------------------
# ログファイルの場所
#-----------------------------
FILE_log=/usr/local/bin/script.log
#-----------------------------
# 対象ディレクトリ名
#-----------------------------
DIR_Target=/work/
#-----------------------------
# 保存場所のディレクトリ名
#-----------------------------
DIR_Output0=/backup/
DIR_Output1=/backup/${FILE_Name}
DIR_Output2=/backup/${BACKUP_FILE_NAME}
#-----------------------------
echo "=== バックアップ === 開始 ===" > $FILE_log 2>&1
#-----------------------------
#-----------------------------
# 毎日作成ディレクトリ(既に存在する場合はスキップ)
#-----------------------------
mkdir -p -m 777 ${DIR_Output1} >> ${FILE_log} 2>&1
mkdir -p -m 777 ${DIR_Output2} >> ${FILE_log} 2>&1
#-----------------------------
# 正規表現のパターンに該当するファイルだけをコピーする
#-----------------------------
\find ${DIR_Targe -name} "*_data*" | xargs -i cp -fp {} ${DIR_Output1} >> ${FILE_log} 2>&1
\find ${DIR_Targe -name} "*_data*" | xargs -i cp -fp {} ${DIR_Output2} >> ${FILE_log} 2>&1
#-----------------------------
# 古いバックアップを削除
#-----------------------------
cd ${DIR_Output0}
rm -fr `ls -t | grep "特定文字列1" | tail -n+8` >> ${FILE_log} 2>&1
rm -fr `ls -t | grep "特定文字列2" | tail -n+8` >> ${FILE_log} 2>&1
rm -fr `ls -t | grep "特定文字列3" | tail -n+8` >> ${FILE_log} 2>&1
#-----------------------------
echo "=== バックアップ === 終了 ===" >> ${FILE_log} 2>&1
#-----------------------------
PR