Home » 開発者ブログ » VPSのCentOSでのWEBとMySQL PostgreSQLのフルバックアップ

VPSのCentOSでのWEBとMySQL PostgreSQLのフルバックアップ

VPSサーバなどをレンタルしていて少し困るのがコンテンツのバックアップ。
写真を削除やプログラムの修正ミスなど、緊急事態でフルバックアップが必要になる事も
たまにあるでしょう。

コンテンツのバックアップ

コンテンツは全部とっておきたいけど、容量が足りなくなるし、定期的に自力で消すのは忘れそう。
必要な分(例では15日分 period=15で設定)だけ残したアーカイブ化するスクリプトです。
指定日数を超えたファイルは削除されます。

/etc/cron.daily/backupcontents.sh
保存してください。パーミッションは700です。

#!/bin/sh

period=15
dirpath='/backup/contents'

filename=`date +%y%m%d`
cd /var/wwww
tar czf $dirpath/$filename.tar.gz 

chmod 700 $dirpath/$filename.tar.gz

oldfile=`date --date "$period days ago" +%y%m%d`
rm -f $dirpath/${oldfile}.tar.gz

MySQLのバックアップ

コンテンツと同じようにアーカイブしますが、異なるポイントはmysql_dumpを使って
ダンプファイルをアーカイブしています。

/etc/cron.daily/backupdatabases.sh
保存してください。パーミッションは700です。

#!/bin/sh

period=15
dirpath='/backup/databases'

filename=`date +%y%m%d`

# mysqldump
mysqldump --opt --password=YOURPASSWORD YOURDATABASENAME > $dirpath/$filename.sql
#pg_dump -h localhost -U YOURNAME YOURDATABASENAME -c > $dirpath/$filename.sql

chmod 700 $dirpath/$filename.sql

oldfile=`date --date "$period days ago" +%y%m%d`
rm -f $dirpath/$oldfile.sql

あとがき

単純な事ですが、バックアップスクリプトもいきなり書くと意外と思いつきません。
さきほどのshell scriptはサンプルですので、適宜改造・改善をしてご利用下さい。