|
FileMaker Serverバックアップスクリプト公開
—あまり親切ではない解説
) | 竹内 康二
text by Koji Takeuchi |
| |
注意 以下に簡単な解説を書きましたが、本来このような解説が必要な方向けではありません。あくまでもヒントとしてごらんください。 また、ノーサポートとして公開していますので、問い合わせをいただいてもお答えできません。というよりも、この解説を読んで、解説が足りないと思われる方は、このスクリプトを使用するべきではありません。ご承知おきのほどを...。
■このスクリプトの使い方 0. 拡張子の「.txt」を削除して、fmsadminグループに実行権限を与えます。 例:$ chgrp fmsadmin fmsbackup.sh $ chmod 750 fmsbackup.sh
1. 「set variables」セクションを直接編集し、スクリプトを実行します。 2. または、「set variables」セクションのみをコピペして、設定部分のみを保持する別ファイルを作ります。実行時にはこのファイルを引数に指定することで、同じスクリプトで異なる設定を実行し分けることができます。 例:$ ./fmsbackup.sh hourly.conf $ /usr/local/bin/fmsbackup.sh ~/Documents/daily.conf 設定ファイルを引数に指定して実行した場合、本体のファイル(fmsbackup.sh)の「set variables」セクションに設定ファイルの内容と異なる設定があったとしても、引数に指定された設定ファイル内の設定内容で上書きされます。
■このスクリプトを定期的に実行するには 1. FileMaker Serverのスケジュール機能を使う このスクリプトを「/Library/FileMaker Server/Data/Scripts」に置き、「System-Levelスクリプト」スケジュールをFileMaker Server Admin Consoleにて作成します。 引数つきで実行したい場合は、以下のような1行スクリプトを別途用意し、そちらをスケジュールで呼ぶようにすればよいでしょう。(この場合は、本体のスクリプトは「/usr/local/bin」に置き、設定ファイルは「/Users/Shared」に置いていますが、いずれのファイルもfmserverユーザあるいはfmsadminグループから読み取り可能な場所に置く必要があります。) 例: #!/bin/sh /usr/local/bin/fmsbackup.sh /Users/Shared/daily.conf exit 0
2. crontabにて定時実行の設定を行う 例: $ crontab -e 03 * * * * /usr/local/bin/fmsbackup.sh ~/Documents/hourly.conf 30 04 * * * /usr/local/bin/fmsbackup.sh ~/Documents/daily.conf
この例では、毎時03分に「hourly.conf」設定ファイルの内容に従ってスクリプトが実行され、毎日4:30に「daily.conf」設定ファイルの内容に従ってスクリプトが実行されます。 「crontab -e」を実行した瞬間にTerminalのウィンドウを上にスクロールしてしまった人は、別のTerminalウィンドウで「man vi」を実行してみてください。あるいは、単に「:q!」とタイプして、crontabの事は忘れてください。
3. launchdにて定時実行の設定を行う もしあなたがApple Certified System Administratorなら、launchdを使いましょう。.plistファイルを設定して、「/Library/LaunchDaemons/」以下に「com.example.hourlybackup.plist」のようなファイル名で保存します。そして、このファイルの内容をOSにロードさせます。 例: $ sudo launchctl -w load /Library/LaunchDaemons/com.example.hourlybackup.plist
ファイルの内容は以下のようなものにする必要があります。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.example.hourlybackup</string> <key>Disabled</key> <false/> <key>ProgramArguments</key> <array> <string>/usr/local/bin/fmsbackup.sh</string> <string>/Users/YOURNAME/Documents/hourly.conf</string> </array> <key>StartCalendarInterval</key> <dict> <key>Minute</key> <integer>03</integer> </dict> <key>RunAtLoad</key> <true/> </dict> </plist>
■スクリプトの実行結果レポートを受け取るには スクリプトの実行時に、mailコマンドにリダイレクトします。以下のようにすると、実行結果のレポートが(たぶんうるさいぐらい)メールにて送られてきます。 例: /usr/local/bin/fmsbackup.sh ~/Documents/daily.conf | mail -s "fms backup report" yourname@example.com
■環境設定 「set variables」セクションの変数に適切な値を指定します。以下、指定できる変数を簡単に解説します。
・必須 FileMaker Server Admin Consoleで使われるユーザ名を指定します user=USERNAME
FileMaker Server Admin Consoleで使われるパスワードを指定します pass=PASSWORD
公開されているデータベースフォルダの親ディレクトリを指定します data=/Library/'FileMaker Server'/Data
公開されているデータベースフォルダを指定します databases="$data"/Databases
バックアップ先のフォルダ名を指定します backupdir=Databases
バックアップ先フォルダの親ディレクトリを指定します backups=/Library/'FileMaker Server'/Data/Backups
バックアップ先フォルダのフルパスを指定します(通常は以下の変数指定でいいはず) backupdatabases="$backups"/"$backupdir"
「fmsadmin backup」コマンドで指定するための、「filemac:」形式のパスを指定します(通常は以下の変数指定でいいはず。HDD名を変更するぐらい?) backupspath="filemac:/'Macintosh HD'$backupdatabases/"
サブディレクトリもバックアップするかどうか ( y = 1, n = 0 ) subdirectory=1
圧縮ファイルにつける名前を指定します prefix=servername_fms9
圧縮形式を指定します ( zip/tar.gz ) 圧縮や世代管理が不要なら、空欄にしておきます archive=tar.gz
・圧縮および世代管理関連の設定(オプション) バックアップしたDBを「直近xx時間」「直近xx日」「直近xxヶ月」単位で保持し、それ以前のものは自動的に消去します。それぞれ、1時間に1セット、1日1セット、1月1セットが保持されます。「hour」あるいは「day」「month」に保持したい時間数(あるいは日数、月数)を指定し、それぞれについて設定を行います。
保持したい時間数 ( y = n, n = 0 ) hour=72
※「hour」に1以上の値を設定した場合、以下もあわせて設定します
「直近xx時間」を保持するフォルダ名(この例では、「recent_72_hours」という名前です) hourlydirectory=recent_"$hour"_hours
「直近xx時間」を保持するフォルダのフルパス(通常は以下の変数指定でいいはず) hourlypath="$backups"/"$hourlydirectory"
保持したい日数 ( y = n, n = 0 ) day=30
※「day」に1以上の値を設定した場合、以下もあわせて設定します
「直近xx日」を保持するフォルダ名(この例では、「recent_30_days」という名前です) dailydirectory=recent_"$day"_days
「直近xx日」を保持するフォルダのフルパス(通常は以下の変数指定でいいはず) dailypath="$backups"/"$dailydirectory"
保持したい月数 ( y = n, n = 0 ) month=120
※「month」に1以上の値を設定した場合、以下もあわせて設定します
「直近xxヶ月」を保持するフォルダ名(この例では、「recent_120_months」という名前です) monthlydirectory=recent_"$month"_months
「直近xxヶ月」を保持するフォルダのフルパス(通常は以下の変数指定でいいはず) monthlypath="$backups"/"$monthlydirectory"
・別のフォルダへミラーするための設定(オプション) 冗長化のためのオプションです。外付HDDなどにコピーすることを想定しています。
「直近xx時間」フォルダをミラーするか? ( y = 1, n = 0 ) ext_hourly=0
「直近xx日」フォルダをミラーするか? ( y = 1, n = 0 ) ext_daily=0
「直近xxヶ月」フォルダをミラーするか? ( y = 1, n = 0 ) ext_monthly=0
上記「ext_*」のどれかを1にした場合、以下もあわせて設定します
ミラー先フォルダのフルパス external=/Volumes/backup_external/fms/
・別のホストへミラーするための設定(オプション) 冗長化のためのオプションです。ファイルサーバなどにコピーすることを想定しています。 このオプションを使う場合、転送はSSHで行われますので、転送先のサーバにFileMaker ServerのホストのRSA keyが必要です。
「直近xx時間」フォルダをミラーするか? ( y = 1, n = 0 ) alt_hourly=0
「直近xx日」フォルダをミラーするか? ( y = 1, n = 0 ) alt_daily=1
「直近xxヶ月」フォルダをミラーするか? ( y = 1, n = 0 ) alt_monthly=1
上記「alt_*」のどれかを1にした場合、以下もあわせて設定します
ミラー先ホストのユーザ名 hostuser=root
ミラー先ホストのホスト名 or IPアドレス host=host.example.com
ミラー先フォルダのフルパス hostpath=/Volumes/backup_external/foo/fms
|