ファイルの自動バックアップ
サーバ機内の必要なファイルを自動的、かつ定期的にバックアップを取る為の設定を紹介します。
具体的には、シェルスクリプトでバックアップする為のスクリプトを記述し、 cron で定期的にバックアップのスクリプトを実行させる様にします。
ページ内コンテンツ一覧
バックアップといっても、何をどうバックアップするのかを明確にする必要があります。
サーバ機のシステムファイルなのか、Apacheのログファイルなのか、HTML ファイルなのか、、、
バックアップすべき(しておいた方が良い)ファイルは沢山あります。
ここでは、CGI を使った動的コンテンツのログファイル(掲示板のログファイルなど)のバックアップを定期的に取る様にします。
HDD のクラッシュに備えた本格的なバックアップを取りたいという方は、物理的に別の HDD にバックアップを取る、別のホストにバックアップを取る、などメインの HDD からは隔離した記憶装置が必須です。
では、いよいよ本格的に設定に入って行く前に、
ここでバックアップを取るファイル名とそのパス、バックアップ後のファイル名とその保存先のパスを提示しておきます。
バックアップ先のファイルは圧縮し、バックアップを取った日付をファイル名に付けます。
スクリプトを書く前に、バックアップ先のディレクトリを作成します。
対象のディレクトリまで移動します。
# cd /dev/hdb
backup ディレクトリを作成します。
# mkdir backup
では、シェルファイルを作成します。
テキストエディタで以下のスクリプトを作成します。
保存先とファイル名は、/usr/local/ ディレクトリ内の mybackup.sh とします。
#!/bin/sh
# バックアップを取るファイルがあるディレクトリまで移動します。
cd /home/httpd/cgi-bin/
# 必要なファイルのバックアップを取ります。
tar cvf /dev/hdb/backup/backup-`date +%Y%m%d`.tar ./bbs/bbslog.log ./count/countlog.log
# バックアップしたファイルを圧縮します。
gzip /dev/hdb/backup/backup-`date +%Y%m%d`.tar
mybackup.sh を作成したら、以下のコマンドを実行してみます。
# /usr/local/mybackup.sh
コマンド実行後、/dev/hdb/backup/ ディレクトリ内に、「 backup-YYYYMMDD.tar.gz 」ファイルが作成されているでしょうか?
作成されるファイルは圧縮されていますので、以下のコマンドで展開し、中身を確認します。
# tar zxvf backup-YYYYMMDD.tar.gz
当然ですが、展開されたファイルの中身が自分の意図しているものであれば、バックアップ自体は正常に行われています。
次に、このバックアップを定期的に行う様に、 Webmin を使用し、 cron に登録します。
当サイトの例として、毎日午前4時に実行する様にします。
Webmin にログイン後、上部メニュー群より「システム」をクリックし、「予約済み Cron 作業」をクリックします。
図W-008 Webmin にログイン後「システム」>「予定済み Cron 作業」をクリック
「 cron ジョブのスケジュール 」画面が表示されますので、「 新しいスケジュールのcronジョブを作成 」のリンクをクリックします。
「 cron ジョブの作成 」画面が表示されますので、「 ジョブの詳細 」表組内に以下の様に記入します。
続いて、「 実行する時間 」表組内に以下の様に記入します。
適宜入力、選択が終了後、最下部の「作成」ボタンをクリックし、Cron に登録します。
「作成」ボタンをクリックすると先ほどの「 cron ジョブのスケジュール 」画面に戻るので、追加した cron ジョブが追加されている事を確認します。
図W-009 「 cron ジョブの作成 」メニュー記入例
これで、毎日午前4時にバックアップが実施されます。
注 意
Windows 機で mybackup.sh を作成し、FTP クライアントソフトなどを使用してサーバ機に転送する場合、
文字コードを必ず「 EUC 」で作成・転送して下さい。Shift-JIS だと正常に動作しません。