名前 | 形式 | 機能説明 | オプション | 使用法 | 使用例 | ファイル | 属性 | 関連項目 | 診断 | 警告 | 使用上の留意点
rdist [-b] [-D] [-h] [-i] [-n] [-q] [-R] [-a] [-x] [-PN | -PO] [-k realm] [-v] [-w] [-y] [-d macro = value] [-f distfile] [-m host]...
rdist [-b] [-D] [-h] [-i] [-n] [-q] [-R] [-a] [-x] [-PN | -PO] [-k realm] [-v] [-w] [-y] -c pathname... [login @] hostname [: destpath]
rdist ユーティリティーは、複数のホスト上でファイルのコピーを保守します。マスターコピーの所有者、グループ、モード、更新時刻はそのまま保持しながら、実行中のプログラムを更新できます (注意 : rdist は、ファイルの内容が変更されない限り、所有者やモードの変更を反映しません)。通常、リモートホスト上のコピーは、そのサイズと更新時刻がローカルホスト上のオリジナルと異なっていれば更新されます。-y オプション (更新時刻モード) を使用すると、更新時刻だけがチェックされます。サイズの比較は行われません。下記を参照してください。
rdist には 2 つの形式があります。「形式」の項に示されている 1 つ目の形式の rdist は、-f オプションの distfile 引数で示されたファイルから、ファイルやディレクトリを更新する手順を読み込みます。distfile 引数の値が `–' の場合は、標準入力から読み込みます。-f が省略された場合、rdist は初めに自分の作業中のディレクトリ内で distfile を探し、次に Distfile を探して更新用の手順を得ようとします。
「形式」の項に示されている 2 つ目の形式の rdist では、コマンド行オプションとして -c オプションを使用してパスを指定します。
ユーザーは、Kerberos V5 認証を使用して、rdist セッションをセキュリティー保護することもできます。また、転送されるデータも暗号化できます。rdist セッションで Kerberos 認証を使用するには、任意の Kerberos 固有オプションを使用します-a、-PN または -PO、-x、および -k realm。これらのオプションのうち、-x、-PN または -PO、および -f または -F は、krb5.conf(4) の [appdefaults] セクションにも指定できます。これらのオプションの使用法と期待される動作については、次のオプションセクションを参照してください。Kerberos 認証を使用する場合、アカウントの認証は、krb5_auth_rules(5) の規則によって制御されます。Kerberos 認証が失敗した場合、-PO オプションをコマンド行に明示的に指定するか、krb5.conf(4) 経由で指定している場合にのみ、rhosts を使用する通常の rdist へのフォールバックが発生します。-PN または -PO、-x、および -k realm オプションは、-a オプションの上位集合です。安全でないバージョンの rdist をマシン間で使用する場合には、各ホストマシンに /etc/host.equiv ファイルが存在する必要があります。あるいは、このファイルが存在しない場合、ユーザーのホームディレクトリにある .rhosts ファイルにエントリが存在する必要があります。詳細については hosts.equiv(4) を参照してください。
次のオプションを指定できます。
このオプションは、Kerberos 認証を明示的に有効にし、アクセス制御において .k5login ファイルを信用します。サーバー側での in.rshd(1M) による認証チェックが成功して、なおかつ、.k5login ファイルがアクセスを許可する場合、ユーザーは rdist 転送を実行することが許可されます。
バイナリ比較。単に日付とサイズを比較するのではなく、バイナリ比較を行い、内容が異なっていればファイルを更新します。
指定したホストへ pathname で示すパス名をコピーします。destpath を指定した場合は、そのホスト上の pathname を更新しません。相対ファイル名は、ユーザーのホームディレクトリに相対であると見なされます。`login @' を先頭に記述した場合には、その login のユーザー ID を使って更新処理が行われます。`:destpath' を記述した場合は、リモートファイルはその パス名としてインストールされます。
macro で示すマクロに対して value で示す値を設定します。このオプションは、distfile 中のマクロ定義を変更して使いたい場合に使用します。value として指定できるのは、空の文字列、1 個の名前、または全体をカッコで囲んで複数の名前を空白で区切って記述したものです。
デバッグモードを有効にします。
distfile が示すファイルに、更新処理の手順が記述されていることを指定します。distfile 引数として `–' を指定すると、標準入力とみなされます。
シンボリックリンクをたどります。つまりリンク自身をコピーするのではなく、リンクが指すファイルをコピーします。
未解決のリンクを無視します。rdist は転送対象のファイルのリンク構造を保守しようとし、すべてのリンクが見つけられなかったときユーザーに警告を出します。
rdist は、krb5.conf(4) で定義されているリモートホストの領域ではなく、指定した realm 内のリモートホスト用のチケットを取得します。
更新対象とするホストマシンを host が示すマシンだけに限定します。上記の distfile 中に複数のホストが記述されていて、その一部に対してだけ更新を行いたい場合、この -m オプションを必要な回数だけ指定して対象ホストを限定できます。
コマンドを実行しないで単に表示します。このオプションは、distfile をデバッグする場合に便利です。
Kerberos の「rcmd」プロトコルの新しいバージョン (-PN) または古いバージョン (-PO) を明示的に要求します。新しいプロトコルは、古いプロトコルにおける多くのセキュリティー問題を回避し、はるかに安全であると考えられますが、古い (MIT/SEAM) サーバーとは相互運用できません。-PO オプションで古いプロトコルを明示的に指定するか、krb5.conf(4) 経由で指定していない限り、デフォルトでは、新しいプロトコルが使用されます。古い「rcmd」プロトコルを使用しているときに Kerberos 認証が失敗した場合、Kerberos 認証を使用しない通常の rdist へのフォールバックが発生します。これは、新しい、より安全な「rcmd」プロトコルを使用しているときには当てはまりません。
静寂モード。更新するファイルを標準出力に出力しません。
関連していないファイルを削除します。つまりディレクトリを更新する際、リモートホスト上にあるファイルのうち、マスター (ローカル) ディレクトリに対応するものがないファイルを削除します。このオプションは、ディレクトリのコピーで内容がまったく同一のものを保守する際に便利です。
すべてのホスト上でファイルが最新状態にあることを確認します。最新の日付でないファイルが見つかると、それが表示されます。ただし、どのファイルも更新されず、またメールも送られません。
全体モード。ファイル名全体が、宛先ディレクトリ名の終わりに付加されます。通常、リネームを行う際には 名前の最後の構成要素だけが付加されます。このオプションを使えば、コピーされるファイルのディレクトリ構造を平らにする代わりに、その構造を保持します。たとえば、(dir1/f1 dir2/f2) というファイルに対して dir3 にリネームする旨を指定すると、dir3/f1 と dir3/f2 ではなく、dir3/dir1/f1 と dir3/dir2/f2 という名のファイルが作成されます。文字 ~ で始まるファイル名があるときに -w オプションを使用すると、ホームディレクトリ以外の すべてが宛先名に付加されます。
ホスト間で転送される情報を暗号化します。このコマンド自身は暗号化されずにリモートシステムに送信されることに注意してください。それ以降の転送はすべて暗号化されます。
更新時刻モード。マスターコピーよりも日付の古いリモートコピーが見つかったとき、更新しないで警告メッセージを発行します。更新時刻だけがチェックされます。サイズの比較は行われません。
復帰改行、タブ、空白文字の各文字は、いずれも空白として扱われます。入力行が変わっても、次の対応指定が検出されるまでは現在の対応が継続されます。対応指定は、ファイル名の後ろに「->」が続いたもの、またはファイル名のリストの始まりを示す括弧「(」で、開始されます。
注釈は # で始まり復帰改行で終わります。
variable_name '=' name_list [ label: ] source_list '->' destination_list command_list [ label: ] source_list '::' time_stamp_file command_list
1 つ目の形式は、変数を定義するために使用します。2 つ目の形式は、ほかのホストへファイルを配布するために使用します。3 つ目の形式はある特定の日時以降に変更があったファイルをリストするために使用します。source_list には、配布するもののマスターコピーとして使用する、ローカルホスト上のファイルやディレクトリを記述します。destination_list は、ファイルをコピーする宛先ホストを記述します。source_list に記述した各ファイルは、更新中のホスト上で変更が加えられている場合 、または time_stamp_file よりもファイルが新しい場合に (3 つ目の形式)、変更があったファイルのリストに追加されます。ラベルは指定してもしなくても構いません。ラベルは、部分的に更新を行う場合のコマンドを識別するために使用します。コロン (:) は、ラベル (省略可) の後に使用します。二重コロン (::) は、特定の日時 (ファイル time_stamp の日時で指定) 以降に変更されたファイルをリストするために使用します。通常、「::」形式のコマンド行で使用するのは notify だけです。
rdist のマクロ機能には制限があります。マクロが展開されるのは、ファイル名またはホスト名のリスト内、および特定のプリミティブの引数リスト内に限られます。マクロを使ってプリミティブやそのオプションを表したり、`->' や `::' 記号を表したりすることはできません。
マクロの定義は、次の形式の行で記述します。
macro = value
マクロの参照は、次のような文字列で表します。
${macro}
ただし make(1S) の場合と同様に、マクロ名が 1 文字で構成されている場合には中カッコは省略できます。
Kerberos 認証を使用する rdist セッションの場合、各ユーザーは自分のホームディレクトリの .k5login ファイルに、専用の認証リストを持つことができます。このファイルの各行には、形式 principal/instance@realm の Kerberos 主体名が入っている必要があります。~/.k5login ファイルが存在する場合、起点ユーザーが ~/.k5login ファイルに指定された主体の 1 人であると認証された場合にのみ、起点ユーザーのアカウントにアクセス権が付与されます。~/.k5login ファイルが存在しない場合、authenticated-principal-name -> local-user-name マッピング規則を使用して、起点ユーザーの認証された主体名をローカルアカウント名にマッピングできる場合にのみ、起点ユーザーのアカウントにアクセス権が付与されます。.k5login ファイル (アクセス制御用) が処理されるのは、Kerberos 認証が行われるときだけです。
シェルのメタキャラクタである [、]、{、}、*、? は、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 を実行するシェル用の、デフォルトの作業用ディレクトリは、リモートホスト上でのユーザーのホームディレクトリです。
ftp コマンドは IPv6 に対応しています。詳細は ip6(7P) のマニュアルページを参照してください。現在のところ、IPv6 は Kerberos V5 認証ではサポートされません。
次に示す distfile の例は、hermes と magus という 2 つのホスト上で、共有ライブラリの同一コピー、共有ライブラリで初期化したデータファイル、インクルードファイル、ディレクトリを保守するように rdist に対して指示しています。magus 上では、コマンドはスーパーユーザーとして実行されます。rdist は、タイムスタンプファイルと異なるローカルファイルを見つけるたびに、merlin@druid に報告します。括弧 ( ) は、コピー元リストまたはコピー先リスト中に、空白で区切られた名前が 0 個またはそれ以上含まれている場合に使用します。
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 ; |
接続を許可するホスト名 / ユーザー名リスト (ユーザー用)
ユーザー名を共有するホスト名リスト (システム用)
更新リスト用の一時ファイル
アクセスを許可する Kerberos 主体を含むファイル
Kerberos 構成ファイル
次の属性については、attributes(5) のマニュアルページを参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWrcmdc |
csh(1), ed(1), make(1S), sh(1), in.rshd(1M), stat(2), hosts.equiv(4), krb5.conf(4), attributes(5), krb5_auth_rules(5), ip6(7P)
rdist のバージョン番号が一致しない、というメッセージが出力された場合、シェル起動時に何らかの問題 (たとえばそのユーザーが属しているグループの数が多すぎる) があったことに起因している可能性が高いと考えられます。
スーパーユーザーは、NFS がマウントしたファイルシステム上では、通常のアクセス特権を持っていません。rdist を使ってそのようなファイルシステムをコピーしようとしても、失敗するか、またはコピーの所有者が “nobody” になります。
ソースファイルは、ローカルホスト上に存在するかマウントされていなければなりません。
ディレクトリ中のすべてのファイルを更新した後で特殊コマンドを 1 回だけ実行する、という処理を簡単に行う方法がありません。
変数の展開ができるのは、名前のリストに対してだけです。汎用的なマクロ機能は提供されていません。
ファイルの更新時刻が負の値つまり 1970 年 1 月 1 日より古い場合、rdist は異常終了します。
空でないディレクトリを通常ファイルや シンボリックリンクで置き換えるための、“force” オプションは提供されていません。また、ファイルモードと所有者だけが異なるファイルに関して、その 2 種類の情報だけを更新する方法も必要です。
名前 | 形式 | 機能説明 | オプション | 使用法 | 使用例 | ファイル | 属性 | 関連項目 | 診断 | 警告 | 使用上の留意点