メモメモ…。
当サイト、あんどろいどのこと、みんな。は最初の頃一度データベースがおかしくなってしまったことがありました。
バックアップをとっていなかったため簡単には復旧できず、記事が二つほどしか無かったので作り直しましたが、
数十個と記事を書いているとおかしくなるたび作り直し、では大変です。
そこで、シェルスクリプトとCRONジョブを使いMySQLデータとサイト全体のバックアップをする方法を紹介します。
(もっといい方法があると思いますがとりあえず…。)
まず、MySQLデータベースのバックアップです。
Numb.さんの方法でバックアップし、自動でメールに添付して送信します。
※念のためスクリプトをミラーしておきます。
スクリプトを書き換え、public_htmlと同じ階層にアップロードし、パーミッションを700にして実行できるようにします。
ファイルの保存用ディレクトリ「backup-mysql」を同じくpublic_htmlと同じ階層に作ってください。
次に、サイト全体のバックアップです。
public_htmlと同じ階層に「backup」フォルダを作ってください。
次に、下記のスクリプトをbak.shなどとして保存し、public_htmlと同じ階層にアップロードし、パーミッションを700にしてください。
1 2 3 4 |
#!/bin/sh find ./backup/ -name "`date +%Y`*" -ctime +2 | xargs rm -f tar cvfz ./bak/`date +%Y%m%d`.tar.gz -X ex.lst ./public_html |
find~で三日以前に作られたバックアップを削除(容量節約のため)し、tar~でpublic_html以下のファイルを年月日.tar.gzに圧縮します。
-X ex.lstはファイルやフォルダのリストを書いてバックアップから除外するようにするためのものです。
巨大なファイルやログなどバックアップすると問題が起きたり必要の無いフォルダをスキップして高速かつ容量をとらないバックアップができます。
1 2 3 4 5 |
*/public_html/uploda/upd2/updown/* *tmp* *.wrk* *cache* *log* |
というように書いてpublic_htmlと同じ階層にアップロードしてください。
こちらはサイズが大きくなるためメールでは送信しません。
上記二つのスクリプトを自動で実行するため管理画面でCRONジョブを開き、
/virtual/ユーザーID/の横のテキストボックスに
sqlbackup.sh 1>/dev/null
というようにスクリプトのファイル名に「 1>/dev/null」をつけて入力します。(エラー時のみメール送信)
3~7日おきに実行するよう設定するといいと思います。
忘れず「保存」ボタンをクリックすると完了です。