[名前] ftpfind - find directory&file on a ftp server [形式] usage: ftpfind URL [-proxy proxy_server] \ [-login login_name] [-password password] \ [-regexp pattern] [-type d|f|l] [-ls] [-print] \ [-delete|-get [directory] [-new] [-resume] \ |-put [directory] [-new] \ |-chmod 0???] [機能説明] ftpfindは、リモートftpサーバ上のファイル,ディレクトリに対し て検索,状態表示,削除、およびファイルの送受信を行うプログラム です。 ファイルの送受信では、directory内を再帰的に複写します。更新 されたファイルのみを送受信することや、受信が中断していたファ イルの直後から受信を再開することも可能です。 [オプション] -proxy proxy_server プロキシ・サーバの指定。ファイア・ウォール越しにftpサーバ へアクセスする際に指定します。 -login login_name -password password ftpサーバへのログイン名,パスワードの指定。省略すると、 ftpfindは.netrcファイルを見にいきます。.netrcファイルから URLに対応したログイン名,パスワードを取得できなかった場合に は、ftpfindはコマンドラインからの入力を要求します。 -regexp pattern ファイル,ディレクトリ名に対する正規表現によるフィルタリン グの指定。正規表現を知らない人のために補足すると、たとえ ばpatternに処理対象のファイル名を指定することで、ファイル 名の文字列を含んだファイルが処理対象になります。 -type d|f|l ファイルタイプの指定。ここで指定したタイプのファイル(ディ レクトリ)のみ、処理の対象になります。 d : ディレクトリ f : 普通のファイル l : シンボリック・リンク -ls ftpサーバ上のファイル,ディレクトリについて、`ls -l`と同等 の情報を表示するための指定。 -print ftpサーバ上のファイル,ディレクトリについて、パスを表示する ための指定。 -delete ftpサーバ上のファイル,ディレクトリを削除するための指定。こ のオプションを指定したときは、同時に-get,-put,-chmodオプシ ョンを指定することはできません。 -get [directory] [-new] [-resume] ftpサーバ上のファイル,ディレクトリを、ローカルマシンに転送 するための指定。ファイル,ディレクトリの格納先は、directory で指定します。directoryを省略した場合には、ftpfindはカレン トディレクトリを格納先とみなします。 -newオプションを指定すると、ftpfindはftpサーバ上のファイル とローカルマシン上のファイルの更新時刻を比較し、ftpサーバ 上のファイルの方が新しい場合のみファイルを転送します。 -resumeオプションを指定すると、ftpfindは受信が中断していた ファイルの直後から受信を再開します。ただし同時に-newオプシ ョンを指定しかつftpサーバ上のファイルの方が新しかった場合 には、-resumeオプションは機能しません。 また、ファイルを転送後、パーミッションおよびタイムスタンプ の複写を行います。 このオプションを指定したときは、同時に-delete,-put,-chmod オプションを指定することはできません。 -put [directory] [-new] [-cpmod] ローカルマシン上のファイル,ディレクトリを、ftpサーバへ転送 するための指定。ファイル,ディレクトリの転送元は、directory で指定します。directoryを省略した場合には、ftpfindはカレン トディレクトリを転送元とみなします。 -newオプションを指定すると、ftpfindはftpサーバ上のファイル とローカルマシン上のファイルの更新時刻を比較し、ローカルマ シン上のファイルの方が新しい場合のみファイルを転送します。 また、ファイルを転送後、パーミッションの複写を行います。 このオプションを指定したときは、同時に-delete,-get,-chmod オプションを指定することはできません。 -chmod 0??? ftpサーバ上のファイル,ディレクトリに対して、パーミッション を設定するための指定。 このオプションを指定したときは、同時に-delete,-get,-putオ プションを指定することはできません。 [使用例] - 特定のファイルをgetしたい場合は、次のようにします。 # ftpfind ftp://ftp.foo.bar/pub/abc.txt -login anonymous \ -password wub@green.an.egg.or.jp -get この例では、ftp://ftp.foo.bar内の、/pub/abc.txtをgetしま す。 - ftp://ftp.foo.bar/pub/ディレクトリ以下を全部getしたいなら、 次のようにします。 # ftpfind ftp://ftp.foo.bar/pub/ -login anonymous \ -password wub@green.an.egg.or.jp -get - わたしは次のようにして、自分のWWWページを更新しています。 # ftpfind ftp://www1.odn.ne.jp/cac25200/ -login cac25200 \ -password sequret -put /usr/local/www/data/myhome/ \ -new -print この例では、/usr/local/www/data/myhome/以下のファイルのう ち、更新されたもののみを、ftp://www1.odn.ne.jp/cac25200/以 下に転送しています。(なお実際にはログイン名,パスワードは、 ~/.netrcに書いています) [特記事項] - ftpfindの1行目'#!/usr/bin/perl'は、perlの置いてある場所に 合わせて変更してください。 - 36行目の'$SOCK_STREAM = 1;'は、Solaris上でftpfindを使用す る場合は'$SOCK_STREAM = 2;'に変更してください。 - 37行目の'$copy_timestamp = 1;'は、0に変更すると、get後に タイムスタンプを複写しません。 - 38行目の'$opt_cpmod = 1;'は、0に変更すると、getあるいは put後に、パーミッションを複写しません。 - うまく動作しないときは、ftpfindの35行目の'$verbose = 1;' を2に変更して動作させ、結果をお知らせください。 -- 1998年12月8日 いしいともかず