ディレクトリをバックアップする仕組みがうまく動いてくれたので、今度はMysqlのバックアップをテストしました。
上記エントリーを参照しつつ、ディレクトリバックアップのコードを流用して古いデータは削除するようにしました。
ということで以下備忘録、参照は自己責任でお願いします。
#!/bin/sh DBUSER=db_user_name # データベースのユーザ名を指定。 DBNAME=db_name # データベース名を指定。 DBPASS=db_password # データベースのパスワードを指定。 DBHOST=localhost # データベースのホスト名を指定。 MYSQLPATH=/usr/bin # mysqldumpがあるパスを指定。 #バックアップ先のディレクトリ bk_dir=/home/website/backupfiles/ #保存日数 bk_days=3 # ---------- ファイル名を設定 ---------- # タイムスタンプを取得 ts_now=`date +%Y%m%d` ts_old=`date "-d$bk_days days ago" +%Y%m%d` # ファイル名を設定 file_backup=$ts_now.sql.gz file_remove=$ts_old.sql.gz OUTPUTFILE=/home/website/backupfiles/`date +%Y%m%d`.sql # バックアップ実行 $MYSQLPATH/mysqldump --default-character-set=utf8 --host="$DBHOST" --user="$DBUSER" --password="$DBPASS" "$DBNAME" > "$OUTPUTFILE" # バックアップしたファイルをgzipで圧縮。 gzip "$OUTPUTFILE" # バックアップ先のディレクトリに移動 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
すべてのデータベースを対象にバックアップを実行する場合は --all-databasesオプションを使用するとよいみたいです。
# バックアップ実行 $MYSQLPATH/mysqldump --default-character-set=utf8 --host="$DBHOST" --user="$DBUSER" --password="$DBPASS" --all-databases > "$OUTPUTFILE"
XSERVERの管理画面からスクリプトをCronに登録後、無事指定した時間にバックアップがとれていることを確認しました。