rdist(1) FreeBSD 一般コマンドマニュアル

rdist

前のページ 上に戻る 次のページ

rdist


           [name ...]
     rdist [-nqbRhivwyD] [-P rshcmd] -c name ... [login@]host[:dest]


解説

     rdist は、複数のホストに対し、ファイルの内容を同一に維持するためのプログ
     ラムです。本プログラムによるファイルコピーでは、可能な限り所有者、グルー
     プ、アクセスモード、そして更新時刻を保存しようとします。そして、現在実行
     中のプログラムの更新も可能です。 rdist は、コマンドを distfile から読み出
     し、その内容に従ってファイルやディレクトリの更新を制御します。

     第 1 の書式特有のオプション:

     -       distfile に `-' を指定した場合、標準入力からデータを入力します。

     -f distfile
             指定した distfile を使用します。

     -f オプションも `-' オプションも指定されない場合には、本プログラムは最初
     に ``distfile'' を、次に ``Distfile'' を探し、入力として使用します。コマ
     ンド行にて何の指定も与えられない場合には、 rdist は、 distfile に記述され
     たすべてのファイルとディレクトリを更新します。それ以外の場合では、引数
     は、更新対象となるファイル名あるいは実行されるコマンドのラベルと解釈され
     ます。ラベルやファイル名が衝突する場合には、すべてラベルとして取り扱いま
     す。これらの名前は、指定したコマンドを用いて指定したファイルを更新するの
     に用いられます。

     第 2 の書式特有のオプション:

     -c          rdist に、残りの引数を小規模の distfile として解釈するように
                 指示します。

                 このオプションを使用した場合と等価な distfile は、以下のよう
                 になります。

                       (name ...) -> [login@] host
                             install [dest];

     両方の書式に共通のオプション:

     -P rshcmd   rsh(1) と同様な機能を持つ他のプログラムをリモートサーバへの転
                 送に使用します。指定したプログラムはリモートサーバへバイナリ
                 透過な経路を使用できる必要があり、コマンド引数の書式が rsh(1)
                 と互換でなければなりません。

     -d var=value
                 var に対して value を代入することを定義します。 -d オプション
                 は、変数を定義したり、 distfile 中の変数を変更したりするのに
                 用いられます。 value には、空白文字列、名前、もしくは括弧で囲
                 まれて、タブやスペースで区切られた名前の列挙が指定可能です。

     -h          シンボリックリンクを追いかけます。リンクしてあるファイルの場
                 合、リンクファイルそのものでなく、リンク先にある実体をコピー
                 準出力に表示されますが、 -q オプションはこの出力を抑制しま
                 す。

     -R          無関係なファイルを削除します。ディレクトリを更新する場合に、
                 リモートホスト上に存在するファイルが、配布元のディレクトリ中
                 に存在しないなら、該当するファイルを削除します。本オプション
                 は、配布元と配布先で完全にディレクトリ配下の内容を一致させた
                 い場合に有効です。

     -v          すべてのホストのファイルが最新の物であるかの確認を行ないま
                 す。すべての古いファイルについては一覧が表示されますが、その
                 ファイルが変更されたり、そのファイルに関してシステムからメー
                 ルが届いたりすることはありません。

     -w          WHOLE モードを有効にします。指定されたファイル名全体が、配布
                 先ディレクトリ名の後に付加されます。通常は、ファイル名から
                 ディレクトリ名を取り除いた最後の部分のみがファイル名を変更す
                 る時に使われます。本オプションは、ディレクトリ構造をフラット
                 にせず、配布元のディレクトリ構造をそのまま配布先に持っていき
                 たい場合に用いられます。例えば、 ( dir1/f1 dir2/f2 )のように
                 表されるファイルを、dir3 というディレクトリに配布した場合、配
                 布先では dir3/f1 や dir3/f2 ではなく、 dir3/dir1/f1 や
                 dir3/dir2/f2 が作成されます。

     -y          YOUNGERモードを有効にします。通常、ファイルの更新は、 mtimesize ( stat(2) 参照) が一致しない場合に行なわれます。しか
                 し、 -y オプションが有効になっている場合には、 rdist は、配布
                 元のファイルより新しいファイルは更新しません。通常本オプショ
                 ンは、他のホストに存在する、より新しいファイルを置き換えない
                 目的で用いられます。配布元より新しいファイルが配布先にあった
                 場合には、その旨を通知するメッセージが表示されます。

     -D          デバッグモード。

     distfile は、コピーされるファイル、配布先ホスト、そして更新のための手順を
     指定するエントリを含みます。各エントリは、以下の形式のいずれかに分類され
     ます。

           <variable name> `=' <name list>
           [label:]<source list> `->' <destination list> <command list>
           [label:]<source list> `::' <time_stamp file> <command list>

     一番目の形式は、値を定義するのに用いられます。二番目の形式は、他のホスト
     へファイルを配布するのに用いられます。三番目の形式は、指定した日付以降に
     更新されたファイルの一覧を作成するのに用いられます。 source list は、配布
     元のファイルやディレクトリの一覧を指定します。 destination list は、ファ
     イルの配布先のホスト一覧です。配布元ファイルリスト (source list) 中の各
     ファイルが、更新を行なおうとしているホストにおいて古いものである(二番目の
     形式)か、または、指定のファイルのタイムスタンプより新しい場合(三番目の形
     式)には、変更対象リストに追加されます。

     ラベルの使用は、任意です。ラベルについては、部分的な変更を行う場合に、コ
     シェルのメタ文字であるところの `[', `]', `{', `}', `*', そして `?'  は、(
     配布元のホスト上でのみ) csh(1) 同様に解釈され、展開されます。これは、バッ
     クスラッシュを用いて回避する事が出来ます。 `~' 文字もまた、 csh(1) 同様に
     展開されますが、配布元と配布先のホストで別々に展開されます。 -w オプショ
     ンが `~' ではじまるファイル名とともに用いられた場合、ホームディレクトリを
     除くすべてのファイル/ディレクトリ名が配布先の名前に加えられます。 `/' や
     `~' 以外の文字ではじまるファイル名は、配布先のユーザのホームディレクトリ
     をルートディレクトリとみなして、指定されたファイルの名前を追加して配布先
     でのファイル名を作成します。

     コマンドリストは、以下の形式に従った、0 個以上のコマンドからなります。

           `install'      <options>        opt_dest_name `;'
           `notify'       <name list>      `;'
           `except'       <name list>      `;'
           `except_pat'   <pattern list>   `;'
           `special'      <name list>      string `;'

     install コマンドは、古いファイルやディレクトリをコピーするのに用いられま
     す。各配布元のファイルは、配布先ホストリスト中の各ホストへコピーされま
     す。ディレクトリも同様にして、再帰的にコピーされます。 Opt_dest_name は、
     ファイル名を変更するための任意的なパラメータです。 install コマンドがコマ
     ンドリストに存在しない場合や、配布先でのファイル名が指定されていない場
     合、配布元のファイル名がそのまま配布先でのファイル名として採用されます。
     パス名に含まれるディレクトリが配布先のホスト上に存在しない場合には、その
     ディレクトリを作成します。不慮の事故を回避するために、配布先のホスト上に
     空でないディレクトリがあっても、通常のファイルやシンボリックリンクに置き
     換えたりはしません。しかし、`-R'オプションを付加して実行した場合には、配
     布元のディレクトリに当該ファイルが存在しなければ、空でないディレクトリで
     も削除されます。 option には、`-R', `-h', `-i', `-v', `-w', `-y', `-b' が
     あり、それらが配布元ファイルリストに記述されたファイルに対してのみ適用さ
     れる事を除いて、コマンドライン中に指定した事と同じ意味となります。配布先
     ホストにおけるログイン名は、配布元でのログイン名と同じですが、配布先のロ
     グイン名が ``login@host" という形式で指定されている場合にはこの限りではあ
     りません。

     notify コマンドは、更新されたファイル一覧(および、発生した何らかのエラー)
     をメールによって通知する場合に用いられます。指定のメールアドレス中に `@'
     がない場合には、配布先のホスト名がメールアドレスに付加されます(例:
     name1@host, name2@host, ...)。

     except コマンドは、 name list に列挙されているファイルを除き、配布元ファ
     イルリストに記述されているすべてのファイルを更新するのに用いられます。本
     コマンドは、特定ファイルを除くすべてのファイルをコピーするのに用いられま
     す。

     except_pat コマンドは、 except コマンドと似ていますが、 pattern list とし
     て正規表現を用いたリストを指定できるところが異なります (詳細については、
     re_format(7) を参照して下さい)。ファイル名に含まれる文字列が、正規表現の
     パターンに一致すると、そのファイルは無視されます。 `\' が文字をクオートす
     る事に注意して下さい。正規表現に含めるためには、 2 個続ける必要がありま
     す。 pattern list の中の変数は展開されますが、シェルのファイルパターン

     以下に示す例は簡単な一例です。

           HOSTS = ( matisse root@arpa )

           FILES = ( /bin /lib /usr/bin /usr/games
           /usr/include/{*.h,{stand,sys,vax*,pascal,machine}/*.h}
           /usr/lib /usr/man/man? /usr/ucb /usr/local/rdist )

           EXLIB = ( Mail.rc aliases aliases.dir aliases.pag crontab dshrc
           sendmail.cf sendmail.fc sendmail.hf sendmail.st uucp vfont )

           ${FILES} -> ${HOSTS}
           install -R ;
           except /usr/lib/${EXLIB} ;
           except /usr/games/lib ;
           special /usr/lib/sendmail "/usr/lib/sendmail -bz" ;

           srcs:
           /usr/src/bin -> arpa
           except_pat ( \\.o\$ /SCCS\$ ) ;

           IMAGEN = (ips dviimp catdvi)

           imagen:
           /usr/local/${IMAGEN} -> arpa
           install /usr/local/lib ;
           notify ralph ;

           ${FILES} :: stamp.cory
           notify root@cory ;


関連ファイル

     distfile     入力コマンドファイル
     /tmp/rdist*  更新リストのために用いられる一時ファイル


関連項目

     csh(1), sh(1), stat(2), re_format(7)


歴史

     rdist コマンドは、 4.3BSD から登場しました。


診断

     rdist のバージョン不一致についての通知は、実際にはシェルを起動する際の何
     らかの問題に起因して発生します。例えば、ユーザの所属グループがあまり多す
     ぎるなどが挙げられます。

     rdist は、 rcmd(3) タイプのリモートサービス実行が、静かに成功することに依
     存します。よくある誤りとしては、非対話の初期化スクリプト、例えば .cshrc
     が出力を行なってしまうことがあります (出力を行う他のプログラムを実行する
     ものの、そのプログラムが端末に接続されていないということもあります -- よ
     くある原因が stty(1) です)。このような余計な出力のために、 rdist が失敗し
     rdist は、負 (1970 年 1 月 1 日以前の日付)の mtime を持つファイルに対して
     のアクセスを行うと異常終了します。

     空でないディレクトリを通常ファイルやシンボリックリンクで置換できる、
     `force' オプションがあるべきでしょう。内容自体は一致しているファイルのモ
     ードや所有者を更新する方法も必要でしょう。

4.3 Berkeley Distribution       March 17, 1994       4.3 Berkeley Distribution

ABELNET VPSサービス