概要
バックアップデータを世代管理するスクリプトです。
サーバの引っ越しとかでよく無くなるので、メモがわりに投稿。
使い方
下記のシェルスクリプトをcronで朝4時とかにセットする想定。
(もし流用するのであれば勿論少し設定が必要です)
#!/bin/bash
PATH=/usr/local/sbin:/usr/bin:/bin
# バックアップ先
BACKUP_DIR=/path/to/backup/dir/
# バックアップ対象
TARGET_DIR=/path/to/dir/
TARGET_FILES=(file1 file2 file3)
# 今日の日付を取得する
DATE=`/bin/date '+%Y%m%d'`
# 削除する日付を取得する(この場合は10日前)
DELETE_DATE=`/bin/date -d '10 day ago' +%Y%m%d`
# バックアップ対象のディレクトリへ移動
cd ${TARGET_DIR}
# バックアップ
for TARGET_FILE in ${TARGET_FILES[@]}; do
# バックアップ対象ファイルを圧縮して保存
tar zcf "${BACKUP_DIR}${TARGET_FILE}_${DATE}.tar.gz" ${TARGET_FILE}
# 過去のバックアップを削除
if [ -f "${BACKUP_DIR}${TARGET_FILE}_${DELETE_DATE}.tar.gz" ]; then
rm -rf ${BACKUP_DIR}${TARGET_FILE}_${DELETE_DATE}.tar.gz
fi
done
定期的にバックアップ
深夜4時とかにcronをしかけておきます。
0 4 * * * sh /path/to/backup/dir/backup.sh > /dev/null 2>&1