ディレクトリのバックアップ

先月の終わり頃に、あるレンタルサーバの一部データ吹っ飛んでデータ消失してしまった事件がありましたね。多くのサイトでバックアップを取っていなかったため、復旧にかなりの時間を要したようです。

やはりバックアップは定期的にとっておかないと...ということで参照させていただいたサイトを元に指定したディレクトリを圧縮してバックアップディレクトリに置く仕組みを用意することができました。

シェルスクリプトとCronでデータベースを自動バックアップ&ローテーション

元サイトのエントリーが参照できなくなると困るので、ここにメモとして残しておこうと思います。

#!/bin/sh
# ---------- 設定 ----------
# バックアップ元のディレクトリ
src_dir=/var/www/html/website/
# バックアップ先のディレクトリ・ファイル
bk_dir=/home/website/backupfiles/
bk_file=web_backup_file
# 保存する日数
bk_days=3
# ---------- ファイル名を設定 ----------
# タイムスタンプを取得
ts_now=`date +%Y%m%d`
ts_old=`date "-d$bk_days days ago" +%Y%m%d`
# ファイル名を設定
file_backup=$bk_file.$ts_now.tar.gz
file_remove=$bk_file.$ts_old.tar.gz
# ---------- バックアップ処理 ----------
# バックアップ元のディレクトリに移動
cd $src_dir
if [ $? != 0 ]; then
echo "Source directory does not exist."
exit 1
fi
# アーカイブを作成
tar cfz $bk_dir$file_backup * .htaccess
if [ $? != 0 -o ! -e $bk_dir$file_backup ]; then
echo "Cannot archive file."
exit 1
fi
# バックアップ先のディレクトリに移動
cd $bk_dir
if [ $? != 0 ]; then
echo "Backup directory does not exist."
exit 1
fi
# ローテーション処理
if [ -e $file_remove ]; then
rm -f $file_remove
fi
exit 0

レンタルサーバ(XSERVER)でシェルスクリプトが動くのか?という懸念がありましたが、XSERVERの管理画面からスクリプトをCronに登録後、無事指定した時間にバックアップがとれていることを確認しました。

バックアップを取ったディレクトリはWordPressで運営しているブログサイトのものなので、mysqlのバックアップも取って、最終的にはバックアップデータから復元するところまで確認したいと思っています。

投稿日
カテゴリ