Daily Archives: 03/06/2012

FreeBSDにMacのファイル共有プロトコルAFPを喋らす。(追記あり)

Pocket

AFP(Apple Filing Protocol)。

Macのファイル共有はOSXからSMB/CIFSになったと勝手に思いこんでたから驚いた。AppleTalkが今に生きてるとは。

ただ、AFPは下位レイヤにAppletalkじゃなくTCPを使うことができるそうなので納得。

追記:コメントで教えていただきましたが、さいきんAppletalkは死んでしもうたそうです。R.I.P.

UNIX系でAppleTalk互換ソフトウェアといえばNetatalk。

Macでファイル共有するなら正直SMB/CIFSでいいかなとも思ったが、どうもNetatalkの方が軽いと聞いたので、試しに使ってみる。

iTunesのライブラリも置いてみたいのだ。

netatalkには、AFPデーモンのafpd、CNID管理のcnid_metad、appletalkを動かすatalkd、リモートプリントサービスのpapd、Mac向けタイムサーバのtimelordが含まれる。

AFP over TCPで要るのは、afpd, cnid_metadと理解した。

Macのファイル共有で面白いのは各ファイル、フォルダに固有のIDを付けて管理するという点。パスを使わないのだ。これは大昔からaliasという考え方があったせいか。

そして、ホストのファイル、ディレクトリとID(CNID, Catalog Node ID)のくくりつけを管理するのがcnd_metadということらしい。(metaという名前だけに、DBは別にあるのだが)

net/netatalkからインストール

苦難の設定

すごく大変だった。

なんかマニュアルがすごく分かりにくく感じる。

共有フォルダ設定はAppleVolumes.defaultを使い、それ以外はnetatalk.conf, afpd.confを使うようだ。

以下を見ながら試行錯誤。

http://netatalk.sourceforge.net/2.2/htmldocs/configuration.html#id1590298

/usr/local/etc/netatalk.confで全般の設定。

変えたのは以下の二点。

/usr/local/etc/afpd.conf

変更なし。

/usr/local/etc/AppleVolumes.default

ここで共有フォルダの設定。下記において最初の二行はデフォルト。

最後の一行のみ追加した。

~はホームディレクトリだな。

なお、以下にオプションが山ほど。

http://netatalk.sourceforge.net/2.2/htmldocs/AppleVolumes.default.5.html

書式は以下の通り。

<共有フォルダ実パス> <外部への共有フォルダ名> [<オプション>]

オプションでめぼしいものは以下の二つくらいかな。

複数指定する場合にはたとえば(実際にはtmとroを一緒に使うことはないが)以下のようにカンマ(,)でつなぐ。

そうしたら、/etc/rc.confに以下を追加する。

netatalkを動かすにはavahi_daemonが必要で、avahiを動かすにはdbusが必要だからこんな感じ。

なお運用中に設定を変更した場合にはこれらサービスをすべて再起動したほうがいいようだ。

で、再起動するか、/usr/local/etc/rc.dで上から順番に起動させればOK。

FreeBSDのnetatalk関連の起動スクリプトは、startさせても何のメッセージも出ないのが不親切だと思う。

macからはafp://<ホスト>の書式でアクセスできる。

運用。安定していないのか?

320GBほどのデータをAFP経由でコピーしたのだが、以下のメッセージが表示されてなかなか終わらない。

何が悪いのだろう?

No tags for this post.