先月の終わり頃に、あるレンタルサーバの一部データ吹っ飛んでデータ消失してしまった事件がありましたね。多くのサイトでバックアップを取っていなかったため、復旧にかなりの時間を要したようです。
やはりバックアップは定期的にとっておかないと...ということで参照させていただいたサイトを元に指定したディレクトリを圧縮してバックアップディレクトリに置く仕組みを用意することができました。
元サイトのエントリーが参照できなくなると困るので、ここにメモとして残しておこうと思います。
#!/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のバックアップも取って、最終的にはバックアップデータから復元するところまで確認したいと思っています。