FTP(1C) — NEWS-OS Programmer’s Manual
名称
ftp − ARPANET ファイル転送プログラム
形式
ftp [ −v ] [ −d ] [ −i ] [ −n ] [ −g ] [ host ]
解説
ftp は ARPANET 標準ファイル転送プロトコルへのユーザインターフェースです。 このプログラムを使用することによって、ユーザはリモートネットワーク サイトとの間でファイルの転送を行うことができます。
ftp の通信相手のクライアントホストはコマンド行上で指定することができます。 これが指定された場合には ftp は即時にそのホストの FTP サーバへの接続を確立しようとします。 指定されない場合には、 ftp はコマンドインタープリタを開始し、 ユーザからの命令を待ちます。 ftp がユーザからのコマンドを待っている時には プロンプト ‘ftp> ’ が表示されます。 次のコマンドが ftp で使用できます。
! [ command [ args ] ]
ローカルマシンで会話型シェルを呼び出します。 引数がある場合には、最初の引数は直接実行するコマンドと見なされ、 残りの引数はそのコマンドの引数として扱われます。
$ macro-name [ args ]
macdef コマンドで定義されたマクロ macro-name を実行します。 引数は、メタキャラクタが展開されないまま マクロへ渡されます。
account [ passwd ]
ログインが成功した場合に、リソースへアクセスするためにリモートシステム が求める副次的なパスワードを与えます。 引数がない場合には、ユーザはエコー入力モード以外でアカウントパスワード の入力を促されます。
append local-file [ remote-file ]
ローカルファイルをリモートマシンのファイルに追加します。 remote-file が省略された場合には ローカルファイルの名前が ntrans または nmap の設定によって変更され、リモートファイル名として使用されます。 ファイル転送には type、 form、 mode、 structure の現在の設定が使用されます。
ascii ファイル転送の「タイプ」をネットワーク ASCII にセットします。 これはデフォルトのタイプです。
bell
各ファイル転送コマンドが完了するたびに、 ベルが鳴るようにします。
binary
ファイル転送の「タイプ」をバイナリイメージの転送をサポートするように セットします。
bye リモートサーバとの FTP セッションを終えて ftp を終了します。 エンドオブファイルもセッションと ftp を終了させます。
case
mget コマンドの実行時にリモートマシンのファイル名についての 大文字/小文字変換をオン/オフします。 case がオンになっている(デフォルトはオフ)時には、 すべての文字が大文字になっているリモートコンピュータのファイル名は、 小文字に変換されてローカルディレクトリに書き込まれます。
cd remote-directory
リモートマシンの作業ディレクトリを remote-directory に変更します。
cdup
リモートマシンの作業ディレクトリを現在のディレクトリから 親ディレクトリへ変更します。
close リモートサーバとの FTP セッションを終了させて コマンドインタープリタへ戻ります。 定義されているマクロがあれば消去されます。
cr
ASCII タイプでのファイルの検索時に復帰文字の除去処理 をオン/オフします。 ASCII タイプでのファイルの転送では レコードは復帰/改行シーケンスで区切られます。 cr がオンになっている(デフォルト)時には、 UNIX での改行文字だけというレコード区切り記号に合わせて このシーケンスから復帰文字が取り除かれます。 UNIX でないリモートシステム内には単一の改行を 含むことができます。 ASCII タイプの転送が行われる時、この改行は cr がオフになっている場合にだけ レコード区切り記号と区別されます。
delete remote-directory
リモートマシン上にあるファイル remote-file を削除します。
debug [ debug-value ]
デバッギングモードをオン/オフします。 debug-value は省略可能です。もし指定があれば この値はデバッギングレベルのセットに使用されます。 デバッギングがオンになっている時には ftp はリモートマシンへ送られる各コマンドを その前に文字列 --> を付けて表示します。
dir [ remote-directory ] [ local-file ]
ディレクトリ remote-directory のディレクトリ内容のリストを表示し、 指定があれば local-file に出力されます。 ディレクトリの指定がない場合には リモートマシンの現在の作業ディレクトリが使用されます。 ローカルファイルが指定されない場合、 または local-file が − である場合には端末に出力されます。
disconnect
close と同じ。
form format
ファイル転送の「形式」を format にセットします。 デフォルトの形式は file です。
get remote-file [ local-file ]
remote-file を検索し、その結果をローカルマシンへ格納します。 ローカルファイル名が指定してなければ リモートマシン上にあるものと同じ名前が付けられます。 その名前は 現在の case、 ntrans、 nmap の設定による変更に従います。 type、 form、 mode、 structure の現在の設定はファイルの転送中に使用されます。
glob
mdelete、 mget、 mput のファイル名の展開をオン/オフします。 glob でメタキャラクタの解釈を オフにした場合にはファイル名の引数は展開されず 文字どおりに解釈されます。 mput のメタキャラクタの解釈は csh(1) の場合と同様に行われます。 mdelete と mget の場合は 各リモートファイル名がリモートマシン上で別々に展開され、 リストはマージされません。 ディレクトリ名の展開は 普通のファイルの名前の展開とは異なることもあります。 つまり、 その結果は相手側のオペレーティングシステムと ftp サーバに依存しているからで、 ‘mls remote-files -’ を 実行することによって調べることができます。 注: mget と mput は サブツリーのファイルを含んだディレクトリ全体を 転送するためのものではありません。 これはサブツリーの tar(1) アーカイブをバイナリモードで転送することによって実現できます。
hash
各データブロックが転送されるごとのハッシュ記号 (#) の表示をオン/オフします。 データブロックのサイズは 1024 バイトです。
help [ command ]
command の意味に関する情報メッセージを表示します。 引数が与えられない場合には ftp は使用できるコマンドの一覧を表示します。
lcd [ directory ]
ローカルマシンの作業ディレクトリを変更します。 directory の指定がない場合にはそのユーザのホームディレクトリが使用されます。
ls [ remote-directory ] [ local-file ]
リモートマシン側のディレクトリ内容の簡単なリストを表示します。 remote-directory が指定されない場合には現在の作業ディレクトリが使用されます。 ローカルファイルの指定がない場合、 または local-file が - である場合には端末へ出力されます。
macdef macro-name
マクロを定義します。 行のそれ以降が、マクロ macro-name として格納されます。 空行(ファイル内の連続した復帰改行文字または端末から入力された復帰文字)は マクロ入力モードを終了させます。 定義できるマクロの数は 16、総文字数は 4096 までです。 close コマンドが実行されるまでマクロの定義は持続します。 マクロプロセッサは ‘$’ と ‘\’ を特別な文字として解釈します。 後ろに 1 つ以上の番号が付いた ‘$’ は マクロ呼び出しコマンド行上の対応する引数で置き換えられます。 後ろに ‘i’ が付いた ‘$’ は マクロプロセッサにマクロの実行が繰り返されることを伝えます。 最初のパスで ‘$i’ はマクロ呼び出しコマンド行にある最初の引数で置き換えられ、 2 回目のパスで ‘$i’ は 2 番目の引数で置き換えられ、 それ以後のパスでも ‘$i’ は同様に置き換えられます。 後ろに任意の文字が付けられた ‘\’ はその文字で置き換えられます。 ‘\’ は ‘$’ の特別な扱いを抑制するのに使用します。
mdelete [ remote-files ]
リモートマシン上の remote-files を削除します。
mdir remote-files local-file
複数のリモートファイルが指定できる点を除けば dir と同じです。 会話型のプロンプトモードがオンになっている場合には ftp はユーザに対して、最後の引数が mdir の出力を受け取るターゲットローカルファイルであることを 確認するように促します。
mget remote-files
リモートマシンの remote-files を展開し、 それによって作られた各ファイル名について get を 実行します。 ファイル名の展開の詳細については glob を 参照してください。 次に、結果として得られたファイル名は case、 ntrans、 nmap の設定に従って処理されます。 ファイルはローカル作業ディレクトリへ転送されます。 この作業ディレクトリは ‘lcd directory’ で 変更することができます。 新しいローカルディレクトリは ‘! mkdir directory’ で 作成することができます。
mkdir directory-name
リモートマシン上にディレクトリを作ります。
mls remote-files local-file
複数のリモートファイルが指定できる点を除けば ls と同じです。 会話型のプロンプトモードがオンになっている場合には ftp はユーザに対して最後の引数が mls の出力を受け取るターゲットローカルファイルであることを 確認するように促します。
mode [ mode-name ]
ファイル転送の「モード」を mode-name にセットします。 デフォルトのモードは stream モードです。
mput local-files
引数として与えられたローカルファイルの並びに含まれている ワイルドカードを展開し、 結果として得られた並び中の各ファイルに put を実行します。 ファイル名の展開の詳細については glob を 参照してください。 結果として得られたファイル名は ntrans および nmap の設定に従って処理されます。
nmap [ inpattern outpattern ]
ファイル名マッピングメカニズムを設定/解除します。 引数の指定がない場合には ファイル名マッピングメカニズムは解除されます。 引数の指定がある場合には mput コマンドとリモートターゲットファイル名を指定せずに発行された put コマンドの実行時にリモートファイル名がマッピングされます。 このコマンドは異なるファイル名規則や慣例のある UNIX でないリモートマシンへの接続を行うときに役立ちます。 マッピングは、 inpattern および outpattern でセットされたパターンに従って行われます。 inpattern は入ってくるファイル名(このファイル名は ntrans および case の設定に従って処理されたもの)のテンプレートです。 inpattern に ‘$1’、‘$2’ ... ‘$9’ というシーケンスを含むことによって テンプレートを変化させることができます。 この ‘$’ 文字の特別な扱いを抑制するには、‘\’ を使用します。 他のすべての文字は、そのまま文字どおりに扱われ nmap の inpattern の変数値を決めるために使用されます。 例えば、$1.$2 という inpattern が与えられ、リモートファイル名が mydata.data である場合には $1 の値は mydata になり、$2 の値は data になります。 outpattern は結果として得られるマップ後のファイル名を指定します。 ‘$1’、‘$2’ ... ‘$9’ というシーケンスは inpattern テンプレートから得られる値で置き換えられます。 シーケンス ‘$0’ は、もとのファイル名によって置き換えられます。 さらに シーケンス ‘[seq1,seq2]’ は seq1 がナル文字列でなければ seq1 によって置き換えられます。 seq1 がナル文字列である場合には seq2 によって置き換えられます。 例えば、 コマンド "nmap $1.$2.$3 [$1,$2].[$2,file]" は 入力ファイル名 myfile.data および myfile.data.old に対して 出力ファイル名 myfile.data を、入力ファイル名 myfile に対して myfile.file を、そして入力ファイル名 .myfile に対して myfile.myfile を作成します。 例えば、 コマンド "nmap $1 |sed "s/ ∗$//" > $1 のように outpattern にスペースを使用することができます。 ‘$’、‘[’、‘]’、‘,’ 文字の特別な扱いを抑制するためには、 ‘\’ 文字を使用します。
ntrans [ inchars [ outchars ] ]
ファイル名文字の変換メカニズムを設定/解除します。 引数の指定がない場合には ファイル名の文字変換メカニズムは解除されます。 引数が指定された場合には mput コマンドとリモートターゲットファイル名を指定せずに発行された put コマンドの実行でリモートファイル名の文字が変換されます。 また、 mget コマンドとローカルターゲットファイル名を指定せずに発行された get コマンドの実行でローカルファイル名の文字が変換されます。 このコマンドは異なるファイル名規則や慣例がある UNIX でないリモートマシン への接続を行う時に役立ちます。 inchars の文字に一致するファイル名の文字は対応する outchars の文字で置き換えられます。 inchars の文字の位置が outchars の長さより長い場合にはその文字はファイル名から削除されます。
open host [ port ]
指定された host の FTP サーバへの接続を確立します。 ポート番号(省略可能)を指定することができます。 この場合、 ftp はそのポートの FTP サーバへの接続を試みます。 auto-login オプションがオンになっている(デフォルト)場合、 ftp はユーザをその FTP サーバへ自動的にログインさせようとします(下記参照)。
prompt
会話型のプロンプトモードをオン/オフします。 会話型の入力方式では 複数のファイルの転送の際にユーザがファイルを 選択的に送受できます。 これがオフに切り替えられる(デフォルトはオン)と mget および mput はすべてのファイルを転送し、 mdelete はすべてのファイルを削除します。
proxy ftp-command
二次的な制御接続に対して ftp コマンドを実行します。 このコマンドを使用することによって 2 つのリモート ftp サーバ間でファイルを転送するために、 同時に 2 つの ftp サーバへの接続を確立することができます。 proxy の最初のコマンドは二次的な制御接続を確立する open でなければなりません。 二次的な接続で実行可能な他の ftp コマンドを知りたい場合には コマンド "proxy ?" を入力します。 proxy が前置きされたコマンドは次に述べるように異なった働きをします。 まず、 open は自動的ログインプロセスで新しいマクロは定義しません。 close は既にあるマクロの定義を消去しません。 get と mget は一次的な制御接続のホストから 二次的な制御接続のホストへ、ファイルを転送します。 put、 mput、 append は 二次的な制御接続のホストから一次的な制御接続のホストへ ファイルを転送します。 サードパーティのファイル転送は二次的な制御接続の サーバによる ftp プロトコルの PASV コマンドのサポートに依存します。
put local-file [ remote-file ]
リモートマシンにローカルファイルを送ります。 remote-file の指定がない場合にはリモートファイル名には ntrans または nmap の設定に従って処理が行われた ローカルファイル名が使用されます。 ファイル転送では type、 form、 mode、 structure の現在の設定が使用されます。
pwd リモートマシン上の現在の作業ディレクトリの名前を 表示します。
quit
bye と同じ。
quote arg1 arg2 ...
指定された引数がそのままの形でリモート FTP サーバへ送られます。
recv remote-file [ local-file ]
get と同じ。
remotehelp [ command-name ]
リモート FTP サーバからのヘルプを要求します。 command-name が指定された場合にはそのコマンドがサーバへ与えられます。
rename [ from to ]
リモートマシン上のファイル from を to にリネームします。
reset 応答待ちキューをクリアします。 このコマンドはリモート ftp サーバとのコマンド/応答シーケンスを 再同期させます。 これはリモートサーバによって ftp プロトコルが混乱したときに必要になります。
rmdir directory-name
リモートマシン上のディレクトリを削除します。
runique
一意なファイル名を用いて、ローカルシステム上にファイルを 格納する処理をオン/オフします。 get または mget コマンドでターゲットローカルファイル名と同じ名前を 持つファイルが既に存在している場合には ".1" がその名前に付け加えられます。 この結果得られた名前が既存のファイルと一致する場合には、 ".2" がもとの名前に付け加えられます。 この処理が ".99" まで続いた場合には エラーメッセージが表示され 転送は行われません。 生成された一意なファイル名は報告されます。 runique は、シェルコマンドから生成されるローカルファイルには影響を およぼさないことに注意してください(下記参照)。 デフォルトはオフです。
send local-file [ remote-file ]
put と同じです。
sendport
PORT コマンドの使用をオン/オフします。 デフォルトでは ftp は 各データ転送のために接続を確立する時、 PORT コマンドを使用しようとします。 PORT コマンドを使用することによって 複数のファイルの転送を行う際に遅延を 抑制することができます。 PORT コマンドが失敗した場合には ftp はデフォルトのデータポートを使用します。 PORT コマンドの使用がオフになっている時には 各データ転送で PORT コマンドは使われません。 これは PORT コマンドを無視はするが コマンドが受け付けられたことを不当に示す FTP システムに対しては役に立ちます。
status
ftp の現在の状態を表示します。
struct [ struct-name ]
ファイル転送構造体 structure を struct-name にセットします。 デフォルトでは stream 構造体が使用されます。
sunique
一意なファイル名を用いた リモートマシン上へのファイルの格納をオン/オフします。 リモート ftp サーバは ftp プロトコルの STOU コマンドを サポートしていなければなりません。 リモートサーバは一意な名前を報告します。 デフォルトはオフです。
tenex ファイル転送の「タイプ」を TENEX マシンとの通信に必要なタイプに セットします。
trace パケットのトレースをオン/オフします。
type [ type-name ]
ファイル転送の「タイプ」を type-name にセットします。 タイプの指定がない場合には、現在のタイプが表示されます。 デフォルトのタイプは、ネットワーク ASCII です。
user user-name [ password ] [ account ]
ユーザをリモート FTP サーバに知らせます。 パスワードの指定がなくかつサーバがそれを必要する場合には ftp は(ローカルエコーをオフにしてから)ユーザは入力を促されます。 アカウントパスワードの指定がなく、FTP サーバがそれを必要とする場合には ユーザは入力を促されます。 アカウントパスワードの指定があり リモートサーバがログインでそれを必要としない場合、 ログインシーケンスが完了してからリモートサーバへアカウントコマンドが渡されます。 「自動ログイン」を抑制した状態で ftp が呼び出されない限りこのプロセスは、 FTP サーバへの接続開始時に実行されます。
verbose
冗長モードをオン/オフします。 冗長モードにある時には FTP サーバからのすべての応答がユーザに表示されます。 さらにこのモードがオンになっていると、 ファイル転送が完了した時に転送の効率に関する統計が報告されます。 デフォルトはオンです。
? [ command ]
help と同じ。
スペースの埋め込まれたコマンド引数は 二重引用符(")で囲むことができます。
ファイル転送の中止
ファイル転送を中止するには 端末の割り込みキー(普通は control-C)を使用します。 送信中の転送は即時に停止します。 受信中の転送は リモートサーバへ ftp プロトコルの ABOR コマンドを 送ることによって停止し それ以降に受け取られるデータは破棄されます。 これが行われる速度はリモートサーバが ABOR 処理をサポート しているかどうかに依存します。 リモートサーバが ABOR コマンドをサポートしていない場合には、 リモートサーバが要求されたファイルの送信を完了するまで プロンプト ‘ftp> ’ は表示されません。
端末の割り込みキーシーケンスは、 ftp がローカル処理を完了した時には無視され、 リモートサーバからの応答を待ちます。 このモードでの大幅な遅延は 前述の ABOR 処理が原因となっているか または ftp プロトコルの混乱も含め リモートサーバによる予期しない作用に原因があります。 遅延がリモートサーバの予期しない作用に起因している場合には、 ローカル ftp プログラムを手動で強制終了させなければなりません。
ファイル名規則
ftp コマンドへの引数として指定されたファイルは 次の規則に従って処理されます。
1) ファイル名 − が指定された場合には stdin (読み出しのため)または stdout (書き込みのため)が使用されます。
2) ファイル名の先頭文字が | である場合にはその引数の残りの部分がシェルコマンドとして解釈されます。 次に ftp は引数付きの popen(3) を使用してシェルを fork し、 stdout(標準出力)/stdin(標準入力)から読み出し/書き込みします。 シェルコマンドにスペースが含まれている場合には 引数は引用符で囲む必要があります(例えば、"| ls −lt")。 例えば、"dir | more" のような使い方は特に有用です。
3) 上記のチェックができない場合には、 メタキャラクタの解釈がオンになっていれば csh(1) で使用される規則に従ってローカルファイル名が展開されます。 glob コマンドを 参照してください。 ftp コマンドが単一のローカルファイルを 期待するものである場合には (例えば、 put) メタキャラクタ操作によって生成された最初のファイル名が使用されます。
4) ローカルファイル名が指定されていない mget コマンドと get コマンドの場合、 ローカルファイル名はリモートファイル名になります。 このファイル名は case、 ntrans、 または nmap の設定によって変更することができます。 結果として得られるファイル名は runique がオンになっていればさらに変更されます。
5) mput コマンドと リモートファイル名が指定されていない put コマンドの場合、 リモートファイル名はローカルファイル名になります。 このファイル名は ntrans または nmap の設定によって変更することができます。 結果として得られるファイル名は、 sunique がオンになっていればリモートサーバによってさらに変更されます。
ファイル転送パラメータ
FTP の仕様では、 ファイル転送に影響をおよぼす多くのパラメータが指定されます。 「タイプ」は ascii、 image(バイナリ)、 ebcdic、 ‘local byte size’ (おもに PDP-10’s と PDP-20’s の場合)のうちの 1 つです。 ftp は ASCII およびイメージタイプでのファイル転送に加え、 tenex モードの転送用にローカルバイトサイズ 8 をサポートしています。
ftp は残りのファイル転送パラメータ mode、 form、 structure ではデフォルト値だけをサポートしています。
オプション
オプションは、コマンド行上か またはコマンドインタープリタに対して指定することができます。
−v (冗長モードオン)オプションは ftp にデータ転送に関する統計と共にリモートサーバからのすべての応答を 表示させます。
−n オプションは 接続開始時に ftp が “自動ログイン” を行うのを抑制します。 自動ログインがオンになっている場合には、 ftp はリモートマシンに関するアカウントを記述しているエントリがあるかどうか、 そのユーザのホームディレクトリにある .netrc (下記参照)ファイルを チェックします。 エントリが存在していない場合には ftp はリモートマシン上のログイン名 (デフォルトはローカルマシン上でのユーザの識別)の入力を促し、 もし必要があればログインに用いられるパスワードとアカウントの入力も促します。
−i オプションは 複数のファイルの転送における会話型のプロンプトモードをオフにします。
−d オプションはデバッギングをオンにします。
−g オプションはファイル名中のメタキャラクタの解釈をオフにします。
.netrc ファイル
.netrc ファイルには 自動ログインプロセスで使用されるログインおよび初期設定情報が収められています。 このファイルはユーザのホームディレクトリにあります。 次のトークンが使用できます。 これらはスペース、タブ、または改行で区切ることができます。
machine name
リモートマシン名を与えます。 自動ログインプロセスは、 .netrc ファイルをサーチして ftp コマンド行または open コマンドの引数として、 指定されたリモートマシンに一致する machine トークンを探します。 一致するものが見つかるとそれ以降の .netrc トークンが処理され、 エンドオブファイルに到達したときまたは別の machine トークンが見つかった時に停止します。
login name
リモートマシンのユーザを与えます。 このトークンがあると自動ログインプロセスは指定された名前を使用して、 ログインを開始します。
password string
パスワードを与えます。 このトークンがあると リモートサーバが自動ログインプロセスの一部としてパスワードを 必要とする場合に、 自動ログインプロセスは指定された文字列を与えます。 このトークンが ファイル内にある場合には その .netrc がユーザ以外の誰かによって読むことができるようになっていると、 ftp は自動ログインプロセスを中止することに注意してください。
account string
アカウントパスワードを与えます。 このトークンがあるとリモートサーバが課金パスワードを 必要とする場合に、自動ログインプロセスが指定された string を与え、 またはそうではない場合に自動ログインプロセスは ACCT コマンドを発行します。
macdef name
マクロを定義します。 このトークンの機能は ftp の macdef コマンドの機能に似ています。 マクロは指定された名前を用いて定義されます。 その内容は .netrc 内の次の行から始まり空行(改行文字の連続)が見つかるまで続きます。 init という名前のマクロが定義された場合には、 それは自動ログインプロセスの最後のステップとして自動的に実行されます。
バグ
多くのコマンドが正しく実行されるかどうかは リモートサーバが正しい動作をするかどうかによります。
NEWS-OS 2.x (4.2BSD) の ASCII モードでの転送コードにあった 復帰改行の取り扱いに関する間違いは訂正されています。 この訂正によって ASCII タイプを 使用している NEWS-OS 2.x (4.2BSD) のサーバとの バイナリファイルの転送が正しく行われないこともあります。 バイナリイメージを使用することによってこの問題を回避してください。
NEWS-OSRelease 4.2.1R