xserverでのcronを使ったバックアップ
弊社では、ホームページのコンテンツと、データベースをバックアップするプログラムを作成して、作業効率化を図っています。
データベースは、ホームページ作成ソフト(CMS)を使う場合は必須のことがあります。concrete5 や WordPressではデータベース必須ですので、データベースの内容もバックアップします。
今回はエックスサーバー を例にとりあげます。
作業ミス・漏れを減らす
バックアップ作業自体は、それほど難しいものではありません。しかしながら、手作業で行う場合は、バックアップするディレクトリ・ファイルを間違える可能性もあります。また他の仕事が忙しくてバックアップ作業ができないケースや、作業自体を忘れてしまうケースも生じるかもしれません。
そういった間違いが生じないように、バックアッププログラムを作成して、作業を自動化しておくことは大事だと思われます。
ディレクトリをバックアップするスクリプト
ディレクトリをバックアップスクリプトは下記のようになります。
#!/bin/bash day=`date '+%Y-%m-%d'` tar -zcf /home/my-mitsu/example.com/backup/$day.tar.gz -C / home/my-mitsu/example.com/public_html
太字になっているmy-mitsu, example.com は、ご自身の環境に合わせて変更をお願いします。
my-mitsu -- xserver のアカウント名
example.com -- ウェブサイトのドメイン名
となります。またサーバーによっては、1行目
#!/bin/bash
を変更する必要がありますので、サーバー会社のマニュアルやFAQでご確認ください。
バックアップファイルは、2018-01-31.tar.gzのようなファイル名になります。(1日に複数回バックアップする場合は上書きされます。必要なら2行目を書きかえてください。)
バックアップファイルの置き場所は、/home/my-mitsu/example.com/backup になります。backupというディレクトリはあらかじめ作成しておくようにお願いします。置き場所を変更したい場合は、適宜書き換えてください。
データベースをバックアップするスクリプト
こちらは少し複雑なスクリプトになります。
#!/bin/bash day=`date '+%Y-%m-%d'` /usr/bin/mysqldump --add-drop-table --host=1HOST.xserver.jp --user=2USER --password=3PASS 4DB > /home/my-mitsu/example.com/backup/$day.sql
プログラム内にデータベースのアクセス情報を記入します。このファイルは必ず非公開領域に置いてください。
1HOST -- ホスト名
2USER -- データベースのユーザー名
3PASS -- 接続パスワード
4DB -- データベース名
これらは実際の値に書き換えます。CMS導入している場合は、CMSの設定ファイルを確認すると、これらの情報が書いてあります。
WordPressの場合 -- ルートディレクトリのwp-config.php
concrete5の場合 -- application/config/database.php
を見ると、情報が確認できます。
自動実行 - cronを使う
上述のプログラムは、サーバーにログインして、自分で実行することもできますが、自動化しておくとミスを減らせます。このときに使うのがcronです。xserverでは管理画面からcron登録できます。
cronの設定画面です。
分、時間、日、月、曜日が指定できます。曜日は0が日曜、1が月曜...6が土曜です。*を指定すると、指定無しになります。
画像の例では、月0、時間3、日*、月*、曜日0となっています。日曜日の3時0分に実行する、という意味になります。
毎月一回実行したい場合は、月10、時間7、日1、月*、曜日*のようにすれば、毎月1日7時10分に実行します。
毎日一回実行したい場合は、月30、時間20、日*、月*、曜日*のようにすれば、毎日20時30分に実行します。
コマンドの欄は、実行したいファイルを指定します。画像の例では、/home/my-mitsu/example.com/にある、mysqlbackup.shファイルを実行します。実行するファイルには実行権限(+x)を付けておいてください。
こうすることで、バックアップ作業を自動化できました。