cron さくらインターネット

さくらインターネット環境でDBデータをcronで自動バックアップする

2016/12/13

さくらインターネット環境でcronを使い、データベースのデータを自動バックアップする方法を忘備録としてポストしておきます。
行いたいことは、早朝5時にDBの全データをバックアップし「バックアップ日.tar.gz 形式」で保存するってことです。

こちらで素晴らしいスクリプトが公開されていますので、それを利用させて頂きます。

シェルスクリプトとCronでデータベースを自動バックアップ&ローテーション - (DxD)∞
http://dxd8.com/archives/168/

(DxD)∞さま、ありがとうございます。

cronでバックアップする方法

shellファイル作成

ということで、さくらインターネットでも動くシェル(sh)は以下となります。
ファイル名は db_dump.sh として保存します。

(2013.11.06 編集)
1年以上前の記事ですが、修正です。
ローテーションでファイルが消えないとの指摘を受けたので調べたところ、記述したコードが間違っておりました。

上記コードは、サーバの OS がLinux系の場合となります。
さくらインターネットの OS はFreeBSD ということで、 dateコマンド の使い方が違います。

FreeBSDの場合の書き方は以下となります。

(2013.11.06 編集ここまで)

オリジナルと変更しているのは、DBの設定部分と、ダンプしている部分です。
保存日数とバックアップ先のディレクトリ、ファイル名は任意に設定してください。
shファイルは文字コードEUC、改行コードをLFで保存し、アップロード後、パーミッションを 755 とします。

バックアップデータの保存場所についてですが(バックアップファイルへ)ブラウザからアクセス可能な階層に置きたくなかったので、ドキュメントルート「www」と同じ階層に「db_backup」ディレクトリを作成し、そちらに保存されるようにしています。
パーミッションは 777 とします。
同じ理由で、DBのパスワードなどが書かれているshファイル自体も「scripts」ディレクトリを作成して設置しました。

簡単に図にするとこんな感じ。

cron設定

さくらのコントロールパネル左メニューの「CRONの設定」をクリック。
実行コマンド欄に以下を記述

以前ポストした「さくらインターネット環境のCakePHPでcronを使ってみる」とは違い、単に実行ファイルを指定するだけでOKです。

実行日時を設定します。
説明書きにあるとおり、毎時設定の場合は「*」を指定します。
例えば、毎時15分にcronを起動させたい場合は、
月:「*」、日:「*」、時:「*」、分:「15」とします。

1日一回、昼12時に起動させたい場合は、
月:「*」、日:「*」、時:「12」、分:「0」とします。

以上で設定は完了です。
テストする場合は、「分」を調整して、実際にcronとして起動するか確認しながら行なってみてください。

cronの設定の方法は手前味噌ですが、こちらを参照してください。

-cron, さくらインターネット
-, , , ,