Help us understand the problem. What is going on with this article?

バックアップを世代管理

More than 1 year has passed since last update.

概要

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

使い方

下記のシェルスクリプトを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
KensukeSakakibara
ずっとお絵描きをして生きてきましたが、趣味だったプログラミングがいつのまにか本職になっていたWEBプログラマです。 高負荷環境でのLAMPが得意でソシャゲとか作ってました。 PerlからのJavaからのPHPerで、次はGoがやりたいと思ってますが現在はUnityでC#が多いです。 あと電子工作とかも割と好きでAVR派です。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away