名前 | 形式 | 機能説明 | オプション | 使用法 | 使用例 | ファイル | 属性 | 関連項目 | 診断 | 警告 | 使用上の留意点
rdist ユーティリティは、複数のホスト上でファイルのコピーを保守します。 マスタコピーのオーナ、グループ、モード、 更新時刻はそのまま保持しながら、 実行中のプログラムを更新できます ( ファイルの内容が変更されなかった場合、 rdist は所有者やモードの変更を反映しないことに注意してください)。 通常、リモートホスト上のコピーは、 そのサイズと更新時刻がローカルホスト上の オリジナルと異なっていれば更新されます。 rdist は、 -f オプションの distfile 引数で示されたファイルから、 ファイルやディレクトリを更新する手順を読み込みます。 distfile 引数の値が `-' の場合は、標準入力から読み込みます。 -f が省略された場合、 rdist は初めに自分の作業中のディレクトリ内で distfile を探し、次に Distfile を探して更新用の手順を得ようとします。
マシンをまたがって rdist を使用するには、各ホストマシンに /etc/host.equiv ファイルが用意されているか、または ユーザーがホームディレクトリ内の .rhosts 中にエントリを持っていなければなりません。 詳細については hosts.equiv(4) を参照してください。
バイナリ比較。単に日付とサイズを比較するのではなく、 バイナリ比較を行い、 内容が異なっていればファイルを更新します。
デバッグ処理を実施します。
シンボリックリンクをたどります。 つまりリンク自身をコピーするのではなく、 リンクが指すファイルをコピーします。
未解決のリンクを無視します。 rdist は転送対象のファイルのリンク構造を保守しようとし、 すべてのリンクが見つけられなかったとき ユーザーに警告を出します。
コマンドを実行しないで単に表示します。 このオプションは、 distfile をデバッグする場合に便利です。
静寂モード。更新するファイルを標準出力に出力しません。
関連していないファイルを削除します。 つまりディレクトリを更新する際、 リモートホスト上にあるファイルのうち、 マスタ (ローカル) ディレクトリに 対応するものがないファイルを削除します。 このオプションは、 ディレクトリのコピーで内容がまったく 同一のものを保守する際に便利です。
すべてのホスト上でファイルが最新状態にあることを 確認します。 最新の日付でないファイルが見つかると、 それが表示されます。ただし、どのファイルも更新されず、 またメールも送られません。
ファイル名全体が、宛先ディレクトリ名の終わりに付加されます。 通常、リネームを行う際には 名前の最後の構成要素だけが付加されます。 このオプションを使えば、 コピーされるファイルのディレクトリ構造を平にする代わりに、 その構造を保持します。 たとえば、 (dir1/f1 dir2/f2) というファイルに対して dir3 にリネームする旨を指定すると、 dir3/f1 と dir3/f2 ではなく、 dir3/dir1/f1 と dir3/dir2/f2 という名のファイルが作成されます。 文字 ‾ で始まるファイル名があるときに -w オプションを使用すると、ホームディレクトリ以外の すべてが宛先名に付加されます。
マスタコピーよりも日付の古いリモートコピーが見つかったとき、 更新しないで警告メッセージを発行します。
macro で示すマクロに対して value で示す値を設定します。このオプションは、 distfile 中のマクロ定義を変更して使いたい場合に使用します。 value として指定できるのは、空の文字列、 1 個の名前、または全体をカッコで囲んで複数の名前を 空白で区切って記述したものです。
pathname . . . [login @]hostname[:destpath ] hostname で示すホスト上の、 pathname で示すパス名を更新します。 相対ファイル名は、ユーザー自身のホームディレクトリに 相対であると見なされます。 `login @' を先頭に記述した場合には、その login のユーザー ID を使って更新処理が行われます。 `:destpath' を記述した場合は、リモートファイルはその パス名としてインストールされます。
distfile が示すファイルに、更新処理の手順が記述されていることを 指定します。 distfile 引数として `-' を指定すると、標準入力と見なされます。
更新対象とするホストマシンを host が示すマシンだけに限定します。 上記の distfile 中に複数のホストが記述されていて、その一部に対してだけ 更新を行いたい場合、この -m オプションを必要な回数だけ指定して 対象ホストを限定できます。
復帰改行、タブ、空白文字の各文字は、 いずれも空白として扱われます。 入力行が替わっても、次の対応指定が検出されるまでは 現在の対応が継続されます。 対応指定の始まりは、ファイル名の後に `->' が続いたもの、またはファイル名のリストの 始まりを示すカッコ ( で示されます。
注釈は # で始まり復帰改行で終わります。
rdist のマクロ機能は制限されています。 マクロが展開されるのは、ファイル名またはホスト名のリスト内、 および特定のプリミティブの引数リスト内に限られます。 マクロを使ってプリミティブやそのオプションを表したり、 `->' や `::' 記号を表したりはできません。
マクロの定義は以下の形式の行で記述します。
macro = value
マクロの参照は、以下のような文字列で表します。
${macro}
ただし make(1S) の場合と同様に、マクロ名が 1 文字で構成されている場合には中カッコは省略できます。
シェルのメタキャラクタである [、 ]、 {、 }、 *、 ? は、 csh(1) の場合と同様に、認識されて (ローカルホスト上でのみ) 展開されます。 メタキャラクタの先頭にバックスラッシュを 付加すれば、エスケープすることができます。 文字 ‾ も、 csh の場合と同様に展開されますが、 ローカルホスト上と宛先ホスト上では別個に展開されます。
ファイル名の先頭が / でも ‾ でもない場合、各宛先ホスト上において ユーザーのホームディレクトリに相対していると 見なされます。この場合、 現在の作業中のディレクトリに 相対ではない点に注意してください。 複数のファイル名を指定する場合には、 全体を括弧で囲まなければなりません。
rdist が各ファイルのリモートコピーを更新する際に どのような動作を実行するかを、 以下のプリミティブを使って指定できます。
日付の古いファイルとディレクトリを 再帰的にコピーします。 newname オペランドが指定されていないときは、 ローカルファイルの名前がリモートホスト上の コピーに与えられます。 ファイル名のパス中の親ディレクトリが、 リモートホスト中に存在していなければ、 新たに生成されます。 安全のため rdist は、宛先ホスト上にある空でないディレクトリを 通常ファイルやシンボリックリンクには置き換えません。 ただし -R オプションが指定された場合には、 空でないディレクトリも、対応するファイル名が マスタホスト上に存在していないと削除されます。
install 用のオプションの意味論は、 コマンド行で指定する対応するオプションのものと同じです。ただしその有効範囲は 特定のマップに限定されています。 宛先ホストで使用されるログイン名は、宛先名の形式が login@host. である場合を除き、ローカルホストでのログイン名と同じです。 宛先名が上記の形式のときは、ユーザー名 login で更新処理が実行されます。
address で示す TCP/IP アドレスにメールを送信します。 アドレスは以下の形式で記述します。
user@host
メールは、更新されたファイルと 検出されたエラーから構成されます。 指定されたアドレスに接尾辞 `@host ' が付加されていなければ、 rdist は宛先ホストの名前を付加して完全な形にします。
filename 引数で示すファイル群を更新の対象から除くことを指定します。
pattern 引数で示す正規表現に一致するファイルを更新の対象から省く ことを指定します。 正規表現に関する詳細は、 ed(1) を参照してください。 なお distfile 中では、 ¥ と $ の両文字はエスケープしなければなりません。 pattern 中にシェル変数を指定することは可能ですが、 シェルのファイル名展開機能はサポートされていません。
Bourne シェル sh(1) のコマンド行を指定して、各ファイルの更新後にそれらの コマンドをリモートホスト上で実行するよう指示します。 filename 引数を 1 つも指定しなければ、どのファイルの更新後でも command-line 引数で示すコマンド行が実行されます。 このときシェル変数 FILE は、ローカルホスト上のファイル名に設定されます。 command-line 中に疑問符を記述すれば、入力行を distfile から読ませることができます。 複数のシェルコマンドを記述するには、 コマンド間をセミコロン ( ;) で区切ります。
command-line を実行するシェル用の、デフォルトの作業用ディレクトリは、 リモートホスト上でのユーザーのホームディレクトリです。
以下に示す distfile の例は、 hermes と magus という 2 つのホスト上で、共有ライブラリの同一コピー、 共有ライブラリで初期化したデータファイル、 インクルードファイル、 ディレクトリを保守するよう rdist に対して指示しています。 magus 上では、コマンドはスーパーユーザー として実行されます。 rdist は、タイムスタンプファイルと異なるローカルファイルを 見つけるたびに、 merlin@druid に報告します。
HOSTS = ( hermes root@magus ) FILES = ( /usr/local/lib/libcant.so.1.1 /usrlocal/lib/libcant.sa.1.1 /usr/local/include/{*.h} /usr/local/bin ) (${FILES}) -> (${HOSTS}) install -R ; ${FILES} :: /usr/local/lib/timestamp notify merlin@druid ; |
接続を許可するホスト名 / ユーザー名リスト ( ユーザー用 )
ユーザー名を共有するホスト名リスト ( システム用 )
更新リスト用の一時ファイル
次の属性については attributes(5) のマニュアルページを参照してください。
属性タイプ | 属性値 |
使用条件 | SUNWcsu |
rdist のバージョン番号が一致しない、という メッセージが出力された場合、 シェル起動時に何らかの問題 (たとえばそのユーザーが属しているグループの 数が多すぎる) があったことに起因している可能性が高いと 考えられます。
スーパーユーザーは、 NFS がマウントしたファイルシステム上では、 通常のアクセス特権を持っていません。 rdist を使ってそのようなファイルシステムをコピーしようとしても、 失敗するか、またはコピーのオーナーが "nobody" になります。
ソースファイルは、ローカルホスト上に存在するか マウントされていなければなりません。
ディレクトリ中のすべてのファイルを更新した後で 特殊コマンドを 1 回だけ実行する、という処理を簡単に行う方法がありません。
変数の展開ができるのは、名前のリストに対してだけです。 汎用的なマクロ機能は提供されていません。
ファイルの更新時刻が負の値つまり 1970 年 1 月 1 日より古い場合、 rdist は異常終了します。
空でないディレクトリを通常ファイルや シンボリックリンクで置き換えるための、 "force" オプションは提供されていません。 また、ファイルモードとオーナだけが異なる ファイルに関して、その 2 種類の情報だけを更新する方法も必要です。
名前 | 形式 | 機能説明 | オプション | 使用法 | 使用例 | ファイル | 属性 | 関連項目 | 診断 | 警告 | 使用上の留意点