GNU Wgetは,World Wide Webから,HTTP (Hyper Text Transfer Protocol) とFTP (File Transfer Protocol)という,2つの最も広範囲で使用されるイ ンターネットプロトコルを使用してファイルを回収する,自由に利用可能なネッ トワークユーティリティです.それには,ダウンロードをより容易にする多くの 便利な特徴があり,それらは以下の通りです.
norobots
の慣習を理解します.
REST
と,HTTP
のRange
を使用して,中断されたポイントからダウンロードを再開しよう
とします.
.wgetrc
(see Startup File)を通じて行いま
す.Wgetは,サイト設定のため,グローバルなスタートアップファイル
(デフォルトで/usr/local/etc/wgetrc
)で定義可能です.
デフォルトで,Wgetは呼び出しが非常に簡単です.基本的な構文は以下の通りで す.
wget [option]... [URL]...
Wgetは,コマンドラインで指定された全てのURLを,単にダウンロードしま す.URLは,以下で定義されるようなUniform Resource Locatorで す.
しかし,Wgetのデフォルトパラメータをいくつか変更したいかもしれません.そ
うするために2つの方法が可能で,永久的に適切なコマンドを.wgetrc
(see Startup File)に追加したり,コマンドラインで指定したりできます.
URLは,Uniform Resource Locatorの省略です.uniform resource locatorはインターネットで利用可能なリソースに対する小さな文字列表示です. WgetはURL構文をRFC1738に従って理解します.これは,最も広く使用 されている形式です(角カッコはオプション部分を意味します).
http://host[:port]/directory/file ftp://host[:port]/directory/file
ユーザ名とパスワードをURLに符号化できます.
ftp://user:password@host/path http://user:password@host/path
userまたはpasswordのどちらか,または両方とも無くても構いませ
ん.HTTPユーザ名やパスワードのどちらか一方を抜いた場合,認証は送ら
れません.FTPユーザ名を抜いた場合,anonymous
が使用されます.
FTPパスワードを抜いた場合,電子メールのアドレスがデフォルトパスワー
ドとして提供されます.1
URLで安全ではない符号化を%xy
として可能で,xy
は文字の
ASCII値の16進の表現です.共通の安全でない文字は,%
(%25
として引用),:
(%3A
として引用),そして@
(%40
として引用)を含みます.安全でない文字の包括的なリストは,
RFC1738を参照してください.
Wgetは,FTP URLのtype
の特徴もサポートします.デフォルト
で,FTPドキュメントはバイナリモードで回収(type i
)し,それは
ダウンロードで変更されないことを意味します.その他の便利なモードは
a
(ASCII)モードで,それは異なるオペレーティングシステムの間
で行の分離文字を変換し,そしてそれは,テキストファイルで役に立ちます.こ
こに例があります.
ftp://host/directory/file;type=a
歴史的(ヒステリック?)な理由とそれらが広範囲に広がっているため,URL 指定の2つの選択する変数もサポートされます.
FTP-only syntax (NcFTP
でサポートされた):
host:/dir/file
HTTP-only syntax (Netscape
で導入された):
host[:port]/dir/file
これらの2つの選択される形式は反対され,将来のサポートはやめる可能性があ ります.
これらの表記の違いを理解できなかったり,その使い方を知らない場合,
Lynx
やNetscape
のような,好みのブラウザで使用する,明白な普
通の書式を使用してください.
Wgetは,引数を処理するためGNU getoptを使用しているので,全てのオプション は短い形式と長い形式があります.長いオプションは覚えやすくより便利ですが, 入力に時間がかかります.異なるオプションスタイルを自由に混ぜて使用したり, コマンドライン引数の後にオプションを指定したりできます.このため,以下の ように書くことができます.
wget -r --tries=10 http://fly.cc.fer.hr/ -o log
オプションを受け入れる引数と引数の間のスペースは省略できます.-o
log
の代わりに-olog
と書くことができます.
引数を要求しないいくつかのオプションを,以下のようにまとめておくことがで きます.
wget -drc URL
これは,以下と完全に等しくなります.
wget -d -r -c URL
オプションは引数の後に指定できるので,それらは--
で終端できます.
そのため,以下ではURL -x
をダウンロードしようとし,log
に失敗を報告します.
wget -o log -- -x
カンマでの分離を受け入れるオプションは,空のリストの指定はその値をクリア
する慣習を全て考慮して,リストアップします.これで,.wgetrc
の設定
をクリアにすることが便利になります.例えば,.wgetrc
が
exclude_directories
を/cgi-bin
に設定する場合,以下の例は最
初にリセットし,それを除外するものとして/~nobody
と
/~somebody
に設定します..wgetrc
(see Wgetrc Syntax)の
リストをクリアにすることもできます.
wget -X '' -X /~nobody,/~somebody
-V
--version
-h
--help
-b
--background
-o
で指定しない場合,出力はwget-log
にリダイレクトされます.
-e command
--execute command
.wgetrc
(see Startup File)の一部のように,commandを実行
します.このようなコマンドは.wgetrc
のコマンドの後に実行さ
れ,このためそれらに優先されます.
-o logfile
--output-file=logfile
-a logfile
--append-output=logfile
-o
と同じです.logfileが
無い場合は,新しいファイルを作成します.
-d
--debug
-d
は働きません.
デバッグサポートでのコンパイルは常に安全だということに注意してください--
デバッグサポートでコンパイルされたWgetは,-d
で要求されるまで,デ
バッグ情報を決して出力しません.バグレポートを送るため-d
を
使用する方法の詳細は,See Reporting Bugs.
-q
--quiet
-v
--verbose
-nv
--non-verbose
-q
を使用
してください)冗長を停止し,それはエラーメッセージと基本的な情報は,まだ
出力されることを意味します.
-i file
--input-file=file
しかし,--force-html
を指定した場合,ドキュメントはhtml
と見
なされます.この場合,相対的なリンクで問題があるかもしれず,それは,
<base href="url">
をドキュメントに加えたり,コマンドラインで
--base=url
を指定することで解決できます.
-F
--force-html
<base href="url">
を加えたり,
--base
コマンドラインオプションを使用することで回収できます.
-t number
--tries=number
inf
の指定は,無限に
リトライします.
-O file
--output-document=file
-
の場合,ドキュメントは標準出力に書き込まれます.この
オプションを含めると,挑戦回数を1に自動的に設定します.
-nc
--no-clobber
.html
や(yuck).htm
接尾子を持つとき,それらはローカルディスクからロード
され,それがウェブから回収されたものの場合,統合されます.
-c
--continue
wget -c ftp://sunsite.doc.ic.ac.uk/ls-lR.Z
現在のディレクトリにファイル名ls-lR.Z
がある場合,Wgetは,それがリ
モートファイルの最初の位置だと考え,ローカルファイルと同じ長さのオフセッ
トから回収を続けるためサーバに要求します.
Wgetに,接続が失われたとき中止したところで回収を続けさせたいだけの場合, このオプションを指定する必要が無いことに注意してください--Wgetは,これ をデフォルトで行います.他のFTPクライアントで保存されたり,キルされ たWgetが残した,既に半分回収しているファイルの回収を続けたいときだけ,こ のオプションを指定する必要があります.
-c
が無い場合,前の例はリモートファイルをls-lR.Z.1
にダウン
ロードを開始するだけです.-c
オプションは,Range
ヘッダをサ
ポートするHTTPサーバに対する適応も可能です.
--dot-style=style
default
形式を用いた場合,それぞれのドットは1Kを表現し,クラスタ内
に10ドット,1行に50ドットあります.binary
形式は,より"コンピュー
タ"ライクの起源です--8Kが1ドット,16ドットが1クラスタで,48ドットが1行
です(1行384Kになります).mega
形式は,非常に大きなファイルのダウン
ロードに適しています--それぞれのドットが64Kの回収,クラスタ内に8ドット,
そしてそれぞれの行が48ドットになります(それぞれの行は3M含みます).
micro
スタイルは,その正反対です.それは小さなファイルのダウンロー
ドに適していて,128バイトが1ドット,8ドットが1クラスタ,そして48ドット
(6K)が1行になります.
-N
--timestamping
-S
--server-response
--spider
wget --spider --force-html -i bookmarks.html
この特徴は,Wgetを真のWWW spiderの能力に近づけるため,さらにより多
くの仕事が必要です.
-T seconds
--timeout=seconds
何を行っているか分からない場合,このオプションでタイムアウトのデフォルト
値を小さくしないでください.
-w seconds
--wait=seconds
m
で後置した分,h
を後置した時間,d
を後置した1日で指
定できます.
このオプションに大きな値を指定すると,ネットワークや接続先のホストが落ち
た場合,Wgetはリトライする前にネットワークエラーを治すのに予測される,相
当長い時間待つことができるので役に立ちます.
-Y on/off
--proxy=on/off
-Q quota
--quota=quota
k
の後置で)キロバイト,(m
の後置で)メガバイトで指定され
ます.
クォータは単一ファイルのダウンロードで効果が無いことに注意してください.
そのため,wget -Q10k ftp://wuarchive.wustl.edu/ls-lR.gz
のように指
定した場合,ls-lR.gz
全体がダウンロードされます.いくつかの
URLがコマンドラインで指定されたときも,同様なことが生じます.しかし,
回収が再帰的なときや入力ファイルからのとき,クォータは重視されます.こう
して,安全にwget -Q2m -i sites
と入力ことができます--ダウンロード
はクォータ以上になったとき中止します.
クォータを0やinf
に設定すると,ダウンロードクォータは無制限になり
ます.
-nd
--no-directories
.n
が付きます).
-x
--force-directories
-nd
の反対です--階層無しで作成されていても,ディレクトリ階層を作
成します.例えば,wget -x http://fly.cc.fer.hr/robots.txt
はファイ
ルをfly.cc.fer.hr/robots.txt
にダウンロードします.
-nH
--no-host-directories
-r http://fly.cc.fer.hr/
を用いて呼び出した場合,
fly.cc.fer.hr/
で始まるディレクトリ構造を作成します.このオプショ
ンはそのような動作を不可にします.
--cut-dirs=number
例えば,ftp://ftp.xemacs.org/pub/xemacs/
ディレクトリの取得すると
します.-r
で回収した場合,ftp.xemacs.org/pub/xemacs/
以下に
ローカル保存されます.一方,-nH
オプションはftp.xemacs.org/
の部分を削除し,pub/xemacs
で保存します.これは--cut-dirs
が
役に立つところです.それは,Wgetにリモートディレクトリコンポーネントの
numberを見ないようにさせます.ここに,--cut-dirs
オプション
が働くいくつかの例があります.
No options -> ftp.xemacs.org/pub/xemacs/ -nH -> pub/xemacs/ -nH --cut-dirs=1 -> xemacs/ -nH --cut-dirs=2 -> . --cut-dirs=1 -> ftp.xemacs.org/xemacs/ ...
ディレクトリ構造を取り除きたいだけの場合,このオプションは-nd
と
-P
の組合せに似ています.しかし,-nd
とは異なり,
--cut-dirs
はサブディレクトリを失いません--例えば,-nH
--cut-dirs=1
を用いた場合,beta/
サブディレクトリは,期待通りに
xemacs/beta
に置かれます.
-P prefix
--directory-prefix=prefix
.
(カレントディ
レクトリ)です.
--http-user=user
--http-passwd=password
basic
(安全
でない),またはdigest
認証手法のどちらかを用いて符号化します.
もう1つの方法は,ユーザ名とパスワードをURL自身に書く方法です
(see URL Format).Wgetの安全な発行についての詳細は,See Security Considerations.
-C on/off
--cache=on/off
Pragma:
no-cache
)を送ります.これは,プロキシサーバの時代遅れのドキュメントを回
収し,クリアするときに特に役立ちます.
キャッシュはデフォルトで許可されます.
--ignore-length
Content-Length
ヘッダを送り,それでは,ドキュメント全てが回収され
ないので,Wgetがおかしくなります.Wgetが同じドキュメントを何度も何度も回
収し,そのたび毎に(通常でない)接続が同じバイト数で閉じている報告を得る場
合,この症状を見付けることができます.
このオプションを用いた場合,WgetはContent-Length
ヘッダを--まるで
存在しないかのように--無視します.
--header=additional-header
:
を含み,改行を含めてはなりません.
1つ以上の追加ヘッダを,1度以上--header
を指定することで定義できま
す.
wget --header='Accept-Charset: iso-8859-2' \ --header='Accept-Language: hr' \ http://fly.cc.fer.hr/
ヘッダ値として空の文字列を指定すると,以前ユーザが定義した全てのヘッダを
クリアします.
--proxy-user=user
--proxy-passwd=password
basic
認証手法で符号化し
ます.
-s
--save-headers
-U agent-string
--user-agent=agent-string
HTTPプロトコルは,クライアントがUser-Agent
ヘッダフィールドを
用いた自分自身の識別を許可します.これでWWWソフトウェアの区別が可能
となり,通常,プロトコル違反の追跡目的には十分です.Wgetは通常
Wget/version
として識別され,versionはWgetの現在のバー
ジョンナンバーです.
しかし,サイトによってはUser-Agent
が供給する情報によって出力を調
整するポリシーを課すことが知られています.概念的に,これはそんなに悪い考
えではないので,Mozilla
やMicrosoft Internet Explorer
以外の
クライアントに情報の提供を拒否するように乱用されていました.このオプショ
ンで,Wgetが発行するUser-Agent
を変更できます.このオプションの使
用は,行っていることを本当に知らない場合,思い留まってください.
Netscape Communications Corp.は,User-Agent
としてMozilla
の
不正転送は著作権違反だと主張していて,それは訴訟されることに注意
してください.WgetをMozillaとして間違って述べてはなりません.
--retr-symlinks
-g on/off
--glob=on/off
*
,?
,[
と]
のようなもので,
以下のようにします.
wget ftp://gnjilux.cc.fer.hr/*.msg
デフォルトで,URLがグラブ文字を含む場合,グラブはオンです.このオプ ションは,永久的にグラブのオン/オフに使用できます.
シェルによる拡張から保護するため,URLを引用符で囲む必要があるかもし
れません.グラブはWgetにディレクトリリストを探させ,それはシステムで指定
されます.これは,現在の仕事がFTPサーバでのみ働く理由です(そしてそ
れは,Unix ls
出力をエミュレートします).
--passive-ftp
-r
--recursive
-l depth
--level=depth
--delete-after
wget -r -nd --delete-after http://whatever.com/~popular/page/
-r
オプションは再帰的に回収し,-nd
はディレクトリを作成しま
せん.
-k
--convert-links
ダウンロード後のみ,Wgetはリンクがダウンロードされたことを知ることができ
ます.そのため,-k
が行う多くの仕事は,ダウンロード後に実行されま
す.
-m
--mirror
-r -N -l inf -nr
と同じです.
-nr
--dont-remove-listing
.listing
を削除しません.通常,
これらのフィルはFTPサーバから得た生のディレクトリリストを含みます.
それを削除しないことで,ミラーの実行時やデバッグ目的で,完全にリモートの
ファイルリストへのアクセスを便利にします.
-A acclist --accept acclist
-R rejlist --reject rejlist
-D domain-list
--domains=domain-list
-H
を開始し
ないことに注意してください.このオプションは,1つのホストのみ補っている
場合でも(see Domain Acceptance),動作を速くします.
--exclude-domains domain-list
-L
--relative
--follow-ftp
-H
--span-hosts
-I list
--include-directories=list
-X list
--exclude-directories=list
-nh
--no-host-lookup
-np
--no-parent
GNU Wgetは,Web(または,単一のHTTPやFTPサーバ)の部分を,最初の 深さからのリンク,そしてディレクトリ構造を渡り歩くことができます.これは 再帰的回収,または再帰と呼ばれます.
HTTP URLを用いると,Wgetは与えられたURLから得たHTML,
href
やsrc
のようなマークアップを通じてHTMLドキュメント
が参照していたファイルを回収するドキュメントを,回収統合します.新たにダ
ウンロードされたファイルもtext/html
形式の場合,それは解析され更に
続けます.
回収が下降する最大の深度は,-l
オプションで指定されます(デフォ
ルトの最大深度は5階層です).See Recursive Retrieval.
FTP URLを再帰的に回収するとき,Wgetはリモートサーバの与えられ
た(指定された深度以上のサブディレクトリを含め)ディレクトリツリーから,全
てのデータを回収し,ローカルにミラーイメージを作成します.FTPの回収
も,depth
パラメータで制限されます.
デフォルトで,Wgetはローカルディレクトリツリーを作成し,それはリモートサー バで見つかったものに対応します.
再帰的回収は複数の応用が可能で,最も重要なものはミラーです.それは, WWWプレゼンテーションと,その他のネットワーク接続が遅い時に,ファイ ルをローカルに保存することでバイパスするために役立ちます.
再帰呼び出しは,ネットワークを通じたデータの高速転送のため,システムの過 負荷を起こす可能性があることを警告します.これらは全て,他のユーザの仕事 を妨げる可能性があります.ミラーしている外部サーバも同じことです-- 連続 的な取得のより多くの要求は,その負荷をより大きくします.
不注意な回収は,ファイルシステムを制御不能なまでに一杯にし,それでマシン は停止するはずです.
負荷は,最大再帰レベル(-l
)を低くする,またはリトライ回数
(-t
)を低くすることで最小にできます.リモートサーバへの要求を遅く
するため,-w
オプションの使用や,同様に,リンクをたどる
(see Following Links)数を小さくする多数のオプションも考えることもで
きます.
再帰的な回収は,正確に使用されると良いものです.不注意で破壊を引き起こす ことが無いようあらゆる用心を図ってください.
再帰的な回収で,不必要なデータの回収を導くことは望みません.ほとんどいつ も,正確にダウンロードしたいものと,Wgetにたどらせたい特定のリンクのみを ユーザは心に留めます.
例えば,fly.cc.fer.hr
から音楽のアーカイブをダウンロードしたい場合,
アーカイブの曖昧な部分を参照して生じる,全てのホームページのダウンロード
を望みません.
たどりたいリンクを正確に調整することを可能とする,いくつかのメカニズムが Wgetにはあります.
相対的なリンクのみたどるとき(option -L
),再帰的な回収はホストを決
して跨ぎません.DNS検索の貴重な時間は実行されず,ネットワークの最低
限の負担で,非常に速く処理されます.これはよくあるニーズで,様々な
x2html
コンバータの出力をミラーするとき,それらは相対リンクを生成
するので特に適しています.
相対的リンクを単にだどる欠点は,人間は実際には同じホストと実際には同じペー ジに対し絶対的リンクを混ぜることが多いためです.このモード(リンクをたど るデフォルトモード)では,同じホストを参照する全てのURLは回収されま す.
このオプションの問題は,ホストとドメインの別名です.実際,Wgetが
regoc.srce.hr
とwww.srce.hr
が同じホストであるとか,
fly.cc.fer.hr
がfly.cc.etf.hr
と同じホストであるとかを知る方
法はありません.絶対的リンクに出会うときはいつも,同じホストを扱っている
可能性を調査するため,ホストはgethostbyname
でDNS検索されます.
gethostbyname
の結果はキャッシュされますが,非常に遅くなり,例えば,
異なるホストのホームページの大きな索引を扱うときです(それぞれのホストに
対しそうする必要があり,開始ホストの別名かどうかを知るため,
DNS解決されるためです).
オーバーヘッドを避けるため,-nh
を使用でき,それはDNS解決と,
Wgetにホストを文字通り比較させることを停止します.これはことを非常に速く
実行させますが,信頼性も小さくなるでしょう(例えば,www.srce.hr
と
regoc.srce.hr
は異なるホストとして,フラグが立ちます).
現在のHTTPサーバは,1つのIPアドレスで異なるvirtual servers ホ
ストとなることが可能で,それぞれは独自のディレクトリ階層があります.その
ような"サーバ"は,ホスト名(全て同じIPアドレスを持ちます)で区別されます.
これが働くため,クライアントはHost
ヘッダを送る必要があり,それは
Wgetが行います.しかしこの場合,Wgetはホストの"実際の"アドレスを占って
みたり,それぞれのアクセスに対し同じホスト名を使用してみてはならず,すな
わち,-nh
をオンにする必要があります.
言い替えると,-nh
オプションは,ホスト名で区別されたバーチャルサー
バからの回収を可能とするために使用する必要があります.そのようなサーバの
設定が増えるにつれ,-nh
の動作は,将来デフォルトとなるかもしれませ
ん.
-D
オプションを用いて,たどるドメインを指定できます.このリストに
無いホストドメインは,DNS解決されません.このため,MITの外側を
検索しないことを確実にするため,-Dmit.edu
を指定することができます.
これは非常に重要で役に立ちます.それは,-D
が-H
(全てのホス
トを跨ぐ)を暗示しないことを意味し,それは特に指定する必要があります.全
てのホストの調査をほとんど全て信頼する場合,速くことを進めるため,このオ
プションの使用は自由だと考えてください.以下のように呼び出します.
wget -r -D.hr http://fly.cc.fer.hr/
.hr
ドメインのホストのみfly.cc.fer.hr
と同じということを
DNS検索で確実にします.そして,fly.cc.etf.hr
は(一度だけ!)調
査され,同じだと分かりますが,www.gnu.ai.mit.edu
は調査さえされま
せん.
もちろん,ドメインの受け入れは,その中のホストを跨ぐことで,特定のドメイ
ンを回収する制限が使用できますが,そのときは特に-H
を指定する必要
があります.例えば,以下のようにします.
wget -r -H -Dmit.edu,stanford.edu http://www.mit.edu/
これはhttp://www.mit.edu/
で開始し,MITとStanfordを跨ってたど
ります.
指定から外したいドメインがある場合,--exclude-domains
で行うことが
でき,それは-D
の引数と同じ形式を受け入れますが,リストアップされ
た全てのドメインを除外します.例えば,sunsite.foo.edu
以外
のfoo.edu
ドメインから,全てのホストをダウンロードしたい場合,以下
のようにすることで可能です.
wget -rH -Dfoo.edu --exclude-domains sunsite.foo.edu http://www.foo.edu/
-D
無しで-H
が指定されたとき,全てのホストは自由に跨げます.
最大深度以外,Wgetがドキュメントを取ってくるネットの部分がどこであれ,制
限がありません.www.yahoo.com
にページ参照があった場合,そうします.
そのようなオプションは,それ自身滅多に役に立ちません.
ウェブから資料をダウンロードするとき,特定のファイル形式のみを回収するよ う,制限したいときもよくあります.例えば,GIFSをダウンロードするこ とに興味がある場合,ポストスクリプトのドキュメントでの負荷は嬉しいはずが 無く,逆もまたそうです.
Wgetは,この問題を扱う2つのオプションを提案します.それぞれのオプション
は,短い名前,長い名前,そして.wgetrc
内の等価コマンドをリストアッ
プします.
-A acclist
--accept acclist
accept = acclist
--accept
オプションの引数は,Wgetが再帰的な回収の間にダウンロード
するファイルの,接尾子やパターンのリストです.接尾子はファイルの終りの部
分で,"通常の"文字列,例えばgif
や.jpg
から成り立ちます.
パターンマッチはシェルのワイルドカードを含み,例えば,books*
や
zelazny*196[0-9]*
です.
そして,wget -A gif,jpg
を指定すると,Wgetはgif
やjpg
で終るファイルのみ,すなわちGIFとJPEGをダウンロードします.一
方,wget -A "zelazny*196[0-9]*"
は,zelazny
で始まり,その中
に1960から1969までの数字を含むファイルのみをダウンロードします.パターン
マッチが働く方法の記述のため,シェルのマニュアルを探してください.
もちろん,あらゆる数の接尾子とパターンをカンマで分けたリストで組み合わせ
ることや,-A
の引数として与えることができます.
-R rejlist
--reject rejlist
reject = rejlist
--reject
オプションは--accept
と同じように働きますが,その論
理は反対です.Wgetは,リストの接尾子(やパターン)に一致するもの以外
の,全てのファイルをダウンロードします.
そして,扱いにくいMPEGと.AUファイル以外の,ページ全体をダウン
ロードしたい場合,wget -R mpg,mpeg,au
を使用できます.同様に,
bjork
で始まるファイル以外全てをダウンロードするため,wget
-R "bjork*"
を使用してください.引用符はシェルによる展開を妨げるためです.
-A
と-R
オプションは,回収するファイルのより良い調整を達成す
るため,組み合わせることができます.例えば,wget -A "*zelazny*" -R
.ps
は,名前の一部にzelazny
を持ち,ポストスクリプトではない
全てのファイルをダウンロードします.
これら2つのオプションは,HTMLファイルのダウンロードで,効果が無いこ とに注意してください.Wgetは全てのHTMLをリンク先を知るためにロード する必要があります--再帰的な回収は,そうしなければ意味がありません.
他のリンクを追う能力にもかかわらず,ファイルがあるディレクトリを基に,回
収するファイルの制限を置くことは便利なときも良くあります.これには多くの
理由があります--ホームページは合理的なディレクトリ構造に組織化されてい
るかもしれません.またはいくつかのディレクトリ,例えば/cgi-bin
や
/dev
ディレクトリは,無用な情報を含むかもしれません.
Wgetは,これらの要求を扱うため,3つの異なるオプションを提案します.それ
ぞれのオプションは,短い名前,長い名前,そして.wgetrc
内の等価コマ
ンドをリストアップします.
-I list
--include list
include_directories = list
-I
オプションは,カンマで分けられた回収に含めるディレクトリのリス
トを受け入れます.他のあらゆるディレクトリは単に無視されます.ディレクト
リは絶対パスです.
そして,http://host/people/bozo/
から/people
ディレクトリの
bozoの仲間へのリンクと/cgi-bin
の偽りのスクリプトのみだどってダウ
ンロードしたい場合,以下のように指定できます.
wget -I /people,/cgi-bin http://host/people/bozo/
-X list
--exclude list
exclude_directories = list
-X
オプションは-I
の正反対です--これは,ダウンロードから
除外するディレクトリのリストです.例えば,Wgetで/cgi-bin
ディ
レクトリからのものをダウンロードしたくない場合,コマンドラインで-X
/cgi-bin
を指定してください.
-A
/-R
と同様に,これら2つのオプションは,サブディレクトリの
ダウンロードでより良く調整するため,組み合わせることができます.例えば,
/pub/worthless
以外の/pub
階層からの全てをロードしたい場合,
-I/pub -X/pub/worthless
を指定してください.
-np
--no-parent
no_parent = on
--no-parent
オプション(短いものは-np
)は,この場合便利です.
その利用は,今居る階層から出ないことを保証します.Wgetを以下のようにして
呼び出したとします.
wget -r --no-parent http://somehost/~luzer/my-archive/
/~his-girls-homepage/
や/~luzer/all-my-mpegs/
へ参照するもの
は参照するものをたどらないので安心できます.興味があるアーカイブのみダウ
ンロードされます.特に,それはより知的な方法でリダイレクトを処理するだけ
なので,--no-parent
は-I/~luzer/my-archive
に似ています.
FTPの規則は,そうさせる必要があるので,幾分特殊です.HTMLドキュ メントのFTPリンクは参照の目的を含むことが多く,デフォルトでダウンロー ドするため不便なことがよくあります.
HTMLドキュメントからFTPへのリンクをたどらせるため,
--follow-ftp
オプションを指定する必要があります.そうすることで,
FTPリンクは,-H
の設定にかかわらずホストを跨ぎます.FTP
リンクがHTTPサーバと同じホストを示すことが滅多にないので,これは論
理的です.同様の理由で-L
オプションは,そのようなダウンロードで効
果がありません.一方,ドメインの受け入れ(-D
)と接尾子の規則
(-A
と-R
)は通常適用されます.
また,FTPディレクトリへのリンクをたどることは,再帰的回収以上ではな いことに注意してください.
インターネットからの情報のミラーの側面で最も重要なことの1つは,アーカイ ブの更新です.
アーカイブを何度も何度もダウンロードすると,わずかに変更されたファイルの 置換だけでは勿体なく,それは,バンド帯域とお金の無駄使いと更新する時間の 両方の意味です.これは,全てのミラーツールが逐次的な更新のオプションを提 案する理由です.
そのような更新メカニズムは,リモートサーバが新しいファイルの検索で, スキャンされることを意味します.これらの新しいファイルのみ,古いものに置 換されます.
以下の2つの条件のどちらか1つが当てはまる場合,ファイルは新しいものと考え られます.
これをインプリメントするため,プログラムは,リモートとローカルの両方のファ イルが最後に更新された時間に気付いている必要があります.そのような情報は, タイムスタンプと呼ばれます.
GNU Wgetのタイムスタンプは,--timestamping
(-N
)オプション
や,.wgetrc
でのtimestamping = on
の命令を通じて開始されます.
このオプションで,それぞれのファイルをダウンロードするため,Wgetは,存在
する同じ名前のローカルファイルを調査します.それが存在し,リモートファイ
ルが古い場合,Wgetはそれをダウンロードしません.
ローカルファイルが存在しない場合や,ファイルサイズが一致しない場合,Wget はタイムスタンプを気にせずに,リモートファイルをダウンロードします.
タイムスタンプの利用は単純です.編集日時を保つため,ダウンロードしたいファ イルに対し以下のようにします.
wget -S http://www.gnu.ai.mit.edu/
単純にls -l
すると,ローカルファイルのタイムスタンプが,サーバから
返されるようなLast-Modified
のステータスと同じになります.タイムス
タンプ情報は,見ることを可能にするため,たとえ-N
がない場合でもロー
カルに維持されます.
数日後,Wgetにリモートファイルが変化したかどうか調査させ,変化した場合ダ ウンロードしたい場合もあります.
wget -N http://www.gnu.ai.mit.edu/
Wgetはサーバに最後に編集した日付を尋ねます.ローカルファイルがより新しい 場合,リモートファイルは再取得されません.しかし,リモートファイルがより 最新の場合,Wgetは通常の取得処理を行います.
FTPでも同じように行います.例えば以下のようにします.
wget ftp://ftp.ifi.uio.no/pub/emacs/gnus/*
ls
は,リモートサーバの状態に依存して,設定されているタイムスタン
プを表示します.-N
を伴うコマンドの再発行は,編集されたファイル
のみ,Wgetに再取得させます.
HTTPとFTPの回収の両方で,(-N
にかかわらず)Wgetは,タイム
スタンプを取得した場合,すなはち,FTPに対するディレクトリリストや,
HTTPに対するLast-Modified
ヘッダの取得で,ローカルファイルに
正しいタイムスタンプを打ちます.
毎週,GNUアーカイブをミラーしたい場合,毎週以下のコマンドを入力するでしょ う.
wget --timestamping -r ftp://prep.ai.mit.edu/pub/gnu/
HTTPのタイムスタンプは,Last-Modified
ヘッダの調査により実行
されます.HTTPでファイルfoo.html
を回収したい場合,Wgetは
foo.html
がローカルに存在しているかどうかを調べます.存在しない場
合,foo.html
は無条件に回収されます.
ローカルにファイルがある場合,Wgetは最初にローカルのタイムスタンプを調べ
(ls -l
でそれを調べることに似ています),そして,リモートファイルの
情報を要求するため,HEAD
要求をリモートサーバに送ります.
Last-Modified
ヘッダは,ファイルがより最近編集され("新しく"され)
たことを知るために調べられます.リモートファイルがより新しい場合,ダウン
ロードされます.古い場合,Wgetは諦めます.2
おそらく,HTTPタイムスタンプは,If-Modified-Since
要求を使用
してインプリメントされるべきです.
理論上,FTPタイムスタンプはHTTPと同じように働きますが, FTPにはヘッダがありません--タイムスタンプはディレクトリリストから 受け取るはずです.
それぞれのディレクトリファイルを回収するため,Wgetはリストの取得に
LIST
コマンドを使用します.それは,Unix ls -l
リストと想定し
リストを解析し,タイムスタンプを抽出します.残りは正確にHTTPと同じ
です.
全てのディレクトリリストがUnix形式のリストだという仮定は,非常に不自然に 感じるかもしれませんが,経験的にはそうではなく,その理由は,多くの非Unix FTPサーバが,ほとんど(全て?)のクライアントがそれを理解できるので, Unixのようなリスト書式を使用しているためです.RFC959定義が,タイム スタンプはいうまでもなく,ファイルリストを取得する標準的な方法ではないこ とを覚えておいてください.我々は,将来の標準がこのように定義されることを 期待することしかできません.
もう1つの非標準の解決方法は,(評判のよいwu-ftpd
を含め)いくつかの
FTPサーバがサポートするMDTM
コマンドの使用を含み,それは指定
したファイルの正確な時間を返します.Wgetは,将来このコマンドをサポートす
るかもしれません.
コマンドライン引数で,Wgetのデフォルト設定を変更する方法を知ると,これら
の設定を永久的に行いたいと思うかも知れません.Wgetスタートアップファイル--
.wgetrc
--を作成するという便利な方法でそうすることができます.
さらに,.wgetrc
は"主な"初期化ファイルで,強固なパスワードに対す
る特別な能力があるので便利です.このためWgetは,$HOME/.netrc
があ
る場合は,その内容を読み込み翻訳します..netrc
書式はシステムのマ
ニュアルで見つかります.
Wgetは、コマンドの限定されたセットを認識して、スタートアップ時に
.wgetrc
を読みます。
初期化時,Wgetはデフォルトで/usr/local/etc/wgetrc
(または,Wgetが
そこにインストールされていない場合,/usr/local
ではない接頭辞)であ
るglobalなスタートアップファイルを探し,存在する場合はそれからコマ
ンドを読み込みます.
それから,ユーザファイルを探します.環境変数WGETRC
が設定されてい
る場合,そのファイルをロードしようとします.失敗した場合,それ以上何もし
ません.
WGETRC
が設定されていない場合,Wgetは$HOME/.wgetrc
をロード
しようとします.
ユーザ設定がシステム全体のものの後にロードされるということは,ユーザの
wgetrcと衝突した場合,システム全体のwgetrc(デフォルトで
/usr/local/etc/wgetrc
)に優先するということを意味します.全
体主義の管理者は不在です!
wgetrcコマンドの構文は単純です.
variable = value
変数はコマンドとも呼ばれます.有効な値は異なるコマンド に対し異なります.
コマンドは大文字小文字とアンダースコアを識別しません.このため,
DIr__PrefiX
はdirprefix
と同じです.#
で始まる行と空白
のみ含む行は,空行として捨てられます.
カンマで分けられたリストを期待するコマンドは,空のコマンドでリストをクリ
アします.そのため,全体的なwgetrc
で指定された拒絶するリストをリ
セットしたい場合,以下のようにして行うことができます.
reject =
コマンドの完全なセットは以下にリストアップされていて,=
以下の文字
は,コマンドに渡す値を意味します.on/off
はon
または
off
(同様に1
または0
),stringは空ではない文字
列,また,nは正の整数です.例えば,デフォルトでプロキシサーバの使
用を不可にするため,use_proxy = off
のように指定できます.適切な場
合は,無限値に対しinf
を使用できます.
ほとんどのコマンドは,コマンドラインオプションと同じですが (see Invoking),時代遅れのものや滅多に使用されないものは例外です.
-A
/-R
(see Types of Files)と同じです.
-nH
はそれを不可
にします.
-c
(利用可にする)と同じです.
-b
(利用可にする)と同
じです.
-B
と同じです.
-C
オプション
を参照してください.
-k
と同じです.
-d
と同じです.
--delete-after
と同じです.
-P
と同じです.
-x
や
-nd
と同じです.
-D
(see Domain Acceptance)と同じです.
k
やm
を後置することが可能で,それぞれキロバイトとメガバ
イトの代わりです.ドットの設定で,必要に応じてドットの回収を適応させたり,
前もって定義された形式を使用できます(see Download Options).
--dot-style
を用いるように,ドットの回収形式を指定します.
-X
(see Directory-Based Limits)と同じです.
--exclude-domains
(see Domain Acceptance)と同じです.
-f
と同じで
す.
-F
と同じです.
-g
と同じです.
--header
のように,追加ヘッダを定義します.
Content-Length
ヘッダを無視します.
--ignore-length
と同じです.
-I
と同じです.
-i
のように,stringからURLを読み込みます.
Content-Length
の値より大きいまたは同じであると規定されます.
-o
と同じです.
anonymous
です.
-m
と同じです.
-nc
と同じです.
--no-parent
(see Directory-Based Limits)のように,ディレクト
リ階層外部への回収を禁止します.
-O
と同じです.
--passive-ftp
と同じです.
username@hostname.domainname
です.
--proxy-user
のように,プロキシ認証のユーザ名をstringに設定
します.
--proxy-passwd
のように,プロキシ認証のパスワードをstringに
設定します.
-q
と同じです.
k
の追加),またはメガバイト(m
の追加)で指定できます.
このため,quota = 5m
はクォータを5メガバイトに設定します.ユーザの
スタートアップファイルがシステム設定に優先することに注意してください.
-l
と同じです.
-r
と同じです.
-L
(see Relative Links)と同じで
す.
-nr
と同じです.
--retr-symlinks
と同じです.
/robots.txt
ファイル(see Robots)を使用します(または使用しませ
ん)デフォルト(on
)を変更する前に,自分が行っていることが分かってい
るか確かめてください.
-S
と同じです.
-nh
(see Host Checking)と同じです.
-H
と同じです.
-T
と同じです.
-N
(see Time-Stamping)
と同じです.
-t
と同じです.
-Y
と同じです.
-v
/-nv
と同じです.
-w
と同じです.
これは,配布物で与えられる初期化ファイルの例です.それは2つの部分に分け
られます--1つは全体的な使用で(全体的なスタートアップファイルに適してい
ます),もう1つはローカルで使用するもの($HOME/.wgetrc
に適していま
す)です.変更には注意してください.
全ての行がコメントアウトされていることに注意してください.効果を得たいあ
らゆる行に対し,行の前に前置された#
を削除する必要があります.
### ### Sample Wget initialization file .wgetrc ### ## You can use this file to change the default behaviour of wget or to ## avoid having to type many many command-line options. This file does ## not contain a comprehensive list of commands -- look at the manual ## to find out what you can put into this file. ## ## Wget initialization file can reside in /usr/local/etc/wgetrc ## (global, for all users) or $HOME/.wgetrc (for a single user). ## ## To use any of the settings in this file, you will have to uncomment ## them (and probably change them). ## ## Global settings (useful for setting up in /usr/local/etc/wgetrc). ## Think well before you change them, since they may reduce wget's ## functionality, and make it behave contrary to the documentation: ## # You can set retrieve quota for beginners by specifying a value # optionally followed by 'K' (kilobytes) or 'M' (megabytes). The # default quota is unlimited. #quota = inf # You can lower (or raise) the default number of retries when # downloading a file (default is 20). #tries = 20 # Lowering the maximum depth of the recursive retrieval is handy to # prevent newbies from going too "deep" when they unwittingly start # the recursive retrieval. The default is 5. #reclevel = 5 # Many sites are behind firewalls that do not allow initiation of # connections from the outside. On these sites you have to use the # `passive' feature of FTP. If you are behind such a firewall, you # can turn this on to make Wget use passive FTP by default. #passive_ftp = off ## ## Local settings (for a user to set in his $HOME/.wgetrc). It is ## *highly* undesirable to put these settings in the global file, since ## they are potentially dangerous to "normal" users. ## ## Even when setting up your own ~/.wgetrc, you should know what you ## are doing before doing so. ## # Set this to on to use timestamping by default: #timestamping = off # It is a good idea to make Wget send your email address in a `From:' # header with your request (so that server administrators can contact # you in case of errors). Wget does *not* send `From:' by default. #header = From: Your Name <username@site.domain> # You can set up other headers, like Accept-Language. Accept-Language # is *not* sent by default. #header = Accept-Language: en # You can set the default proxy for Wget to use. It will override the # value in the environment. #http_proxy = http://proxy.yoyodyne.com:18023/ # If you do not want to use proxy at all, set this to off. #use_proxy = on # You can customize the retrieval outlook. Valid options are default, # binary, mega and micro. #dot_style = default # Setting this to off makes Wget not download /robots.txt. Be sure to # know *exactly* what /robots.txt is and how it is used before changing # the default! #robots = on # It can be useful to make Wget wait between connections. Set this to # the number of seconds you want Wget to wait. #wait = 0 # You can force creating directory structure, even if a single is being # retrieved, by setting this to on. #dirstruct = off # You can turn on recursive retrieving by default (don't do this if # you are not sure you know what it means) by setting this to on. #recursive = off # To have Wget follow FTP links from HTML files by default, set this # to on: #follow_ftp = off
明確さのため,例は3つのセクションにクラス分けされています.最初のセクショ ンは初心者のためのチュートリアルです.2番目のセクションは,より複雑なプ ログラムの特徴のいくつかを説明します.3番目のセクションは,ミラー管理者 のためのアドバイスと,同様に,より複雑な特徴(ひねくれた呼び出しもありま す)を説明します.
wget http://fly.cc.fer.hr/
レスポンスは以下のようになります.
--13:30:45-- http://fly.cc.fer.hr:80/en/ => `index.html' Connecting to fly.cc.fer.hr:80... connected! HTTP request sent, awaiting response... 200 OK Length: 4,694 [text/html] 0K -> .... [100%] 13:30:46 (23.75 KB/s) - `index.html' saved [4694/4694]
wget --tries=45 http://fly.cc.fer.hr/jpg/flyweb.jpg
log
に書き出します.--tries
と入力は大変なので,我々は
-t
を使用します.
wget -t 45 -o log http://fly.cc.fer.hr/jpg/flyweb.jpg &
行の終りのアンパーサンドはWgetがバックグラウンドで働くことを確実にします.
再挑戦の回数を無制限にするため,-t inf
を使用してください.
$ wget ftp://gnjilux.cc.fer.hr/welcome.msg --10:08:47-- ftp://gnjilux.cc.fer.hr:21/welcome.msg => `welcome.msg' Connecting to gnjilux.cc.fer.hr:21... connected! Logging in as anonymous ... Logged in! ==> TYPE I ... done. ==> CWD not needed. ==> PORT ... done. ==> RETR welcome.msg ... done. Length: 1,340 (unauthoritative) 0K -> . [100%] 10:08:48 (1.28 MB/s) - `welcome.msg' saved [1340]
wget ftp://prep.ai.mit.edu/pub/gnu/ lynx index.html
wget -i file
ファイル名として-
を指定した場合,URLは標準入力から読み込まれ
ます.
gnulog
に保存し
ます.
wget -r -t1 http://www.gnu.ai.mit.edu/ -o gnulog
wget -r -l1 http://www.yahoo.com/
www.lycos.com
のindex.html
を回収します.
wget -S http://www.lycos.com/
wget -s http://www.lycos.com/ more index.html
wuarchive.wustl.edu
の最初の2つのレベルを回収し,/tmpに保存します.
wget -P/tmp -l2 ftp://wuarchive.wustl.edu/
wget
http://host/dir/*.gif
は動作しません.その場合以下を使用します.
wget -r -l1 --no-parent -A.gif http://host/dir/
それはわずかなkludgeですが,働きます.-r -l1
は,最大深度が1の再帰
的な回収(see Recursive Retrieval)を意味します.--no-parent
は
親ディレクトリへの参照を無視すること(see Directory-Based Limits)を意
味し,-A.gif
はGIFファイルのみをダウンロードすることを意味し
ます.-A "*.gif"
も働きます.
wget -nc -r http://www.gnu.ai.mit.edu/
wget ftp://hniksic:mypassword@jagor.srce.hr/.emacs
wget --dot-style=binary ftp://prep.ai.mit.edu/pub/gnu/README
以下のように,他のスタイルを試すこともできます.
wget --dot-style=mega ftp://ftp.xemacs.org/pub/xemacs/xemacs-20.4/xemacs-20.4.tar.gz wget --dot-style=micro http://fly.cc.fer.hr/
これらの設定を永久的に行うため,前述(see Sample Wgetrc)したように
.wgetrc
に書いてください.
-r -N
に対する省略形の--mirror
(-m
)を使用してくださ
い.日曜日毎にサイトを再調査を依頼するため,Wgetをcrontabファイルに置く
ことができます.
crontab 0 0 * * 0 wget --mirror ftp://ftp.xemacs.org/pub/xemacs/ -o /home/me/weeklog
wget --mirror -A.html http://www.w3.org/
-D
(see Domain Acceptance)を使用してください.
wget -rN -Dsrce.hr http://www.srce.hr/
さて,Wgetはregoc.srce.hr
がwww.srce.hr
と同じことを,正しく
判別しますが,www.mit.edu
へのリンクは考慮しません.
-k
を使用してください.
wget -k -r URL
--quiet
に切替えます).
wget -O - http://jagor.srce.hr/ http://www.srce.hr/
2つのオプションを統合して,奇妙なパイプラインで,リモートホストリストか らドキュメント回収することもできます.
wget -O - http://cool.list.com/ | wget --force-html -i -
この章は,どこにも適さなかったあらゆるものを含みます.
プロキシは,リモートサーバからローカルクライアントにデータを転送す るために設計された,特別な目的のHTTPサーバです.プロキシの1つの典型 的な使用は,遅い接続にいるユーザのため,ネットワーク負荷を軽くすることで す.これは,転送したデータをキャッシュするプロキシを通じて,全ての HTTPとFTPの要求の経路を作ることで達成します.キャッシュリソー スが再び要求されたとき,プロキシはキャッシュからデータを返します.プロキ シのもう1つの使用は,(セキュリティの理由で)インターネットに残されている ものから,内部のネットワークを分けてい会社のためです.Webから情報を得る ため,それらのユーザは,認証されたプロキシを使用してリモートデータに接続 し回収します.
Wgetは,HTTPとFTPの回収の両方でプロキシをサポートします.Wget が認識できるように,プロキシの位置を指定する標準的な方法は,以下の環境変 数を使用することです.
http_proxy
ftp_proxy
no_proxy
no_proxy
の値が.mit.edu
の場合,プ
ロキシはMITからのドキュメントの回収で使用されません.
環境変数に加えて,プロキシの位置や設定はWget自身から指定できます.
-Y on/off
--proxy=on/off
proxy = on/off
http_proxy = URL
ftp_proxy = URL
no_proxy = string
プロキシサーバの使用を可能にするため,認証を要求するサーバもあります.認
証は,ユーザ名とパスワードから成り立ち,それはWgetが送るはず
です.HTTP認証と同様に,いくつかの認証手法が存在します.プロキシ認
証のため,Basic
認証手法のみ,現在インプリメントされています.
ユーザ名とパスワードを,プロキシURLまたはコマンドラインオプションの
どちらかで指定できます.会社のプロキシが,proxy.srce.hr
の8001ポー
トに位置していると仮定すると,認証データを含むプロキシURLの位置は以
下のようになります.
http://hniksic:mypassword@proxy.company.com:8001/
代わりに,プロキシユーザ名とパスワードを設定するため,proxy-user
とproxy-password
オプションと,等価の.wgetrc
での
proxy_user
とproxy_passwd
の設定を使用できます.
全てのGNUユーティリティのように,Wgetの最近のバージョンは,GNUアーカイブ
サイトprep.ai.mit.eduとそのミラーで見つかります.例えば,Wget
1.5.3は,
<ftp://prep.ai.mit.edu/pub/gnu/wget-1.5.3.tar.gz
>で見付け
ることができます.
Wgetは,wget@sunsite.auc.dkに,Karsten Thygesenのおかげで,独自 のメーリングリストがあります.メーリングリストはWgetの特徴とwebの議論, Wgetのバグレポート(大衆にとって重要だと思うもの),そしてメールでのアナウ ンスのためです.購読を歓迎します.リスト上の人々が多ければ多いほど良いで しょう!
購読するために,wget-subscribe@sunsite.auc.dkにメールを送ってく
ださい.サブジェクトに魔法の呪文subscribe
を書いてください.
wget-unsubscribe@sunsite.auc.dkにメールを送ることで購読を止めて
ください.
メーリングリストは<http://fly.cc.fer.hr/archive/wget
>に保存されます.
GNU Wgetに関するバグレポートをbug-wget@gnu.orgに送ることを歓迎 します.大衆にとってバグだと思ったもの(すなわち,より多くの人々が知らさ れるべきであるもの)は,wget@sunsite.auc.dkのメーリングリストに Ccすることができます.
実際にバグレポートを提出する前に,以下の2,3の単純なガイドラインに従って みてください.
wget -rLl0 -t5 -Y0 http://yoyodyne.com -o /tmp/log
で壊れる場合,
より単純なオプション設定で壊れるかどうか,見てみるべきです.
また,.wgetrc
の内容を知ることに興味がありはしますが,バグメッセー
ジにそれをそのままダンプするのは,余り良いアイディアではありません.代わ
りに,.wgetrc
を伴うバグの報告が道を外れていないか,最初に見るべき
です..wgetrc
の設定がバグに影響があることが分かる場合のみ,ファイ
ルの適切な部分をメールすべきです.
-d
オプションで開始し,ログ(または,その適切な部分)を送って
ください.Wgetがデバッグのサポート無しでコンパイルされている場合,再コン
パイルしてください.デバッグサポートをオンにしたバグの追跡は,非常
に簡単になります.
gdb `which wget` core
としwhere
と入力します.
Wgetは,構築とコンフィグレーションにGNU Autoconfを使用していて,特定の Unixの"特別な"超凄くカッコいい特徴の使用を避けているので,全ての一般の Unixの類でコンパイル(と動作)するでしょう.
様々なWgetのバージョンが,多種のUnixシステムでコンパイルされテストされて
いて,それには,Solaris,Linux,SunOS,OSF (aka Digital Unix),Ultrix,
*BSD,IRIX,その他を含みます.包括的なリストのため,配布されたディレクト
リのファイルMACHINES
を参照してください.そこにリストアップされて
いないアーキテクチャでコンパイルした場合,更新するために知らせてください.
Wgetは,MACHINES
にリストアップされていない,他のUnixシステムでも
コンパイルすべきです.そうされていない場合,知らせてください.
親切な貢献者のおかげで,Wgetのこのバージョンは,Microsoft Windows 95と Windows NTのプラットホームで,コンパイルし動作します.それは,ネットワー クソフトウェアとしてWinsockを用いて,MS Visual C++ 4.0,Watcom,そして Borland Cコンパイラを使用してコンパイルが成功しています.当然,Unixで利 用可能ないくつかの特徴に障害がありますが,Windowsを押しつけられている人々 に代用として働きます.Windowsの移植は,テストも管理もしていない ことに注意してください--全ての疑問と問題は,管理者が見るであろう, wget@sunsite.auc.dkのWgetメーリングリストに報告すべきです.
Wgetの目的がバックグラウンドで動作することなので,ハングアップシグナル
(SIGHUP
)を受け取り,それを無視します.出力が標準出力の場合,ファ
イル名wget-log
にリダイレクトされます.それ以外では,SIGHUP
は無視されます.これは,開始後Wgetの出力をリダイレクトしたい場合便利です.
$ wget http://www.ifi.uio.no/~larsi/gnus.tar.gz & $ kill -HUP %% # Redirect the output to wget-log
それ以外に,Wgetはあらゆるシグナルに干渉しようとしません.C-c,
kill -TERM
とkill -KILL
は同様にそれをキルします.
この章は,私が役に立つと考えるリファレンスを含み,それはロボットの除外の 標準仕様のようなものと,また,GNU Wgetへの貢献者のリストです.
Wgetはwebを渡り歩くことが可能なので,それはWebロボットの1つとして
数えられます.このため,WgetはRobots Exclusion Standard (RES)
を理解します--/robots.txt
の内容は,Wgetの徘徊からシステムの一部
を保護するためサーバ管理者が使用します.
ロボット拒否のサポートは再帰的回収時のみオンに切替えられ,最初のページに 対しては行いません.このため,以下のように発行します.
wget -r http://fly.cc.fer.hr/
fly.cc.fer.hrの最初のインデクッスはダウンロードされます.Wgetが同じホス
トでダウンロードする価値があるものを見付けた場合,そのときだけロ
ボットがロードされ,全てのリンクをロードするかどうか決定します.
/robots.txt
は,ホスト毎に1度ロードされます.WgetはMETA
タグ
ロボットをサポートしません.
ロボット拒否の標準の記述が書かれていて,Martijn Koster m.koster@webcrawler.comが管理しています.彼の許可で,RESの 文章化されたバージョンを(わずかに修正して)提供します.
WWWロボット (または,wanderersやspidersと呼ばれます)は, リンクされたページの再帰的な回収で,World Wide Webで多くのページを渡り歩 くプログラムです.詳細はロボットのページを参照してください.
1993と1994にロボットが訪問したWWWサーバで,様々な理由で歓迎されない ときがありました.これらの理由はロボットの特有の時もあり,例えば,あるロ ボットが,矢つぎばやの要求でサーバを身動きできなくしたり,同じファイルを 何度も回収したりという理由でした.他の状況では,ロボットは不適切な WWWサーバの部分を渡り歩くこともあり,例えばそれは,非常に深い仮想ツ リー,複製された情報,一時的な情報,また(投票のような)サイトに影響のある cgiスクリプトです.
これらの事件は,アクセスすべきではないサーバの部分をロボットに示すため, WWWサーバに対し確立されたメカニズムが必要だということを示しました. この標準は,操作上の解決の必要性を扱います.
このドキュメントは,ロボットの著者の大多数とロボットに興味があるその他の
人々の間ででの,ロボットメーリングリスト(robots@webcrawler.com
)
での1994年6月30日の合意を表します.それは,テクニカルWorld Wide Web
(www-talk@info.cern.ch
)での議論に対し開かれました.このドキュメ
ントは,同じタイトルでの前の仕事のドラフトを基本にしています.
標準本体に支持されたり,商用組織に所有されたりしている,公的な標準ではあ りません.それは,誰に対しても強制力はなく,そこには現在と将来のロボット 全てがそれを使用するという保証もありません.ロボットからの期待しないアク セスからWWWサーバを守るため,ロボットの著者の多くがWWWコミュニ ティーに提案する,共通のファシリティだと考えてください.
このドキュメントの最近のバージョンは,
<http://info.webcrawler.com/mak/projects/robots/norobots.html
>
で見つけることができます.
/robots.txt
ファイルの書式と意味論は以下の通りです.
ファイルは,1つ以上の(CR
,CR/NL
,またはNL
で終端され
た)空白行で分けられた,1つ以上のレコードから成り立ちます.それぞれのレコー
ドは以下の形式の行から成り立ちます.
<field>:<optionalspace><value><optionalspace>
フィールド名は,大文字小文字を認識します.
コメントは,UNIXボーンシェルの慣習を使用して,ファイルに含めることができ
ます.#
文字は,(もしあれば)前にスペースがあることをを示すために使
用され,行の残りは行の終りまで削除されます.コメントのみを含む行は,完全
に削除され,それゆえレコードの境界を示しません.
レコードは1つ以上の代理ユーザ行で始まり,以下で詳述する1つ以上の不許可行 が続きます.理解できないヘッダは無視されます.
空の/robots.txt
ファイルの存在は明示的に関連付された意味論を持たず,
まるで存在しないかのように扱われ,すなわち,すべてのロボットは歓迎されて
いると考えます.
このフィールドの値は,レコードがアクセスポリシーを記述しているロボットの 名前です.
1つ以上の代理ユーザフィールドが存在する場合,レコードは1つ以上のロボット に対しアクセスポリシーを示す記述です.少なくとも1つのフィールドがレコー ド毎に存在するしている必要があります.
ロボットは,このフィールドの解釈を自由に行います.バージョン情報が無い大 文字小文字の基底文字の一致が推奨されます.
値が*
の場合,レコードは,あらゆるロボットに対するデフォルトのアク
セスポリシーが,他のレコードに一致していないことを記述します.多くのその
ようなレコードが,/robots.txt
ファイルにあることは許可されません.
このフィールドの値は,訪問されない特定のURLを指定します.これはフル
パスでも部分的なパスでも可能です.この値で始まるあらゆるURLは回収で
きません.例えば,Disallow: /help
は/help.html
と
/help/index.html
の両方を不許可にするのに対し,Disallow: /help/
は/help/index.html
を不許可にしますが,/help.html
は
許可します.
あらゆる空の値は,全てのURLが回収できることを示します.少なくとも1 つの不許可フィールドがレコードに存在する必要があります.
以下の/robots.txt
ファイルの例は,ロボットが
/cyberworld/map/
や/tmp/
で始まるあらゆるURLを訪問でき
ないように指定します.
# robots.txt for http://www.site.com/ User-agent: * Disallow: /cyberworld/map/ # This is an infinite virtual URL space Disallow: /tmp/ # these will soon disappear
この/robots.txt
ファイルの例は,cybermapper
と呼ばれるロボッ
トを除き,全てのロボットが/cyberworld/map/
で始まるURLを訪問
できないように指定します.
# robots.txt for http://www.site.com/ User-agent: * Disallow: /cyberworld/map/ # This is an infinite virtual URL space # Cybermapper knows where to go. User-agent: cybermapper Disallow:
この例は,このサイトを訪問できないことを示します.
# go away User-agent: * Disallow: /
Wgetを使用するとき,それが暗号化されていないパスワードをネットワークに流 すことを知っている必要があり,それはセキュリティの問題を提示するかもしれ ません.ここに主な発行と,いくつかの解決があります.
ps
を使用で見ることができます.これ
が問題の場合,コマンドラインからパスワードを置くことを避けてください--
例えば,このために.netrc
を使用することができます.
しかしその開発は,バグレポート,特徴の提案,パッチや感謝状など,多くの人々 の助けが無ければ,非常に遠いものとなっていたはずです.
以下の人々に特別な感謝を送ります(順不同).
ansi2knr
変換.
.netrc
サポート.
Digest
認証に対するサポートの寄付.
以下の人々は,パッチ,バグ/ビルドレポート,役立つ提案,ベータテスト,ファ ンメールと管理者が喜ばしいと感じるあらゆることを提供してくれました.
Tim Adam, Martin Baehr, Dieter Baron, Roger Beeman and the Gurus at Cisco, Mark Boyns, John Burden, Wanderlei Cavassin, Gilles Cedoc, Tim Charron, Noel Cragg, Andrew Davison, Ulrich Drepper, Marc Duponcheel, Andy Eskilsson, Masashi Fujita, Howard Gayle, Marcel Gerrits, Hans Grobler, Mathieu Guillaume, Karl Heuer, Gregor Hoffleit, Erik Magnus Hulthen, Richard Huveneers, Simon Josefsson, Robert Kleine, Fila Kolodny, Alexander Kourakos, Martin Kraemer, Tage Stabell-Kulo, Hrvoje Lacko, Dave Love, Jordan Mendelson, Lin Zhe Min, Charlie Negyesi, Andrew Pollock, Steve Pothier, Marin Purgar, Jan Prikryl, Keith Refson, Tobias Ringstrom, Heinz Salzmann, Robert Schmidt, Toomas Soome, Sven Sternberger, Markus Strasser, Szakacsits Szabolcs, Mike Thomas, Russell Vincent, Douglas E. Wegscheid, Jasmin Zainul, Kristijan Zimmer.
記載忘れの方へ謝罪し,そしてWgetメーリングリストの全ての方に多いに感謝し ます.
Version 2, June 1991
Copyright © 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and modification follow.
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
one line to give the program's name and an idea of what it does. Copyright (C) 19yy name of author This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.
The hypothetical commands show w
and show c
should show
the appropriate parts of the General Public License. Of course, the
commands you use may be called something other than show w
and
show c
; they could even be mouse-clicks or menu items--whatever
suits your program.
You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. signature of Ty Coon, 1 April 1989 Ty Coon, President of Vice
This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.
ホームディレクトリに.netrc
ファイ
ルがある場合,パスワードはそこで探されます.
追加の調査として,
WgetはContent-Length
ヘッダを見て,そして大きさを比較します.同じ
ではない場合,リモートファイルはタイムスタンプ告げることにかかわらず,ダ
ウンロードされます.