FreeBSD 6.0でつくる、バックアップ用ファイルサーバ
2006/01/07 13:01
ルータのDHCPが不調になったり、WebサーバのHDDがお亡くなりになったり、昨年秋からちっとも安定しない、我が事務所のネットワーク環境。
ルータの不調は、年末にAppleStoreで買った「AirMac Extreme」で解決。Extremeは無線アクセスポイントをベースとして、ブロードバンドルータやUSBプリントサーバ等の機能も兼ね備えた製品で、Macメインのオフィスには大変よくなじむ。
Extremeの弟分であるExpressという製品もある。小さくて扱いやすいこともあり、大抵の用途にはこちらのほうが適しているのだが、EthernetポートがWAN向けにひとつあるだけで、ウチの事務所で使うには少々具合が悪い。今回は見送った。
Bonjour for Windows
※ プリンタ共有のお供に、是非。
一方のHDDクラッシュはどうかといえば、これも昨日の作業で復活。
以前、このWebサーバで動かしていたアプリが諸般の事情で不要となった為、代わりにバックアップ用のファイルサーバをFreeBSD 6.0で構築しました...というのが、今日のお題。
このアイデアは、.MacのiSyncサービスからヒントを得ている。
.Macのユーザーなんてあんまりいないだろうし、ぼくも酔狂で入会しただけなんだけど、OSの各種設定(キーチェーンとかMailのアカウント情報とか)をiDiskにバックアップする機能はなかなか便利。設定次第で、複数のMacで同期したりすることも可能。これと似たようなイメージで、自宅サーバ等のバックアップをrsyncで簡単に実現出来ないだろうか?という発想。
iDiskの実装はWebDAVだけど、バックアップ用途ならばrsyncのほうが性能を出せる。WebDAVにはhttp(80/tcp)を開けるだけという手軽さがあるけど、rsyncもssh(22/tcp)を開けるだけで、手軽さという意味では変わらない。早速、LAN側に設置されたFreeBSD機のsshポートを、WAN側にポートフォワードする様、AirMac Extreme上で設定する。
FreeBSD側の設定は、実はあまりない。
FreeBSDは5.xの頃から、デフォルトではsshdすら起動しない設定だが、これを修正する。 /etc/rc.conf に
sshd_enable="YES"
とだけ書いておけばいい。デフォルトではパスワード認証を許可しない(公開鍵認証のみ)という、少し厳しめの設定がされていて、通常運用では修正が必要だが、今回はそのままでいい。
唯一、portsからrsyncをインストールする必要があるので、
> cd /usr/ports/net/rsync
> su
# make install clean
としておく。rsyncdを起動する必要もないので、インストール後の設定も不要。至ってシンプルだ。
リモートのファイル転送では、プッシュ(被バックアップ側が処理を実行)かプル(バックアップサーバ側が処理を実行)かという実装の選択肢があるが、今回はプッシュで行くことにする。
公開鍵の登録、バックアップ先ディレクトリの設定等を行い、被バックアップ側の各ホストに、バックアップの実行ユーザー(例えば 'backupman')を作成しておく。
そして、その実行ユーザーのホームディレクトリに、シンボリックリンクを集めたディレクトリを作る。
> mkdir ~/backup
> cd ~/backup
> ln -s /etc etc
> ln -s /usr/local/etc local.etc
> ln -s /usr/local/svn svn
> ln -s /usr/local/www/data htdocs
といった具合に。
ご察しの通り、これらはバックアップ対象ディレクトリへのシンボリックリンク。お好みに合わせて、好きなだけリンクを作るといい。
以上の準備が終われば、あとは以下のコマンドをcrontabに書き込むだけだ。(backup.example.comはFreeBSD機のホスト名、hostnameは被バックアップホストのホスト名に読み替えて欲しい)
/usr/local/bin/rsync -vzrL --delete ~/backup/ backup.example.com:/usr/local/backup/hostname/
だいぶ説明をはしょっているので、もし実際に構築したい人がいたら、質問等ご遠慮なく。(いないとは思うけど)
世代バックアップへの対応、ウィルスチェック等が今後の課題か。
あれ。ほんとはFreeBSD 6.0のレビューをする為にインストールを始めたのだけど、趣旨が変わってしまった。
まぁ、いつものことか。
