NetatalkとAvahiを使ってFreeBSDマシンをTime Capsuleとして使う
Mac OS XにはTime Machineというバックアップ機能があって、ローカル接続したHDDかネットワーク接続したファイルサーバに自動的にバックアップを作成してくれる。デスクトップ型ならローカル接続したHDDを使うのが、高速かつ確実だけど、ノート型の場合はいちいちHDDを接続するのが面倒で、そのうちバックアップを取らなくなる恐れがある。
Time Machineに使えるネットワーク接続したファイルサーバは、Apple純正のTime Capsuleがあるけど、内蔵のHDDが故障したらせっかく取得したバックアップがパーになるから、冗長化されたHDDを使いたい。
そこで、手元のFreeBSDマシンをTime Capsuleっぽく仕立てることにした。
Time Capsuleは、ディスク共有をAFP over TCP、サービス広告をBonjourで実現してるので、それらを適切に設定すればTime Capsuleっぽく動作させることができる。
インストール
portsから、net/netatalkとnet/avahiをインストールする。それぞれがAFP over TCPとBonjourを担当する。NetatalkでTime Machine対応を簡単に実現するには、Netatalk 2.0.5以上が必要である。net/netatalkは現在2.1.5だから問題なし。
Netatalkの設定
ユーザのホームディレクトリは共有せず、Time Machine用ボリュームの共有のみを行う設定とする。
まずはAFP over TCPを担当するafpdの設定を、/usr/local/etc/afpd.confに記述する。デフォルトではユーザごとのホームディレクトリを共有する設定になっているので、-nouservolを追加して共有しない設定にする。認証は、OSのローカルユーザアカウントを使うことにしてる。
(追記)ホームディレクトリの共有は、/usr/local/etc/AppleVolumes.defaultで指定されてるから、該当箇所をコメントアウトすればOK。afpd.confの編集は不要。id:K-HATさん、ご指摘ありがとうございました。
# The "~" below indicates that Home directories are visible by default. # If you do not wish to have people accessing their Home directories, # please put a pound sign in front of the tilde or delete it. # ~ ↑これをコメントアウトする
次はafpdで共有するボリュームの設定を、/usr/local/etc/AppleVolumes.defaultに記述する。
/path/to/backup "Time Machine" options:tm
options:tmがTime Machine対応のための設定である。Time Machineは、ディスク容量があればあるだけバックアップを作成するので、共用のボリュームの場合はlimitsizeも指定してTime Machineに使用するディスク容量を制限するとよい。今回はZFSのquotaを使ってディスク容量を制限するため、limitsizeの指定はしなかった。/path/to/backupは、接続の際使用するユーザで書き込み可能としておくこと。
Avahiの設定
/usr/local/etc/avahi/services以下に、広告するサービスの設定ファイルを設置する。以下はAFP over TCPの設定ファイルadisk.serviceである。
<?xml version="1.0" standalone='no'?> <!DOCTYPE service-group SYSTEM "avahi-service.dtd"> <service-group> <name replace-wildcards="yes">%h</name> <service> <type>_adisk._tcp</type> <port>9</port> <txt-record>sys=adVF=0x100</txt-record> <txt-record>dk0=adVN=Time Machine,adVF=0x81</txt-record> </service> </service-group>
adVF=0x81がTime Machine対応ボリュームの証。これでTime Capsuleディスクを探すときに、一覧に登場するようになる。
/etc/rc.confの設定
NetatalkとAvahiが起動時に起動するよう、/etc/rc.confに設定を追加する。
avahi_daemon_enable="YES" avahi_dnsconfd_enable="YES" netatalk_enable="YES" cnid_metad_enable="YES" afpd_enable="YES"
最後に手動でサービスを起動するか、サーバごと再起動するかする。その後、afpd、cnid_metad、avahi-daemonが起動しているかどうか確認する。
Time Machine環境設定から「ディスクを選択」を実行すると、設定した共有ボリュームが表示される。Time Machineボリュームを選択すれば、ネットワーク経由でTime Machineが実行可能。すばらしい。
参考
売り上げランキング: 25363