FTP(1) FreeBSD 一般コマンドマニュアル FTP(1)
名称
ftp − インターネットファイル転送プログラム |
書式
ftp [−46AadefginpRtvV] [−N netrc] [−o output] [−P port] [−q quittime] [−r retry] [ |
−T dir,max[,inc]] [ [ user@]host [port]] [ [user@]host:[path][/]] [ file:///path] [ ftp://[ user[:password]@]host[ :port]/path[/][;type=X]] [ http://[ user[:password]@]host[ :port]/path] [...]
ftp −u URL file [...] 解説 |
ftp は、インターネット標準の File Transfer Protocol (ファイル転送プロトコ ル)を用いてファイル転送を実現するためのコマンドです。本コマンドは、リモー トネットワークにあるサイトとの間でファイルを転送する手段をユーザに提供し ます。 書式の後ろから 5 個の引数では、 HTTP または FTP プロトコルを使うか、直接 コピーするかにより、ファイルをカレントディレクトリに取得します。この機能 はスクリプト用に最適です。詳細な情報は、以下の ファイルの自動取得を参照し て下さい。 オプションは、コマンドライン上で指定するか、コマンドインタプリタに対し指 定できます。 |
−4
ftp に IPv4 アドレスのみを使用するよう強制します。 −6 −A −a −d −e −f −g −i −n −N netrc −o output −p −P port −r wait −q quittime −R −t −T
direction,maximum[,increment] −u URL file [...] −v −V ftp は、通信相手をコマンドラインで指定することが出来ます。通信相手をコマ ンドラインで指定した場合、 ftp は即座に指定したリモートマシンの FTP サー バプログラムとの接続を試みます。それ以外の場合、 ftp は内部のコマンドイン タプリタに入り、ユーザからのコマンド入力を待ちます。 ftp がユーザからのコ マンド入力待ち状態にあるときは、 ‘ftp>’ というプロンプトを出力します。本 状態の時には、 ftp は以下のコマンドを受け付けます。 ! [command [args]] $ macro-name [args] account [passwd] append local-file [remote-file] ascii bell binary bye case cd remote-directory cdup chmod mode remote-file close cr debug [debug-value] delete remote-file dir [remote-path [local-file]] disconnect edit epsv4 exit features fget localfile form format ftp host [port] gate [host [port]] get remote-file [local-file] glob hash [size] help [command] idle [seconds] image lcd [directory] less file lpage local-file lpwd ls [remote-path [local-file]] macdef macro-name mdelete [remote-files] mdir remote-files local-file mget remote-files mkdir directory-name mls remote-files local-file mlsd [remote-path] mlst [remote-path] mode mode-name modtime remote-file more file mput local-files mreget remote-files msend local-files newer remote-file [local-file] nlist [remote-path
[local-file]] nmap [inpattern outpattern] 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] page file passive [auto] pdir [remote-path] pls [remote-path] pmlsd [remote-path] preserve progress prompt プロンプトモードがオンの時には、プロンプトにおいて以下のコマ ンドが使用できます。 a n p q y ? これ以外の応答は現在のファイルに対する ‘yes’ として扱われま す。 proxy ftp-command put local-file [remote-file] pwd quit quote arg1 arg2 ... rate direction [maximum
[increment]] direction は、次のうちの 1 つです。 転送実行中に以下のシグナルを受けるたびに、最大転送速度 maximum は increment バイト毎秒 (デフォルトは 1024) だけ増減 されます。シグナルは次の通りです。 SIGUSR1 SIGUSR2 maximum が与えられない場合、現在の制限速度値が表示されます。 注意: ascii モード転送については、 rate はまだ実装されていま せん。 rcvbuf size recv remote-file [local-file] reget remote-file
[local-file] remopts command
[command-options] rename [from [to]] reset restart marker rhelp [command-name] rmdir directory-name rstatus [remote-file] runique send local-file [remote-file] sendport set [option value] anonpass ftp_proxy http_proxy no_proxy pager prompt rprompt site arg1 arg2 ... size remote-file sndbuf size status struct struct-name sunique system tenex throttle trace type [type-name] umask [newmask] unset option usage command user user-name [password
[account]] verbose xferbuf size ? [command] スペースを含むコマンドの引数は、‘"’ マークで括って下さい。 設定を切り替えるコマンドでは、設定を指定するために明示的に on か off を引 数として指定できます。 引数としてバイト数を取るコマンド (例えば、 hash,
rate, xferbuf など) は、
その引数の後置オプションをサポートしており、引数の解釈を変えることができ
ます。サポートされる後置オプションは次のものです。 ftp が転送中にシグナル SIGINFO ( stty(1) の引数 ‘‘status’’ を参照) か、 SIGQUIT を受けると、その時点での転送レートの統計情報が終了時の標準的な フォーマットと同じ形式で標準エラー出力に書き出されます。 ファイルの自動取得 |
標準的なコマンドに加えて、このバージョンの ftp は自動取得の機能をサポート します。単にホスト名/ファイルのリストをコマンドラインで渡すだけで、自動取 得が有効になります。 自動取得の要素として有効な構文は、以下の形式です。 |
[user@]host:[path][/]
‘‘古典的な’’ FTP の形式。 path に glob 文字が含まれており、ファイル名展開 (globbing) が有効に なっている場合 ( glob を参照)、 ‘mget path’ と同等の処理が行なわれ ます。 path のディレクトリ要素に glob 文字が含まれていない場合、 path の ベースネーム (basename(1) を参照) を名前として、ファイルをローカル のカレントディレクトリに格納します。そうでない場合、リモートの名前 全体を、ローカルのルートディレクトリから相対的に使用します。 ftp://[ ‘;type=A’ もしくは ‘;type=I’ のサフィックスが指定されると、転送タイ プはそれぞれ、 ASCII または binary になります。デフォルト転送タイプ は binary です。 RFC 1738 に準拠するために、 ftp は ‘‘ftp://’’ auto-fetch URL の path 部分を次のように解釈します: • host[ • path は、 ‘/’ で分離される、名前部分のリストであると解釈されま す。最後以外の各部分に対し、 ftp は cd に相当するコマンドを実行 します。最後のパス部分に対しては、 ftp は get に相当するコマン ドを実行します。 • 空の名前部分、すなわち path 中の ‘//’ や path の先頭の ‘/’ は、 ディレクトリ名無しの cd コマンドを実行させます。これは有用では ないでしょう。 • パス部分の ‘%XX’ は、 XX が 16 進数文字コードであるとしてデコー ドされます。これは、 path が部分に分けられた後に実行されます が、各部分が cd や get のコマンドに相当する処理で使用される前に 実行されます。しばしば使用されるコードは、 ‘%2F’ (これは ‘/’ を 表現します) や ‘%7E’ (これは ‘~’ を表現します) です。 上記の解釈の結果、次のようになります: • パスは、指定されたユーザもしくは ‘anonymous’ ユーザのデフォルト ログインディレクトリからの相対指定として解釈されます。 / ディレ クトリを要求する場合、パス先頭に ‘‘%2F’’ を使用して下さい。ユー ザのホームディレクトリを要求する場合 (そして、リモートサーバが その構文をサポートしている場合)、パス先頭に ‘‘%7Euser/’’ を使用 して下さい。例えば、パスワード ‘mypass’ を持つユーザ名 ‘myname’ として、 ‘localhost’ から /etc/motd を取得するには、 ‘‘ftp://myname:mypass@localhost/%2fetc/motd’’ • 正確な cd および get のコマンドの使用は、どこに ‘/’ を使い、ど こに ‘%2F’ (または ‘%2f’) を使うかで制御可能です。例えば、次の URL は指定されるコマンドに対応します: ftp://host/dir1/dir2/file ftp://host/%2Fdir1/dir2/file ftp://host/dir1%2Fdir2/file ftp://host/%2Fdir1%2Fdir2/file ftp://host/dir1%2Fdir2%2Ffile ftp://host/%2Fdir1%2Fdir2%2Ffile • cd に相当するコマンドで使用される各中間ディレクトリに対し、適切 なアクセスパーミッションが必要です。 http://[ file:///path 上で特に指定がない限り、かつ、 −o output が指定されていない場合、ファイル はカレントディレクトリに path の basename(1) として格納されます。 古典的な形式または FTP URL形式で最後に ‘/’ がある場合、もしくは path 要素 が空の場合、 ftp はそのサイトに接続して与えられたパスのディレクトリに cd し、以降の入力を受け付けるために対話モードに入ります。これは set ftp_proxy が使用されている場合には動作しません。 直接 HTTP 転送では HTTP 1.1 を使用します。プロキシ経由の FTP, HTTP 転送で は、HTTP 1.0 を使用します。 −R が指定されている場合、 FTP, HTTP プロキシを介さない自動取得全てが再び 開始されます。 FTP に対しては、これは get でなく reget を使い実装されてい ます。 HTTP に対しては、これは、 HTTP/1.1 のディレクティブ ‘Range: bytes=’ を用いて実装されています。 WWW 認証またはプロキシ WWW 認証が必要な場合、ユーザに対し認証のためのユー ザ名、パスワードの入力を促すプロンプトが出力されます。 URL にIPv6 の数値アドレスを指定した場合、例えば、 ‘‘ftp://[::1]:21/’’ の ように、アドレスを角括弧で囲う必要があります。これは IPv6 の数値アドレス で使用するコロンが、ポート番号を区切るセパレータでもあるためです。 ファイル転送の中止 |
ファイル転送を中断するためには、端末のインタラプトキー (通常は Ctrl-C) を 打鍵してください。データ送信はただちに停止します。データ受信は、 FTP プロ トコルの ABOR コマンドをリモートサーバに送ることで、サーバからのデータ送 信が止められます。そしてそれ以降の受信データは捨てられます。これが行われ る速度は、リモートサーバが ABOR コマンドをサポートする方式に依存します。 リモートサーバが ABOR コマンドをサポートしていない時には、要求したファイ ルをリモートサーバが送り終るまでプロンプトは現れません。 ftp が ABOR 処理中のリモートサーバからの応答を待っている状態にある間に、 端末の割り込みキーシーケンスが使用された場合、コネクションは閉じられま す。これは古くからの動作 (この状態では端末の割り込みは無視されます) とは 異なりますが、こちらの方がより便利と考えてのことです。 |
ファイル名の規則
ftp コマンドの引数として指定されたファイル名は、以下の規則で処理されま す。 |
1. ファイル名として ‘−’ が指定された場合、入力ファイル名の場合には標準入力 stdin が、出力ファイル名の場合には標準出力 stdout が使用されます。
2. ファイル名の先頭の文字が ‘|’ の場合には、その後に指定された文字列は すべてシェルコマンドと解釈されます。 ftp は与えられた引数をつけて popen(3) を用いてシェルを fork し、標準出力から (標準入力へ) 読み出 し (書き込み) ます。シェルコマンドにスペースが含まれている時には引数 は引用符で囲まれなければなりません。 (例: ‘‘"| ls −lt"’’ ) 特に有用 な例としては ‘‘dir "" |more’’ があります。 3. 上記のチェックにひっかからず、‘‘globbing’’ が有効になっている場合、 ローカルファイル名は csh(1) のファイル名展開規則にしたがって展開され ます。 (詳細は glob コマンドを参照) ただし、 ftp のコマンドが 1 つの ファイル名しか必要としない場合 (例えば put) は、ファイル名展開で生成 された最初のファイル名だけが使用されます。 4. mget コマンドと get コマンドにおいてローカルファイル名が指定されない 場合、ローカルファイル名はリモートファイル名と同一になります。ただ し、これらのファイル名は case, ntrans, nmap の設定によって変わること もあります。結果として得られたファイル名は、 runique が設定されてい ればさらに変わるかもしれません。 5. mput コマンドと put コマンドにおいてリモートファイル名が指定されない 場合、リモートファイル名はローカルファイル名と同一になります。ただ し、これらのファイル名は ntrans, nmap の設定によって変わることもあり ます。結果として得られたファイル名は、 sunique が設定されていればリ モートサーバによってさらに変えられる可能性があります。 ファイル転送パラメータ |
FTP の仕様にはファイル転送時に影響を及ぼす多くのパラメータが規定されてい ます。 type は、 ‘‘ascii’’, ‘‘image’’ (binary), ‘‘ebcdic’’, ‘‘local byte size’’ (ほとんど PDP-10 および PDP-20 のためのものです) のうちの 1 個が指 定可能です。 ftp は、ascii と image のタイプを指定可能なのに加えて、 tenex モードの転送を指定することによりローカルバイトサイズ 8 を指定するこ とが可能です。 ftp では、他の mode, form, struct のパラメータではデフォルト値だけが使用 可能です。 |
.netrc ファイル
.netrc ファイルは、自動ログイン処理のためのログイン情報および初期設定情報 を記述します。 −N netrc オプションで上書きしない限り、かつ、環境変数 NETRC で指定しない限り、 .netrc ファイルは、ユーザのホームディレクトリに 置きます。 .netrc では以下のトークンが解釈されます。これらはスペース、タ ブ、改行文字のいずれかによって分割されます。 |
machine name
リモートマシン名 name を定義します。自動ログイン処理は、 .netrc ファイル中を探し、 ftp のコマンドラインもしくは open コマンドの 引数として指定されたリモートマシンに一致する machine トークンを 探します。一致するものがあった場合は、その後に続く .netrc トー クンが処理され、その処理はファイル最後尾に行き着くか他の machine トークンまたは default トークンに出くわすまで続きます。 default default login anonymous password user@site のように使用されます。本エントリによって .netrc に指定の無いマ シンに自動的に anonymous FTP ログインを試みるようになります。自 動ログインを無効にするために、 −n フラグを用いてこの処理を上書 きすることができます。 login name password string account string macdef name default が、空行の後に続きます。 |
コマンドラインの編集機能
ftp は editline(3) ライブラリを使った対話的なコマンドラインの編集をサポー トします。これは edit コマンドによって有効になり、そして入力が tty からの 場合はデフォルトで有効になっています。カーソルキーで以前の行を呼び出して 編集できます。そして他にも GNU Emacs スタイルの編集用のキーが使えます。 editline(3) ライブラリは .editrc ファイルで設定できます - より詳しくは editrc(5) を参照して下さい。 ftp には、文脈に依存したコマンドとファイル名の補完 (リモートファイルの補 完を含む) 機能を提供するための追加のキー割り当てが用意されています。これ を使うためには editline(3) の ftp-complete コマンドにキーを割り当てて下さ い。これはデフォルトで TAB キーに割り当てられています。 |
コマンドラインプロンプト
デフォルトでは、 ftp は ‘‘ftp> ’’ のコマンドラインプロンプトをユーザに表 示します。 set prompt コマンドを使うことでこれを変更できます。 set rprompt コマンドにより、スクリーンの右端 (コマンド入力の後) にプロン プトを表示させることもできます。 次の書式文字列は、与えられた情報で置き換えられます。 |
%/
リモート側のカレントディレクトリ。 %c[[ %M %m %n %% 環境変数 |
ftp は、以下の環境変数を使用します。 |
FTPANONPASS
anonymous FTP 転送の際に送付するパスワード。デフォルトは、 ‘‘‘whoami‘@’’ です。 FTPMODE active auto gate passive FTPPROMPT FTPRPROMPT FTPSERVER FTPSERVERPORT FTPUSERAGENT HOME NETRC PAGER SHELL ftp_proxy 注意: 本環境変数はインタラクティブセッションでは使われませ ん。コマンド行での取得のためだけのものです。 http_proxy ftp_proxy, http_proxy におけるユーザ名、パスワードの用法 は、 ( lynx(1) など) それを使う他のプログラムとは互換性が ないかもしれないことに注意して下さい。 注意: 本環境変数はインタラクティブセッションでは使われませ ん。コマンド行での取得のためだけのものです。 no_proxy 拡張パッシブモードとファイアウォール |
ファイアウォールの設定によっては、 ftp は拡張パッシブモードが使えません。 単なる ls コマンドが、 |
229 Entering Extended Passive Mode (|||58551|) |
といったメッセージを表示した後にハングしたように見える場合には、 epsv4 off として拡張パッシブモードを無効化する必要があります。どのようにこれを 自動化するかについては、前述の .netrc ファイル節を参照してください。 |
関連項目
規格
ftp は、以下の標準に準拠しているつもりです。 RFC 959, RFC 1123, RFC 1738, RFC 2068, RFC 2389, RFC 2428, RFC 2732, draft-ietf-ftpext-mlst-11 |
歴史
ftp コマンドは 4.2BSD で現れました。 コマンドラインの編集、文脈に依存したコマンドとファイルの補完、進行状況を 表す棒グラフ、ファイルや URL の自動取得、更新時刻の保存、標準 BSD の ftp に対するその他の拡張などといった多様な機能は、 Luke Mewburn 〈lukem@NetBSD.org〉 が、 NetBSD 1.3 とそれ以後のリリースで実装しました。 IPv6 サポートは WIDE/KAME プロジェクトが追加しました (が、NetBSD 以外で の本プログラムのバージョン全てでこの機能が存在するとは限りません。これ は、オペレーティングシステムが IPv6 をサポートする際に、 KAME と類似のや りかたを取っているかどうかに依存します)。 |
バグ
多くのコマンド動作が正しいかどうかは、リモートサーバの動作が適切かどうか に依存します。 4.2BSD の ascii モードでの転送時の復帰文字の取り扱いのエラーは訂正されて います。この訂正の結果として、 4.2BSD のサーバとの間でバイナリファイルを ascii タイプを使用して転送した時に不正転送をひき起こすことがあります。こ の問題を回避するためにはバイナリモードを用いてファイル転送をして下さい。 ftp は、IPv4 マップドアドレス ( |
::ffff:10.1.1.1 のような形式の IPv6アドレス) の全てが AF_INET ソケットで扱うことができる IPv4 の宛先を表していると想定しています。しかし、IPv6 の設定によっては、この想定が正しくないこともあります。そのような環境では、IPv4 マップドアドレスは AF_INET6 ソケットに直接渡さなければなりません。例えば、あるサイトが IPv6-to-IPv4 変換として SIIT トランスレータを使用しているとします。このとき、 ftp はこの設定をサポートすることができません。 FreeBSD 10.0 December 19, 2003 FreeBSD 10.0