rdist は、マシン間でファイルの同期を取るためのツールです。インストール
rdist のホームページは、
http://www.magnicomp.com/rdist/rdist.shtml
があります。rdist がインストールされていないときは、上記の URL より、 最新の rdist をダウンロードします。
ダウンロードしたら、解凍・展開し、ディレクトリを移動します。% tar xvfz rdist-6.1.5.tar.gz % cd rdist-6.1.5ここで、付属の README を読み、config/"os-type".h に使用している OS 用の コンフィグファイルが存在するか確認します。(FreeBSD3.xはありませんでした)
インストールは以下のように make , make install を実行します。% make % su Password: # make install以上で rdist のインストールは終了です。使用方法
詳しい使用方法は、オンラインマニュアル(man rdist)を御覧ください。
最も簡単な使用方法は、例えば% rdist -c ~/public_html matsuと入力します。これにより、~/public_html 以下の全てのファイルを matsu というホストの同じもの(matsu:~/public_html以下)と比較し、 タイムスタンプが異なっていたら、こちらから向こうへコピーします。 (逆向きにはコピーされません)
出てくるメッセージで installing というのは、今まで向こうに無かったファイルを 送っていること、updating というのは、向こうにあるファイルを更新していることを 意味しています。
これを、ファイル単位で送るには、例えば% rdist -c ~/public_html/index.html matsuとします。こうすれば、~/public_html/index.html を matsu:~/public_html/index.html に送ることができます。
もっと複雑なことをしたい場合には、distfile に rdist の処理方法を記述します。 例えば、distfile として以下のような記述をします。~/public_html -> matsu install -oyounger ;この後、% rdist -f distfileと入力します。これにより、~/public_html 以下の全てのファイルを matsu という ホストの同じものと比較し、こちらの方が新しい(younger)場合に限って、 向こうにコピーします。向こうの方が新しいファイルについては、以下のような 警告メッセージを出します。foo.txt: Warning: remoto copy is newerまた、いくつかのディレクトリを指定したいときは、次のように括弧でくくります。(~/public_html ~/foo) -> matsu install -oyounger ;別の distfile の例を挙げます。~/public_html -> matsu install -oyounger,nochkgroup,remove,noexec ; except ~/public_html/index.html ; except ~/publib_html/countfile ;remove はこちら側に無いファイルは消すということです。 nochkgroup はグループ属性を無視します。 noexec は実行ファイルをコピーしません。 except はそのファイルを除くという意味です。
distfile の記述の仕方は、他にもいろいろとあるので、 詳しくはオンラインマニュアルを御覧ください。注意
リモートホスト間で使用する r コマンドなので、.rhosts の設定が必要です。 root権限で実行する場合には、root のホームディレクトリに .rhosts を作成し、 パスワード無しでリモートホストにログインできるようにしなければなりません。
このため、セキュリティには特に注意が必要です。
ちなみに当研究室では、次に説明する rsync というものを使用しています。 これは ssh と併用できるため、セキュリティ面では rdist より安全です。
rsync は rcp を非常に強力にしたようなものです。特に ssh と併用する場合には、 rdist より便利です。また、単なる cp の強化版としても使えます。インストール
rsync のホームページは、
http://samba.anu.edu.au/rsync/
http://rsync.samba.org/
といったものがあります。samba で有名なところです。
ここでは、上記の URL のリンク先より、rsync-2.3.2.tar.gz をダウンロード しました。ソースファイルをダウンロードしたら、解凍・展開してディレクトリを 移動します。% tar xvfz rsync-2.3.2.tar.gz % cd rsync-2.3.2インストールは簡単で、以下のように configure スクリプトを実行し、 make , make install を実行します。% ./configure % make % su Password: # make install以上で、rsync のインストールは終了です。使用方法
詳しい使用方法は、オンラインマニュアル(man rsync)を御覧ください。 いろいろなオプションがありますが、代表的なものを以下に列挙します。-a ファイルについての情報を保つ(archive) -u より新しければ更新しない(update) -v 転送のスピードアップ(verbose) -c チェックサム使用(chekcsum) -z データを圧縮して転送する(compress with zlib) -b 古いファイルは ~のついた名前で残す(backup) -l コピー元がsymbolic linkの場合、コピー先でもsymboliexc linkを作成する -e ssh ssh を通信に使用(デフォルトでは rsh)例えば、ユーザ sakai のホームディレクトリ(/home/sakai)以下のファイル全てを ホスト slave の /home1/sakai/ 以下に転送したい場合には、以下のように 実行します。% rsync -auvvz -e ssh /home/sakai/ slave:/home1/sakai/ここで注意点として、コピー元ディレクトリ名の末尾には、必ず / を付けておきます。 またこの場合には、こちらのホストから向こう(slave)のホストへ、ssh を使用した パスワード無しログインが出来るように設定しておく必要があります。この設定方法に ついては、ここを御覧ください。
また、こちら側のホストに無くて、向こうのホストにあるファイルは消去するように する(ファイルを同期させる)には、以下のように --delete オプションを付けます。% rsync -auvvz -e ssh --delete /home/sakai/ slave:/home1/sakai/当研究室では、以下のようなシェル#!/bin/csh foreach USER ( `ls /home` ) /usr/local/bin/rsync -auvvz -e ssh --delete /home/$USER/ slave:/home1/$USER/ endを cron で実行させることにより、ユーザのホームディレクトリをバックアップ しています。
なお、こちらのホストから向こう(slave)のホストには root で ssh による パスワード無しログインが出来る必要があります。