rpc.ypxfrd
ユーティリティは NIS マスタサーバから NIS スレーブサーバへの巨大な NIS
マップの配布を高速化するためのに使われます。通常、マップの転送はいくつ
かの手順を経ます:
- マスタサーバが
yppush(8)
を呼び出し、スレーブサーバが転送を開始するよう指示します。
- スレーブサーバは、
ypxfr(8)
を起動します。
ypxfr(8)
は、マスタサーバから yp_all() を使ってマップの内容をすべて読みます。
- 次に
ypxfr(8)
は、
db(3)
ライブラリを使ってサーバから受け取ったデータをハッシュし新しいマップ
データベースファイルを作成します。
- 全てのデータを書き終えてから、
ypxfr(8)
は、新しいファイルを置き換え、ローカルマシンの
ypserv(8)
宛にデータベースハンドルを更新するよう YPPROC_CLEAR を送ります。
巨大なマップが含まれている場合、この処理に数分かかることがあります。
たとえば、数万のエントリのあるパスワードデータベースでは、数メガバイト
のディスクを消費し、
db(3)
ライブラリがハッシュテーブルに全てのエントリをソートし納めるのに
長時間かかります。さらに、マップファイルは2セットあります:
master.passwd.by{name,uid}
と
passwd.by{name,uid}
です。
rpc.ypxfrd
ユーティリティは NIS スレーブサーバがマスタサーバのマップファイルを
コピーし、マップファイルの構築を行わないことで、転送処理を高速化し
ます。
rpc.ypxfrd
は、単に RPC ベースのファイル転送プロトコルを実装しているだけです。
十分に高速なスレーブサーバが数メガバイトのファイルからマップを構築する
のに数分かかるのにたいし、転送では数秒しかかかりません。
rpc.ypxfrd
ユーティリティは、
ypserv(8)
と同じアクセス制限メカニズムを使っています。
したがって、
securenets(5)
データベースで許されているスレーブサーバのみがファイルを転送できます。
さらに、reserved ポートを使うスレーブサーバのみが、
master.passwd
マップを転送することを許されています。