LoginSignup
3
7

More than 5 years have passed since last update.

バックアップを世代管理

Last updated at Posted at 2018-03-26

概要

バックアップデータを世代管理するスクリプトです。
サーバの引っ越しとかでよく無くなるので、メモがわりに投稿。

使い方

下記のシェルスクリプトを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
3
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
7