NcFTP(1) | FreeBSD General Commands Manual | NcFTP(1) |
名前
Ncftp - インターネットファイル転送プログラム書式
ncftp [ プログラムオプション] [[ オープンオプション] ホスト名[ : パス]]オプション
プログラムオプション:-D : デバッグモード、トレースモードを有効にする。
-L : ビジュアルモードを使用しない(ラインモード)。
-V : ビジュアルモードを使用する。
-H : バージョン情報。
コマンドラインのオープンオプション:
-a : 匿名(anonymous)で接続。
-u : ユーザ名とパスワードプロンプトで接続。
-p X : 接続時にポート番号Xで接続。
-r : 接続するまでリダイアルする。
-d X : リダイアルまで、X秒の間隔を開けてリダイアルする。
-g X : X回リダイアルして接続できなければ、あきらめる。
コマンドラインの取得オプション:
-C : 強制接続(再取得)。
-f : 強制的に上書きする。
-G : ワイルドカードを使用しない。
-R : 再帰。ディレクトリ全体を取得するときに役立つ。
-n X : X日前より新しいファイルのみを選択して取得。
説明
NcFTP はインターネット標準の File Transfer Protocol に対するユーザーインターフェイスである。リモートネットワークホストとのファイルの送受信を行い、標準の ftp にはない付加的な機能を提供する。以下の3つモードがある: ビジュアルモード、 ラインモード、 コロンモードである。
使用しているシステムが最近のものなら、デフォルトのモードは ビジュアルモードにすべきである。これは curses ライブラリを用いたフルスクリーンインターフェイスである。ビジュアルモードでは、不可解なコマンドを打つ必要はなく、洒落たスクリーンインターフェイスで NcFTPの設定を編集することができる。
ビジュアルモードでなければ、対話的なシェル(interactive shell)である ラインモード を使うことになるだろう。このモードはデフォルトの ftp プログラムのコマンドシェルのような簡易なインターフェイスである。
3番目のモードである コロンモード は、NcFTP自身のシェルに入ること無しに、シェルコマンドラインから直接ファイルをすばやく取得する機能を提供する。このモードはシェルスクリプトで便利である。
ビジュアルモードの概論
ビジュアルモードになると、スクリーンはクリアされ、派手なスクリーンで書き換えられる。スクリーンの下から2番目に黒色のステータスバーが現れる。ステイタスバーの下は入力行で、プログラムのシェルへコマンドを打ち込む場所である。NcFTPは何か命令されるまで待機している。たいていはリモートのファイルシステムをオープンして、ローカルマシーンのファイルシステムとファイルのやり取りをすることになるだろう。そのためにはリモートシステムの名前か、もしくはその インターネットプロトコル (IP)のアドレスを知っている必要がある。例えば、名前が ``typhoon.unl.edu'' でそのIPアドレスが ``129.93.33.24''ならば、そのシステムに接続するためには、NcFTPの open コマンド:
open typhoon.unl.edu
open 129.93.33.24
を使用する。
これらは、 Nebraska 大学 の typhoonと呼ばれるマシンに接続しようとする。 IPアドレス予告無く変更されることがあるが、名前はたいてい同じままであるので、名前を使用した方が好ましいだろう。
リモートファイルシステムに接続するときは、接続するための権限を持っていなければならない。 FTP Protocol の認証システムは、(UNIX等の)アカウントにログインすることにとてもよく似ている。しかし、あなたが興味を持つようなリモートシステムの多くでは使用にあたってアカウント名を求められることはないだろう。多くの場合はリモートファイルシステムへ匿名アクセスすれば、公共的にアクセスできるファイルを交換できる。 NcFTPはデフォルトでは、リモートシステムに匿名アクセスを行う。これは実際には、``anonymous''というアカウント名を用い、パスワードのプロンプトに管理者への礼儀として E-mailアドレスを記入する。もちろん特定のアカウントを使用することもできる。これについては後述する。
接続が成功すると、ステータスバーの片側にリモートシステムの名が表示される。現在のリモートディレクトリの内容を見るには、 lsと dir コマンドを使用すれば良い。前者は少ないスクリーンスペースで多くのリモートファイルを選べるように簡潔である。また後者はディレクトリの各項目について詳しい情報を与えるように、冗長である。
cd コマンドを使えば、リモートシステムの他のディレクトリへ移動できる。 cd コマンドは Bourneシェルと Kornシェル の同名のコマンドと、ほぼ似た動作をする。
NcFTPの目的は他のシステムとデータの交換をすることである。 get コマンドはリモートシステムからローカルシステムへファイルをコピーする:
get README.txt
NcFTPはスクリーンに転送の進行状況を表示するので、転送が終了するまでにどれくらいかかるかわかる。転送が終了すると、NcFTPのコマンドシェルにコマンドを打つことができるようになる。
put コマンドはローカルのシステムからリモートシステムへファイルをコピーするために使用できる:
put something.tar
リモートシステムでの作業が終わったら、他のシステムをオープンすることができる。また quit コマンドは NcFTPを終了させる。
ブックマークファイル
NcFTPの目標の一つは最小限のタイピングで最大限の便宜を得ることである。 NcFTPはホームディレクトリの . ncftp サブディレクトリにある bookmarks という特別なファイルに、呼び出したサイトについての情報を自動的に保存する。各ブックマークには、ホスト名、入ったリモートディレクトリ、アカウント情報などの設定が保存される。これにより、後で再びそのサイトを呼び出すのを簡単になる。また前回ログオフしたときの全て情報を保存されている。この情報を保持すると、サイトの正式なホスト名を使う代りに、より短く意味のある名前で呼び出すことができるようになる。例えばサイト名 ``typhoon.unl.edu'' を頻繁に呼び出すと、ブックマーク名は ``typhoon'' になるだろう。すると、
open typnoon.unl.edu
の代りに
open typhoon
とすることができる。
問い合わせたサイトを NcFTPが特定できる限りにおいて、ブックマークの名前を短縮することができる。ブックマークの名前に``ty''から始まるものが他になければ、以下のようにできる:
open ty
ブックマークの機能を用いれば、実際の名前が覚えにくいようなホストに対して、より記憶しやすい名前を割り当てることができる。 Nethack というポピュラーなゲームが linc.cis.upenn.edu の /pub/NH3.1 ディレクトリに置かれているが、このサイトのブックマークとして ``nethack'' を指定できる。すると、
open linc.cis.upenn.edu
の代りに
open nethack
とすることもできる。
ブックマークエディタの使用
ブックマークファイルに蓄えられているブックマークを操作するためには、NcFTPに付属するブックマークエディタを使用する。 NcFTPの中から bookmarks と打てば、ブックマークエディタが起動し、新しい画面が立ち上がる。右側に NcFTPが保存してあるリモートシステムのリストが置かれる。リモートシステムに接続するごとに、NcFTPは自動的にブックマークファイルのエントリを保存する。もしサイトの接続にまだ成功していない場合には、このリストは空になる。
左側にリストに対して行うことのできる命令が表示されている。ブックマークエディタは、コマンド(編集したい設定のブックマークを選択するなど) 待ち状態になる。
ブックマークエディタには ``ホットキー'' という、単一のキーのみで動作するコマンドがある。ホットキーコマンドの後には enter を打つ必要はない。例えばブックマークエディタを終了するためには、``x'' キーを打てばよい。マルチキーコマンドは最初に / を打ち、最後に enter キーを打つ必要がある。例えば選択したサイトを消去するには、``/'' キーを打った後に ``del'' ``enter'' と打てばよい。リストの(反転している)選択行を下げるには ``d'' キーを打ち、上げるには ``u'' キーを打つ。ブックマークリストに多くのエントリがある場合には、全てを一画面で見せることはできなくなるだろうが、ブックマークリストを適当にスクロールさせて他のサイトも見ることができる。ページを移動するには、``p'' ``n'' キーを使用する。
ブックマークリストでサイトを選択するには、大文字を使う方法もある。ブックマークリストに多くのエントリがあるときに、ブックマーク名 ``nethack'' のサイトを選択するには ``N'' と打つ。すると ``n'' から始まるブックマークのサイトの先頭にリストの選択行が移動する。
編集したいブックマークを反転させた後、 / ed を使えば、そのブックマークの設定を示した画面が立ちあがる。
Bookmark Options のスクリーンでは、編集したい設定はホットキーで指定する。例えばブックマークの名前を編集するためには、``a'' と打つ。このブックマークの編集を終えて、ブックマークエディタ画面に戻るには ``x'' キーを打てばよい。
ブックマークオプション
サイトをオープンする時に使用する名前を変更するには Bookmark name フィールドの編集をする。ブックマーク名を変更した後には、このブックマークの参照はこの名前で行わなければならなくなる。例えば ``foobar'' という名前に変更したら、``open foobar''を用いなければならない。これは、一つのリモートホストに対して、複数のエントリを持つことができるようにするためである。例えば wuarchive.wustl.edu に対して2つのブックマーク ``wumac''と ``wuwindows''を作った場合に、 ``open wuarchive.wuustl.edu''としたのでは、NcFTPはどちらのエントリを使用したら良いのかわからないからである。サイトのログイン情報は User, Password, Account フィールドによって変更する。匿名(anonymous)ログインを用いる場合は、通常そのままにしておく。リモートシステムによっては特定のアカウントを用いたいことがあるかもしれない、このような場合には匿名(anonymous)ログイン以外の方法を用いる。
Directory フィールドには、リモートホストへの接続が成功したときに移動するディレクトリを指定する。サイトへの接続を終了した時に、このフィールドは自動的に終了時のディレクトリに更新される。
Transfer Type フィールドは、ファイルを転送に標準以外の転送モードを使用する場合に変更する。 NcFTPはたいてい UNIX システム上で使用されるし、リモートシステムの多くも UNIX 系でなので、デフォルトの転送モードは何も変換されない binary, となっている。
しかし、プレーンテキストを種類の異なる非 UNIX システム間で転送する必要があるときは、 ASCII モードに変更すると良い。これはテキストのみのファイルを正しく転送することを保証する。多くの場合は、 binary 転送モードを使用する必要があるだろう。
Port フィールドは標準的でないポート番号を使用するときに変更する。私はこれまで異なるポート番号を必要としたことがないが、必要な場合は変えることができる。
Has SIZE Command フィールドはおそらく編集する必要はないだろう。このフィールドは通常、情報の提供にだけ用いられる。 SIZE コマンドは、 FTP Protocol のコマンドで、リモートサーバでサポートされていると NcFTPにとって都合が良い。このコマンドがサポートされていれば、(クライアント側の)プログラムは転送前にリモートファイルの正確なバイト数を知ることができ、転送処理の進捗状況がわかるようになる。
Has MDTM Command フィールドも編集する必要はないだろう。リモートサーバがこれをサポートしていれば、NcFTPはリモートファイルの更新日時を正確に知ることができ、同じ日付をローカルファイルに設定する。
Can Use Passive FTP フィールドは、リモートのサーバが FTP Protocol の" PASV コマンドを使用できるかどうかを指定する。 FTPコネクションを設定する方法は2通りある。デフォルトの方法は Port FTP と呼ばれるものである。残念なことに、 Port FTP は、ローカルホストが ファイヤーウォール の内側にある場合は使用できない。一方 Passive FTP はファイヤーウォールの内側からでも使用できるので、可能な場合はこちらを用いると良いだろう。これは多くの場合自動的に検出されるので、このフィールドを編集する必要はないでだろう。
Operating System フィールドは特定のオペレーティングシステムに依存する情報を伝えるために使用される。もしOSがUNIX系ならば、NcFTPはリモートサーバのレスポンスについてある仮定をできる。例えば、OSが UNIX なら、 ls コマンドは UNIX 上での `` /bin/ls -CF''のように動作しようとする。 OSが UNIX でなけれは、 ``-CF'' はリモートサーバで使えないかも知れないし、サーバが文句をいうかもしれない。これらは多くの場合自動的に検出できるので、おそらくこのフィールドを編集する必要はないだろう。
コメントフィールドはサイトについての短い説明を記録するのに使用できる。例えば、私の ``nethack'' エントリでは、このフィールドに「Nethackの最新バージョンをおいてあるサイト」という情報を書いてある。ブックマークエディタウインドウにいるとき、コメントを持つサイトを反転させると、スクリーンの一番下にこのコメントが表示される。したがって、コメントを見るためにエディットモードに入る必要はない。
好みの設定
リモートホストごとに指定するオプションに加えて、NcFTPはユーザが設定可能なグローバルオプションを持っている。 NcFTPの設定を変えるためには、NcFTP起動中に prefs コマンドを実行する。Default open mode フィールドはNcFTPがどのように接続を試みるかを指定する。もし匿名(anonymous)FTPを多く利用するならば、 anonymous に設定する。 FTPするホストの多くが匿名(anonymous)ログインを許可していないなら、 usr と password フィールドを設定するとよいだろう。例えば、あなたの会社のネットワーク上で異なるマシンからのコピーをするのに NcFTPを使うなら、 anonymous FTPモードを使いたくはないだろう。
Anonymous password フィールドは匿名(anonymous)ログインする時にリモートのホストへ与える値を変える場合に用いる。匿名(anonymous)FTPのためにパスワードとして利用者の e-mailアドレスが習慣的に用いられる(たいていは要求される)。これによりリモートホストの管理者は、だれがサービスを利用しているかを知ることができる。もしNcFTPがあなたのe-mailアドレスを正しく得ることができなかったり、あなたが異なったものを使いたいのならば、このフィールドを変えること。
NcFTPは目の疲れを減らすために以前よりも空白を多く使用している。これが嫌なら、 Blank lines between cmds フィールドを変更すればこの機能を無効にできる。
NcFTPは転送したファイルのログをとることができるので、何を取得したのか忘れてしまった場合にはログを参照することができる。ログが ~/.ncftp/log に保存されるようにするには User log size フィールドに0よりも大きい数をセットする。おそらくこのファイルを無限に大きくはしたくないだろうから、ファイルの最大のサイズをセットしておくとよい。
NcFTPは以前にオープンした各サイトを全てブックマークファイルに保存するが、保存するサイトの数の上限を設定したくなるかもしれない。 NcFTPをロードしたりブックマークを保存するのが遅いマシンを使っているとか、ディスクスペースが貴重な場合には、 Max bookmarks to save フィールドを設定してブックマークの保存数を制限することができる。制限に達したら、NcFTPは最後の接続が最も古いサイトの情報を捨てる。言い換えれば、だいぶ前に一度だけ訪れ、忘れさられているサイトが最初に捨てられる。
NcFTPの機能によっては大容量のテキストが表示されるので、 pager プログラムを使う必要がある。例えば page コマンドはリモートファイルを取得し、その閲覧のためにページャを使用する。 pager フィールド(もしくはコマンドラインフラグ)によって、 NcFTPで使用するページャを指定できる。
リモートホストとローカルホストの間でファイルを転送するとき、NcFTP は転送の状態を示す progress meter を表示する。何種類かあるので、 Progress meter フィールドを変えれば、他のものを試すことができる。
Remote messages フィールドを変えると、リモートサーバのおしゃべりをどれくらい表示するかを制御できる。 NcFTPは全てのエラーメッセージを表示するが、リモートサーバのメッセージの多くはあまり役に立たない。表示するに値するメッセージは2つくらいである。一つめは startup message である。典型的には、サーバーに接続したときサーバについて幾つかの重要な情報を表示する。サーバによっては特定のディレクトリに入ったときに chdir messages を表示する。 Remote messages フィールドをトグルすることによりこれらのメッセージを表示するか指定できる。
デフォルトでは、NcFTPを実行している間、ローカルマシンのディレクトリは NcFTPを実行した時点のディレクトリになる。よってダウンロードはそのディレクトリに行われる。私は自分がダウンロードするものは指定したディレクトリ ``download directory'' を使用するのが好みである。これは quotaの容量を超えたり、他のファイルを上書きすることを妨げるからである。 NcFTPの起動時にローカルディレクトリを変更するには Startup in Local Dir フィールドを設定すればよい。これにより、ダウンロードしたファイルのありかがわかるようになる。
NcFTPの自身にも、表示したくなくなるような退屈なメッセージがいくつか存在している。プログラムが ``splash screen'' やプログラムの tip (ちょっと気のきいた利用法) 情報を表示するかは、 Startup messages で変えることができる。
リモートファイルを取得するとき、デフォルトではNcFTPはリモートファイルと同じ更新時刻をローカルファイルにも設定しようとする。 File timestamps フィールドを変更することによりこれを無効にすることができる。
フルスクリーンの使用を好まないのなら、 Screen graphics フィールドを変更することにより行指向のモードを使用することができる。一度 プレファレンス スクリーンから ビジュアル モードをオフにすると、 ライン モードを使用しているときに再度プレファレンススクリーンに戻ることはできない。ビジュアルモードに戻るためには、 ``-V'' フラグをつけてNcFTPを起動する。例えば以下のようにする。
ncftp -V
コマンドリファレンス
NcFTPのコマンドシェルがサポートしているコマンドについて説明する。まず最初に知っておくべきコマンドは help である。help
とコマンドシェルから打てば
NcFTPはサポートしているコマンドの名前をすべて表示する。さらに helpの後に指定したコマンドを指定すれば、そのコマンドのヘルプが得られる。例えば: open コマンドについての情報を表示するためには
help open
とする。
シェルエスケープコマンドは簡単で、エクスクラメーションマーク ! である。サブシェルを起動するには、単に
!
と打てばよい。
1つのコマンドだけを実行させることもできる。以下のようにする:
!date +%H:%M:%S
cd コマンドはリモートホスト上でのワーキングディレクトリを変更する。リモートサーバの異なるエリアへ移動するためにはこのコマンドを使う。新しいサイトをオープンしたばかりの時には、ルートディレクトリにいるであろう。このサイトに、例えば ``/pub/news/comp.sources.d''というディレクトリがある、という情報を聞いたとしよう。ここに移動するには、ルートディレクトリから:
cd pub
cd news
cd comp.sources.d
もしくはより簡潔に
cd /pub/news/comp.sources.d
とすればよい。移動がすんだら、 get, put, ls のようなコマンドを使用すれば、そのディレクトリにあるアイテムを参照できる。 UNIX 環境の幾つかのシェルでは直前にいたディレクトリにスイッチするような機能を持っている (私の好む機能である)。それらのシェルのように
cd -
とすれば、直前にいたディレクトリに移動できる。
close コマンドはリモートサーバとの接続を切断する。 NcFTPは必要なときに自動的にこれを実行するので、他のサイトをオープンしたり、プログラムを終了したりするときに、わざわざ手動で切断する必要はない。
create コマンドは、たまに使用する必要があるかもしれない。これはリモートホスト上に空のファイルを作成する。リモートサーバの管理者に接触できないが、関係者の誰かが、あなたのファイルを目にしてくれるかもしれない場合に役に立つかもしれない。例えば
create readline2.0.tar_is_corrupt
とすることによって、そのファイルを再投稿することをだれかに促すことができるかもしれない。
debug コマンドは、基本的には作者自身とテスターのためのものである。デバッグモードをオンにするためには、
debug 1
とする。こうすると、NcFTPとリモートサーバとの間のすべてのメッセージを見ることができる。この中にはデバッグモードのみで表示されるいくつかのメッセージが存在する。バグ報告をする場合には、 trace ファイルを送ってほしい。このファイルを作成するには、NcFTPを走らせてから
debug trace 1
とする。
このときには、プログラムがどのようにコンパイルされたかがわかるように、まず
version
と打って欲しい。
NcFTPを終了した後、 ~/.ncftp/trace ファイルの中身を emailに添付して私宛に送ってもらえれば、私はその内容からバージョン情報も知ることができる。
dir コマンドは詳細なディレクトリのリストを表示する。これは UNIXの ``/bin/ls -l'' コマンドのような振る舞いをする。リモートサーバが UNIX ホストなら、 ls と同じフラグも使うことができる、例えば
dir -rt
は UNIX 上の
/bin/ls -lrt
と同じように動作する。
echo コマンドはあまり便利には思えないかもしれないが、NcFTPのマクロで使用すると有益なことがある。これは UNIX シェルの echo コマンドのように動作するが、いくつかの拡張フラグを使用できる。 ``%'' フラグはすべて ``%'' フラグはすべて strftime(4) を通して表示される。したがって
echo It is now %H:%M on %B %d.
と打てば、スクリーン上に以下のような表示を得ることができる。
It is now 19:00 on January 22.
``@'' フラグも存在し、NcFTPは以下のように展開する:
@H : 接続されたホストの名前。
@D : リモートホストの現在の作業ディレクトリのフルパス。
@J : リモートの現在の作業ディレクトリの短いパス名。
@N : 改行。
@n : 接続されたホストのブックマーク名。
例えば
echo "Connected to @H at %H:%M." >> junk
と打った後で ``junk'' の内容を見れば、以下のようになっている:
Connected to sphygmomanometer.unl.edu at 20:37.
get コマンドはファイルをリモートホスト上の現在の作業ディレクトリからあなたのマシンの現在の作業ディレクトリにコピーする。あなたのローカルディレクトリに ``README'' のコピーを置くためには、以下のようにすればよい:
get README
get コマンドは以下の ``ダウンロードの特殊機能'' で説明するようないくつかの強力な特徴を持っている。
bookmarks コマンドは ブックマークエディタ を実行する。これまでの内容を読んでいれば、これが何をするものかを知っているはずである。 lcd コマンドはローカルホストに作用する ``l'' コマンドの最初のものである。もし異なるローカルディレクトリにファイルをダウンロードしたければ、ディレクトリを変えるために lcd を使ってディレクトリを変更してからダウンロードすればよい。
その他の手頃なローカルコマンドとしては、 lls コマンドがある。これはローカルホスト上の ``/bin/ls''を実行し NcFTPのウインドウに結果を表示する。コマンドシェルの ls と同じフラグを lls にも用いることができる。例えば:
lcd ~/doc
lls -lrt p*.txt
NcFTPには、ネームサービスへのインターフェースも組み込まれている。これには lookup コマンドを用いる。つまり以下のようにすれば、リモートホストのエントリを検索できるのである:
lookup cse.unl.edu ftp.cs.unl.edu sphygmomanometer.unl.edu
以下のように表示される:
cse.unl.edu 129.93.33.1
typhoon.unl.edu 129.93.33.24
sphygmomanometer.unl.edu 129.93.33.126
より詳細に表示することもできる。``-v''を用いればよい。例えば:
lookup -v cse.unl.edu ftp.cs.unl.edu
以下のように表示される:
cse.unl.edu
Name: cse.unl.edu
Address: 129.93.33.1
ftp.cs.unl.edu:
Name: typhoon.unl.edu
Alias: ftp.cs.unl.edu
Address: 129.93.33.24
IP アドレスを与えることもできる。つまり次のような指定も可能である:
lookup 129.93.33.24
以下のように表示される:
typhoon.unl.edu 129.93.33.24
lpage コマンドを用いると、ローカルファイルを一度に一つだけ見ることができる。デフォルトでは、NcFTPはファイルを表示に設定されているページャプログラムを使用する。 ``-b''フラグを指定すれば、組み込みのページャを使うこともできる。例えば:
lpage -b ~/.ncftp/bookmarks
lpwd コマンドは現在のローカルディレクトリを表示する。ローカルマシン上でどこのディレクトリにいるのかを忘れたときにこのコマンドを使うと良い。 ls コマンドはディレクトリのリストを簡潔に表示する。 UNIXの ``/bin/ls -CF '' コマンドのように振る舞おうとする。もしリモートのサーバーが UNIX ホストなら、 ls と同じフラグを使うことができる。例えば:
ls -rt
は UNIX 上での
/bin/ls -CFrt
のように振る舞おうとする。
mkdir コマンドはリモートホスト上で新しいディレクトリを作ろうとする。多くの公的なサイトでは、利用者はそのような権限を持っていないであろう。
サーバによっては、特殊な転送モードを使用しなければならないこともある。多くのサーバではデフォルトのモードである stream モードのみをサポートしている。NcFTPはstreamモードと同様に block モードもサポートする。このモードを用いる最大の利点は、全ての転送に同じデータコネクションを用いることである。 stream モードで、NcFTPとサーバは各ファイル毎に新しいコネクションを確立しなければならない。これは余計な時間と帯域を消費する。 blockモードにするには mode コマンドを使用する。
mode b
とタイプすればよい。ストリームモードを使用するためのコマンドは
mode s
である。リモートサーバがblockモードをサポートしており、その実装が正しいことが分かったなら、NcFTPは自動的にblockモードに切り替わるので、このコマンドは使うべきでない。
open コマンドはリモートホストに接続する。フラグを使わずに単にホストに接続することが多いだろうが、実は open コマンドには、各種の機能を有効にするためのフラグが幾つか存在する。
強制的に匿名(anonymous)でオープンするには、``-a''フラグを使用する。 NcFTP の公式アーカイブサイトである ftp.ncftp.com マシン上で、私は匿名ログインとユーザログインの両方を使用する必要がある。 ブックマークエディタ は前回使用したログインのタイプを記憶してしまうので、もし前回ユーザログインであったならば、 ``-a''フラグを使用すれば ブックマークエディタ を変更せずに匿名ログインに戻ることができるわけである。
同様に、強制的にユーザログインにするには ``-u''フラグを使用する。そのときは、アクセスするための自分のアカウント名とパスワードを入力する。
wuarchive.wustl.edu のような、巨大なアーカイブサイトの多くは混雑しているので、それらに対する接続が保証されない。 NcFTPは、接続が成功するまで定期的にサイトに ``リダイアル'' するようにできる。自動的にリダイアルするには ``-r''フラグを使用する。
リダイアルには固有のパラメータが幾つか存在する。リダイアルする間の遅延時間を秒単位で設定できる。また、NcFTPがリダイアルをあきらめる最大回数を設定できる。以下に、リダイアルモードの全機能を用いている例を示す:
open -r -d 75 -g 10 bowser.nintendo.co.jp
``-r''でリダイアルモードにし、``-d''はリダイアル間隔を75秒にして、 ``-g''フラグはリダイアルの回数を10回に限定している。デフォルトのリダイアル設定にまかせてかまわなければ、 ``-r''のみを指定しても良い。
open コマンドはオープンするホスト名を与えなければ、 ブックマークエディタ を起動する。ホストを選択するために ブックマークエディタ からもホストを選択することができる。ホスト名を反転させて リターン(return) キーを打てばよい。
page コマンドはリモートファイルを一度に一つだけ表示する。これは、リモートホスト上の README などのファイルをダウンロードせずに読むことができるので便利である。このコマンドはファイルを見るために Preferrences スクリーンの中の pager フィールドに設定したものを使用する。
pdir と pls コマンドはそれぞれ dir と ls に等しい。ただし出力はページャへ送られる。これらのコマンドは line モード での使用を念頭においている。ディレクトリのリストがオフスクリーンにスクロールしてしまうかも知れないからである。もし、 ビジュアル モードでは、普通に ls すれば、オフスクリーンになる場合には組み込みのページャが自動的に起動する。それゆえ、 ビジュアル モードで pdir と pls を使用することは奨めない。
redir と predir コマンドは最後に取ったディレクトリのリストを再表示するものである。 NcFTPは最後に行った dir もしくは ls コマンドからの出力を保存するので、それを再び見たいときに、ネットワークの帯域を浪費せずにすむ。 predir コマンドは出力をページャに渡すことを除いて redir と同じである。
predir コマンドは出力をページャに渡すことを除いて redir と同じである。
私の使い方では、接続の多くはダウンロードのためで、アップロードはほとんど必要としなかった。しかし put コマンドもちゃんと存在していて、リモートホストへファイルをアップロードすることができる。例えば、いくつかのファイルをリモートホストに送りたいならば、以下のようにすればよい:
lcd ~/docs/files
put 02.txt 03.txt 05.txt 07.txt 11.txt
put コマンドはあなたがリモートホスト上に正当な許可属性を持っていない場合には動作しない。また、このコマンドは ``-z''オプションを除いて get コマンドが持っているような特別な機能を持っていない。
pwd コマンドは現在のリモートディレクトリを表示する。 ビジュアル モードでは、これはステータスバーに表示される。
リモートファイルの名前は変更したいときには、以下のように rename コマンドを使用すればよい:
rename SPHYGMTR.TAR sphygmomanometer-2.3.1.tar
NcFTPの使用を終了するには、もちろん quit と打てば良い。 ( bye、 exit, ^D などのコマンドも利用できる。)
quote コマンドを使えばリモートサーバへ直接 FTP プロトコル を送ることができる。通常、これは一般的なユーザにとっては使いやすいものではない。
rhelp コマンドは、リモートサーバにヘルプリクエストを送信する。 FTP プロトコル のコマンドリストが表示されることが多い。たまには、実際に有用な (サイト管理者への連絡方法など) が表示されることもある。
リモートサーバによっては、サーバへ以下のようなパラメータを与えることも可能かもしれない:
rhelp NLST
そのようなサーバは以下のように返答する:
Syntax: NLST [ <sp> path-name ]
リモートファイルを削除したい場合には、 rm コマンドを試してみるとよい。多くの場合、あなたは正しい許可属性を持っていないだろうからでうまく行かないであろう。このコマンドはいかなるフラグも受け入れない。よって UNIX でのように ``-rf''を用いて、ディレクトリツリー全体を破壊するようなことはできない。
同様に、 rmdir コマンドはディレクトリを削除する。リモートサーバによっては、空でないディレクトリを消すことができるかもしれないので気をつけるように。
set コマンドはNcFTPの古いバージョンとの互換性のために用意されている。現在では prefs コマンドによって置き換えられた。基本的な文法は:
set オプション値
である。ここでオプションは、 Preferences スクリーンのフィールドに対応したショートネームである。 preferencesフィールドのショートネームは ~/.ncftp/prefs ファイルを眺めることによって見つけられる。このコマンドは主に line mode で使われるが、私はもうこのモードは公式にサポートしないので、このコマンドは使用しないで頂きたい。
site コマンドを使わなければならないようなこともあるかもしれない。 FTP プロトコル では ``サイト固有の''コマンドが許可されている。もちろんこれらの ``site''コマンドはサイトによって異なるが、いくつかのサイトでサポートされているコマンドに chmod がある。例えば:
site chmod 644 README
リモートサーバが何をサポートしているかを知るためには、以下のようにしてみると良い:
rhelp SITE
site help
サーバとのセッションの途中で、転送タイプを変更する必要があるかもしれない。これには type コマンドを使用することができる。以下のように試してみると良い:
tpe ascii
type binary
type image
NcFTPについて私に連絡する必要が生じた場合には、 version コマンドに慣れて欲しい。このコマンドは、あなたが使用しているNcFTPのバージョンとそれがどのようにシステムにインストールされたかを私に伝えるために多くの情報をダンプする。このコマンドの出力をファイルに保存する方法を以下に示す。この結果を私に送ってほしい。
version > version.txt
ダウンロードの特殊機能
リモートホスト上のファイルをローカルホストにコピーするには get コマンドを使用すればよい、と言うことはおそらく既に知っているだろう。しかし get コマンドにはいくつか有益なトリックがある。まず、 NcFTP は既に持っているファイルをスキップできる。get file24
が指定されたときに
現在のローカルディレクトリに``file24''というファイルが存在する場合には、 NcFTPはそれを再びダウンロードしてネットワークの帯域を消費してもよいかを決定するために、いくつかの追加的な情報を取得しようとする。
NcFTPはリモートファイル``file24''の日付とサイズを取得しようとする。もしそのファイルがローカルファイル``file24''と同じ日付で同じサイズなら、 NcFTPはそのファイルをスキップする。 NcFTPがリモートファイルの日付もしくはサイズを取得できなかったり、それらが異なっていたら、NcFTPはファイルを取り寄せる。
また、ローカルファイルの日付がリモートファイルの日付より新しければ、 NcFTPは既により新しいバージョン持っていると見なしてダウンロードをスキップする。
つまり、NcFTPを用いればアーカイブを mirror することができるわけである。例えば、``files''と呼ばれるリモートディレクトリのファイル全てをミラーしていなければならい仕事があるとする。そのディレクトリには多数のファイルがあり、その中のいくつかが時々更新されている。 ncftp を使用して適切なローカルとリモートディレクトリを設定すればこの作業を簡単に行うことができる。
get *
NcFTPは古いファイルをスキップし、持っていないファイルと前回から更新されたファイルのみをダウンロードする。
NcFTPが必要ないと判断した場合でも、 NcFTPのアドバイスを無視してファイルをダウンロードしたいかもしれない。強制的にダウンロードするには get に ``-f''フラグを用いれば良い。
get -f README
接続が切れたときにも強制的に継続してダウンロードを続けるためのフラグ ``-C''の使用すればよい。私は歴史的な理由から、これを ``forced reget(強制再取得)''と呼ぶことがある。
get に ``-G''フラグを使用すれば ワイルドカードマッチング の機能を無効にできる。他の FTP プログラムはダウンロードしているファイルのローカルパス名を指定するために
get remote-file [local-file]
という文法の使用を許している。 NcFTP はその点で異なっている、古いプログラムを使用していた人は、 NcFTPの get は古いプログラムの mget コマンドのように振る舞うことに気付くだろう。 NcFTP での以下の指定:
get file01 file01
は、``file01''と ``file02''というリモートファイルをダウンロードしようとしていることになる。 ``-z''フラグを使用すれば、古い動作をさせることもできる。
get -z file01 ../junk/files/01.txt
のようにすればよい。
get では、ある日付より新しいファイルを取得するために ``-n''フラグを使用することもできる。アーカイブのうち、最新のファイルだけを取得したいなら、全てをミラーする必要はない。 ``3日より新しいファイル全てをダウンロードする''こともできる。これには、目的のディレクトリへ行ってから、
get -n 3 *
とする。
NcFTPでは、 get コマンドに ``reget''モードも組み込まれている。他のFTPプログラムは reget コマンドを別途に提供している。これはダウンロードしている間に接続が切れたとき有用である。リモートホストにファイルを最初から再送させるのではなく、切れたところから転送を続けさせることができる。
NcFTP はこの機能を組み込んでいる。NcFTPは前回中断してしまったところから継続すべきか決定するためにリモートファイルとローカルファイルの日付とサイズを検査する。もし日付が同じで、ローカルファイルのサイズが小さいなら、NcFTPは ``reget''を試みる。
最後に、 get のもっとも無駄な機能はリカーシブ(再帰)モードである、これは ``-R''フラグで有効になる。これの特徴は全てのディレクトリの中身をダウンロードできることである。例えば:
get -R /pub/info/help
これは現在のローカルディレクトリに ``./help''と呼ばれるディレクトリを作成し、その中に全てのファイルとサブディレクトリをコピーする。
この機能を用いるときには慎重に考えてから行うこと。巨大なディレクトリを取得すると、リモートホストを泥沼に陥らせることになりかねない。アーカイブ管理者は公共のサービスを提供しているのであるから、アーカイブを濫用してこのサービスを閉鎖させるようなことがあってはならない。
マクロ
NcFTPは簡単なマクロ/エイリアス機能を持っている。ユーザ独自のコマンドの拡張や、イベントが起きたときに何か行うためにマクロを利用できる。マクロを使用するためには、ホームディレクトリの .ncftp サブディレクトリの中に macros ファイルを作成する必要がある。 ~/.ncftp ディレクトリはNcFTPを最初に実行したときに自動的に作成されるが、多くのユーザは macros ファイルを必要としていないので、これは自分で作らなければならない。
複数のマクロを定義することができる。文法は以下の通りである:
macro macro-name
macro-body...
end
以下は古い ftp プログラムのユーザが喜びそうなマクロの例である:
macro binary
type i
end
マクロは NcFTPを起動させた後、通常の ncftp コマンドのように実行できる。
マクロは、 Korn シェルの関数や C シェル のエイリアスのようにパラメータを持つこともできる。これらのパラメータはマクロに送られ、マクロ内部に対応した ``$''があれば、それらは実際に指定された値に展開される。例として、以下のマクロを示す:
macro cdls
cd $1
ls
end
このマクロを実行するには、ftp接続して以下のようにしてみれば良い:
cdls /pub
これは /pub へ cd し、そして ls . によって /pub の内容をリストアップする。
$ はある程度 Bourne シェルと Korn シェルに似ている。文法の例は以下の通りである:
$4 : 4番目の引数
$* : 全ての引数
$@ : 全ての引数、各々ダブルクォートされる。
$(2-5) : 2,3,4番目の引数。
$(2,5) : 2,5番目の引数。
$(3+) : 3,4,5, ..., N番目の引数。
``cdls''マクロコードのより良い例を以下に示す:
macro cdls
cd $1
ls $(2+)
end
イベントマクロ と呼ばれる特別なマクロがいくつか存在する。 NcFTPはイベントが起きたときに特定の名前を持つマクロを探し、それが存在していたら実行する。
まず .start.ncftp というイベントマクロがある。マクロファイルにそのような名前で定義されているマクロがあるなら、 NcFTPが起動される度にそのマクロが実行される。
同じように、 NcFTPを終了する度に実行される .quit.ncftp マクロというものもある。
その他のイベントマクロは各サイトに対応している。例えば、もしサイトのブックマークとして ``typhoon'' というもがあるのなら、 ``typhoon'' に接続したり、接続を終了する度に実行される .open.typhoon と .close.typhoon とういうマクロを定義できる。また、より一般的なイベントマクロとして .open.any と .close.any というマクロもあり、これらはすべてのサイトの接続・切断時に実行される。これらのマクロを利用すれば、サイトへの接続終了時に、何らかの処理をするシェルスクリプトをサイト別に実行できる。このようなマクロは以下のように書く:
macro .quit.ncftp
echo "Started post-processing downloads at %H:%M:%S"
!sh ~/scripts/download-decoder
echo "Finished post-processing downloads at %H:%M:%S"
end
もうひとつ、従来の ftp プログラムが .netrc ファイルで使用していた古い macdef init ハックをコピーして使う利用法もある。以下に例をあげる:
macro .open.infomac
echo "Getting recent files list"
get -z /pub/info-mac/help/recent-files ~/docs/recent
ls -lrt
end
コロンモードの使用
コロンモード の特徴はシェルのコマンドラインから使用できることである。大昔、ディスコが流行っていた時代には、インターネット標準の Trivial File Transfer Protocol を使った tftp と呼ばれるプログラムでファイルを取ってくることができた。シェル上で:
get wuarchive.wustl.edu:/graphics/gif/README
のようにこのプログラムを使えば、 wuarchive を呼び出し、REAMEファイルを取得できた。
NcFTPは、これと同じようにシェルのコマンドラインから使用できる:
csh> ncftp wuarchive.wustl.edu:/graphics/gif/README
csh> head REAMDE
これはシェルに、(この場合は C シェル から NcFTP を起動し、wuarchibe に接続、/graphics/gif/README を取得、取得できたら現在の作業ディレクトリに /README ファイルを書き出すように指せている。
コロンモード の機能はリモートサイトを訪ね回りたくなく、欲しいものが明確であるときに便利である。またシェルスクリプトから実行するときに、 NcFTPのコマンドシェルに入りたくないときや、出力を吐き出させたくないときにも便利である。
現在の作業ディレクトリに コロンモード のファイルを書き出したりしたくないとか、どこかのリモートファイルに出力をパイプしたいときがある。 コロンモード にはこのためのオプションが存在する。これは ftpcat という perl スクリプトを書いた人から示唆された。 ``-c''オプションは標準出力ストリームに書き出す。 ``-m''オプションはページャ(例えば more) にファイルをパイプする。もちろんこれは コロンモード に渡したものがディレクトリの場合はうまく動かない! 以下の例はリモートファイルのダンプを標準出力に渡す:
csh> ncftp -c wuarc:/graphics/gif/REAME
以下の例はリモートファイルを異なる場所にリダイレクトする:
csh> ncftp -c wu:/REAME > ~pdietz/thesis.tex
これはどのようにパイプラインを使うかを示している:
csh> ncftp -c wuarc:/REAME | tail | wc -l
10
csh >
これはどのようにリモートファイルを表示(ページ)するかを示している。
csh> ncftp -m wuarc:/graphics/gif/README
ラインモードの使用
ラインモード を提供する唯一の理由は、 curses ライブラリを装備していなかったり、このライブラリの機能が完全でないような原始的なシステムでも、何とかNcFTPを使えるようにするためである。多くのNcFTPの機能は ビジュアルモード が求められる機能を除いて、同じように機能する。 Preferencesスクリーンと ブックマークエディタ のようなものは動作しない。テキストエディタで ~/.ncftp/prefs と ~/.ncftp/bookmarks ファイルを編集しなければならないだろう。
次善の解決策としては、 GNU Readline のような強力な行編集ライブラリを、NcFTPをコンパイルするときに使用するとよい。
コマンドラインオプションのまとめ
シェルからNcFTPを呼び出したいとき、多くの UNIX プログラムと同じように ``ダッシュフラグ''を用いることができる。ここにコマンドラインから使用できるオプションのリストを示す:
-D : デバッグモードとトレースを有効にする。
-V : このセッションに``ビジュアル''モードを使用する。
-L : このセッションに``ライン''モードを使用する。
-H : ``version''コマンドからの情報を表示し終了する。
トレースをオンにしているとき、NcFTPはホームディレクトリの .ncftp サブディレクトリにある trace と呼ばれるファイルにデバッグ情報を書き出す。バグリポートをする場合には、作者がログを追跡できるように trace ファイルをメールに添付してもらえるとありがたい。
コロンモード では、以上のフラグに加え open と get コマンドで用いるフラグをパスとともに指定できる。以下は非常に複雑な例である:
csh> ncftp -r -d 120 -n 3 sphygmomanometer.unl.edu:/pub/stuff/*
これは2秒ごとにホストに再接続し、``/pub/stuff''ディレクトリから、3日前より新しい全てのファイルを取得させようとするものである。
著者
NcFTP は Mike Gleason 、 (mgleason@NcFTP.com)によって書かれた。 NcFTP is copyrighted 1995 by Mike Gleason. All rights reserved.もっとも最新のバージョンは <ftp://ftp.ncftp.com/ncftp/> にアーカイブされている。
謝辞
アイディアとある部分のコードは私のパートナーであるPhil Dietzによって寄付された。
何年にもわたってNcFTPをテストし、フィードバックしてくれた全ての人に感謝します。あなた方のサポートは、NcFTPを改良する上での動機となりました。
様々なプラットホームでのテストを可能にし、余分なディスクスペースを私に与えてくれ、UNL FTPサイトを管理してくれた私のシステム管理者たちに、特に Charles Danielに感謝をしたい。
probe.net に ncftp の homeを与えてくれた Probe Techonology の Dale Botkin と Tim Russell に感謝します。
仕事の合間にテストに付き合ってくれた Phil dietz、kok Hon Yin (hkok@yoda.unl.deu)、Andrey A. Chernov (ache@astral.msk.su)に感謝します。
ファイル名の保管(機能)に関するコードを作ってくれた Tim Mackenzie(t.mackenzie@trl.oz.au) に感謝します。
manページを手助けしてくれた DaviD W. Sanderson(dws@ssec.wisc.edu) に感謝します。
バグ
curses ライブラリの制限のため、ビジュアルモードでのスクロールは遅いかもしれない。ビジュアルモード でのシェルエスケープ、サスペンド(^Z)とレジューム、割り込み(^C)は依然ではまだ不具合が残っているかもしれない。
bowser.nintendo.co.jp や sphoygmomanometer.unl.edu というサイトは存在していない。
関連項目
ftp(1), ftpd(8), nslookup(1), archie(1), rcp(1), tftp(1).2.4.3 | NCEMRSoft |