doc/ja/man/man1/fetch.1
Jun Kuriyama f13dc54735 Catch up to 3.0-19980827-SNAP (3rd and last!)
Submitted by:	Kazuo Horikawa <k-horik@yk.rim.or.jp>
1998-10-27 14:33:18 +00:00

367 lines
8.3 KiB
Groff

.\" %Id: fetch.1,v 1.24 1998/09/20 00:01:26 jkh Exp %
.\" jpman %Id: fetch.1,v 1.4 1997/08/15 06:31:28 horikawa Stab %
.Dd July 2, 1996
.Dt FETCH 1
.Os FreeBSD 2.2
.Sh 名称
.Nm fetch
.Nd URL(Uniform Resource Locator)形式でのファイルの取得
.Sh 書式
.Nm fetch
.Op Fl MPabmnpqr
.Op Fl S Ar size
.Op Fl o Ar file
.Ar URL
.Op Ar ...
.Nm fetch
.Op Fl MPRmnpqr
.Op Fl S Ar size
.Op Fl o Ar file
.Op Fl c Ar dir
.Fl f Ar file
.Fl h Ar host
.Sh 解説
.Nm fetch
は、
.Tn FTP
もしくは
.Tn HTTP
プロトコルを使ってネットワークの遠隔サイトから、ファイルの転送を
行います。コマンドの最初の書式の
.Ar URL
は、
.Li http://site.domain/path/to/the/file
もしくは、
.Li ftp://site.domain/path/to/the/file
の形式をしています。
複製もしくはリンクされる(以下の
.Fl l
フラグを参照)ローカルでのファイル名を指定するために、
.Em file:/path/to/the/file
という URL 形式が使えます。後述の URL 文法を参照してください。
.Pp
コマンドの 2 番目の形式は、
ファイル名と遠隔ホスト名を
.Fl h
.Fl f
フラグで指定して、
.Tn FTP
プロトコルを使ってファイルを取得するために使われます。
.Pp
以下のオプションが使用可能です。
.Bl -tag -width Fl
.It Fl a
ソフト上での失敗の場合に自動的に転送を再試行します。
.It Fl b
.Tn TCP
プロトコルを正しく実装していない
.Tn HTTP
サーバのバグ対応を行います。
.It Fl c Ar dir
遠隔ホストの
.Ar dir
ディレクトリのファイルを取得します。
.It Fl f Ar file
遠隔ホストの
.Ar file
という名前のファイルを取得します
.It Fl h Ar host
ホスト名が
.Ar host
にあるファイルを取得します。
.It Fl l
目標が
.Ar file:/
形式のURLだった場合、目標を複製しようとするのではなく、
リンクを作成します。
.It Fl M
.It Fl m
ミラーモード: ファイルの変更時間を遠隔ホストの変更時間と同じに
設定します。ローカルホストにファイルが既に存在しサイズと
変更時間が同じである場合、転送は行われません。
.It Fl n
転送されるファイルの変更時間を保存せず、現在の時間を使います。
.It Fl o Ar file
出力ファイル名を
.Ar file
にします。
デフォルトでは、``パス名''が指定された URI から取り出され、その
ベースネームが出力ファイルの名前として使われます。
.Ar file
引数として
.Sq Li \&-
を与えると、結果は標準出力に出力されます。
.It Fl P
.It Fl p
.Tn FTP
プロトコルをパッシブモードで使います。これは、防火壁 (firewall)
を跨いだ場合に有効です。
.It Fl q
沈黙モード。端末に転送の進行状態を報告しません。
.It Fl R
転送が失敗もしくは不完全であった時でさえ、与えられたファイル名は
``大事にされ''、どんな状況下でもファイル名は消去されません.
.It Fl r
以前に中断された転送を再開します。
.It Fl S Ar bytes
.Tn FTP
もしくは
.Tn HTTP
のサーバに対してファイルサイズを報告するよう要求し、
本オプションにより指定される値と比較します。
合致しない場合、メッセージが表示され、ファイルは取得されません。
サーバがファイルサイズの報告をサポートしない場合、
本オプションは無視され、ともかくファイルは取得されます。
前もってファイルサイズが分かる場合、
不完全なファイルもしくは誤ったバージョンのファイルを
.Nm
がダウンロードするのを防ぐために有用です。
.It Fl t
別のバグがある
.Tn TCP
実装に対する対処を行います。
.It Fl T Ar second
タイムアウト時間を
.Ar second
秒に設定します。
ftp での転送に対しては
.Ev FTP_TIMEOUT
環境変数が、 http での転送に関しては
.Ev HTTP_TIMEOUT
環境変数が,設定されていた場合は、それを上書きします。
.It Fl v
冗長性を増加させます。
複数の
.Fl v
を指定することで、より情報が得られるようになります。
.El
.Pp
多くのオプションは、環境によってのみ制御されます
(これはバグです)。
.Sh URL 文法
.Nm
は、RFC1738 に記述されている
.Tn http
および
.Tn ftp
の URL を受け付けます。
.Tn ftp
の URL ではユーザ名とパスワードを指定可能であり、
.Li ftp://user:password@host/
という文法で指定します。
パスがユーザのホームディレクトリの相対指定ではなく、絶対指定の場合には、
パスを %2F で開始する必要があり、
.Li ftp://root:mypass@localhost/%2Fetc/passwd
のように指定します。
.Sh プロキシサーバ
防火壁の中の多くのサイトは、信用できるプロトコルで防火壁を通して
通信を行なうためにアプリケーションゲートウェイ( ``プロキシサーバ'' )
を利用します。
.Nm
プログラムは、プロキシサーバを使った
.Tn FTP
.Tn HTTP
プロトコルの両方を利用可能です。
.Tn FTP
プロキシサーバは
.Tn FTP
の要求だけを取り次ぎ、
.Tn HTTP
プロキシサーバは
.Tn FTP
.Tn HTTP
の両方の要求を取り次ぎます。
プロキシサーバは、環境変数
.Dq Va PROTO Ns Ev _PROXY
を定義することで設定されます。
ここで、
.Va PROTO
はプロトコルの名前で、英大文字で記述します。
環境変数の値には、ホスト名と必要ならばコロン (:) に続けてポート番号を
指定します。
.Pp
.Tn FTP
プロキシクライアントは、
.Do Va remoteuser Ns Li \&@ Ns Va remotehost
.Op Li \^@ Ns Va port
.Dc
という形式の ホスト名とポート番号を遠隔地のユーザ名として送ります。
.Tn HTTP
プロキシクライアントは、
.Tn HTTP
.Dq Li GET
要求を出した時に、単純に要求を出した元の URI を遠隔サーバに送ります。
HTTP プロキシによる認証は、いまはまだ実装されていません。
.Sh HTTP による認証
.Tn HTTP
プロトコルは、さまざまな種類の認証方法の提供を含んでいます。
現在、
.Nm fetch
がサポートしている方式は
.Dq basic
方式だけです。
この方法は、パケットの盗み見や人間が間に介在した攻撃にはセキュリティを
提供しません。
認証は、
.Ev HTTP_AUTH
.Ev HTTP_PROXY_AUTH
環境変数を設定することで可能となります。
両環境変数は、次のような同じ形式をしています。
空白で区切られたパラメータの設定リストからなり、個々の設定はコロンで
分けられたパラメータのリストからなります。最初の二つのパラメータはいつも
( 大文字でも小文字でも構わない ) 認証方法名と認証が行われる範囲です。
認証範囲が
.Sq Li \&*
の形式で指定されている時、他に指定されていない全ての範囲とみなされます。
.Pp
.Li basic
認証方式は、二つのオプションのパラメータを利用します。
一つ目はユーザ名で、 2 番目はそれに付けられたパスワードです。
環境でパスワードもしくは両方のパラメータが指定されていなく、
.Nm
の標準入力が端末である時には、
.Nm
は欠けているパラメータの入力をユーザにうながします。
したがって、ユーザが
.Dq Li jane
.Dq Li WallyWorld
範囲の認証で、パスワードが
.Dq Li QghiLx79
であるなら、彼女は
.Ev HTTP_AUTH
環境変数を以下のように設定します。
.Bl -enum -offset indent
.It
.Dq Li basic:WallyWorld:jane:QghiLx79
.It
.Dq Li basic:WallyWorld:jane
.It
.Dq Li basic:WallyWorld
.El
.Pp
.Nm
は欠けている情報が必要な場合は、尋ねてきます。
彼女は、認証範囲を
.Dq Li WallyWorld
と指定する代わりに、
.Dq Li \&*
と指定することで、どんな範囲でも認証を行うことを示せます。
これは、
.Dq Li basic:*
の様なもっとも一般的に使われる設定です。
この設定は、
.Nm
にどんな認証範囲であっても
.Li basic
認証を行わせることを指示します。
.Sh エラー
.Nm
は成功した時は 0 を返します。
また、失敗した場合には、
.Aq Pa sysexits.h
で定義される 0 でない値が返されます。
複数の URI が再試行のために与えられた時、
.Nm
は全てを試して、全て成功した場合だけ 0 を返します
(それ以外の場合は、最後の失敗のエラーを返します)。
.Sh 環境変数
.Bl -tag -width FTP_PASSIVE_MODE -offset indent
.It Ev FTP_TIMEOUT
.Tn FTP
接続を中断するまでの最大時間を秒で指定します。
.It Ev FTP_LOGIN
.Tn FTP
転送で使われるログイン名です。
デフォルトは ``anonymous'' が使われます。
.It Ev FTP_PASSIVE_MODE
パッシブモードで FTP を行います。
.It Ev FTP_PASSWORD
.Tn FTP
転送で使われるパスワードです。
デフォルトは
.Dq Va yourname Ns Li \&@ Ns Va yourhost
です。
.It Ev FTP_PROXY
.Tn FTP
を理解するプロキシサーバのアドレスを
.Do Va hostname Ns
.Op Li : Ns Va port
.Dc
の形式で与えます。
.It Ev HTTP_AUTH
.Tn HTTP
認証パラメータを定義します。
.It Ev HTTP_PROXY
.Tn HTTP
を理解するプロキシサーバのアドレスを
.Do Va hostname Ns
.Op Li : Ns Va port
.Dc
の形式で与えます。
.It Ev HTTP_PROXY_AUTH
.Tn HTTP
プロキシサーバのための認証パラメータを定義します。
.It Ev HTTP_TIMEOUT
.Tn HTTP
接続を中断するまでの最大時間を秒で指定します。
.Sh 関連項目
.Xr ftp 1 ,
.Xr tftp 1
.Sh 歴史
.Nm fetch
コマンドは
.Fx 2.1.5
から導入されました。
.Sh 作者
.Nm
のオリジナル実装は
.An Jean-Marc Zucconi
が行いました。
.Fx 2.2
のために、拡張を行ったのは
.An Garrett Wollman
です。
.Sh バグ
たくさんの環境変数とコマンドラインオプションがあります。
.Pp
.Fl a
オプションは、ある種類の
.Tn HTTP
の接続失敗のために実装されており、
.Tn FTP
の接続失敗のためではありません。
.Pp
.Tn HTTP
のために、
.Dq basic
認証モードだけが実装されています。
これは、ダイジェスト認証に置き換えられるべきものです。
.Pp
(
.Tn FreeBSD
以外の) 実装には、データが含まれるパケットに
.Dv SYN
.Dv FIN
の制御フラグが含まれている状況を正しく実装していないものがあります。
.Sq Fl t
フラグは後者に対する対処を行い、
.Sq Fl b
フラグは前者に対する対処を行います。
これらはサーバの
.Tn TCP
スタックのエラーですから、我々ができる最良の解はこれらの対処です。
正しいサーバとの通信の場合には、
.Fl t
および
.Fl b
を含まない最良の
.Tn HTTP
転送が実現されます。
(少ない返答の場合) ラウンドトリップ回数は最小の 2 回となり、
他の実装よりも 1 回少なくなります。