Node:Overview, Next:, Previous:Top, Up:Top

概要

GNU Wgetは,World Wide Webから,HTTP (Hyper Text Transfer Protocol) とFTP (File Transfer Protocol)という,2つの最も広範囲で使用されるイ ンターネットプロトコルを使用してファイルを回収する,自由に利用可能なネッ トワークユーティリティです.それには,ダウンロードをより容易にする多くの 便利な特徴があり,それらは以下の通りです.


Node:Invoking, Next:, Previous:Overview, Up:Top

呼び出し

デフォルトで,Wgetは呼び出しが非常に簡単です.基本的な構文は以下の通りで す.

wget [option]... [URL]...

Wgetは,コマンドラインで指定された全てのURLを,単にダウンロードしま す.URLは,以下で定義されるようなUniform Resource Locatorで す.

しかし,Wgetのデフォルトパラメータをいくつか変更したいかもしれません.そ うするために2つの方法が可能で,永久的に適切なコマンドを.wgetrc (see Startup File)に追加したり,コマンドラインで指定したりできます.


Node:URL Format, Next:, Previous:Invoking, Up:Invoking

URLの書式

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 URLtypeの特徴もサポートします.デフォルト で,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つの選択される形式は反対され,将来のサポートはやめる可能性があ ります.

これらの表記の違いを理解できなかったり,その使い方を知らない場合, LynxNetscapeのような,好みのブラウザで使用する,明白な普 通の書式を使用してください.


Node:Option Syntax, Next:, Previous:URL Format, Up:Invoking

オプションの構文

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の設定 をクリアにすることが便利になります.例えば,.wgetrcexclude_directories/cgi-binに設定する場合,以下の例は最 初にリセットし,それを除外するものとして/~nobody/~somebodyに設定します..wgetrc (see Wgetrc Syntax)の リストをクリアにすることもできます.

wget -X '' -X /~nobody,/~somebody


Node:Basic Startup Options, Next:, Previous:Option Syntax, Up:Invoking

基本的なスタートアップオプション

-V
--version
Wgetのバージョンを表示します.
-h
--help
Wgetのコマンドラインオプション全部を記述するヘルプメッセージを出力します.
-b
--background
スタートアップ直後にバックグラウンドに移行します.出力ファイルを -oで指定しない場合,出力はwget-logにリダイレクトされます.
-e command
--execute command
.wgetrc (see Startup File)の一部のように,commandを実行 します.このようなコマンドは.wgetrcのコマンドの後に実行さ れ,このためそれらに優先されます.


Node:Logging and Input File Options, Next:, Previous:Basic Startup Options, Up:Invoking

ログと入力ファイルオプション

-o logfile
--output-file=logfile
全てのメッセージをlogfileでログを取ります.メッセージは通常,標準 エラーに報告されます.
-a logfile
--append-output=logfile
logfileに追加します.古いログファイルを上書きする代わりに, logfileに追加する以外,これは-oと同じです.logfileが 無い場合は,新しいファイルを作成します.
-d
--debug
デバッグ出力に切替え,Wgetが正確に働かない場合,Wgetの開発に様々な重要な 情報として意味をなします.システム管理者が,デバッグサポート無しでのWget のコンパイルを選択している可能性もあり,その場合-dは働きません. デバッグサポートでのコンパイルは常に安全だということに注意してください-- デバッグサポートでコンパイルされたWgetは,-dで要求されるまで,デ バッグ情報を決して出力しません.バグレポートを送るため-dを 使用する方法の詳細は,See Reporting Bugs.
-q
--quiet
Wgetの出力を止めます.
-v
--verbose
全ての利用可能なデータを用いて,冗長な出力を開始します.デフォルトの出力 は冗長です.
-nv
--non-verbose
冗長でない出力--完全に静かにするのではなく(そうするには-qを使用 してください)冗長を停止し,それはエラーメッセージと基本的な情報は,まだ 出力されることを意味します.
-i file
--input-file=file
fileからURLを読み込み,その場合,URLはコマンドラインに置 く必要はありません.コマンド行と入力ファイルの両方にURLがある場合, コマンド行のものが最初に回収されます.fileHTMLドキュメント にする必要はありません(しかし,害が無い場合です)--URLだけ順番にリ ストアップされている場合,それで十分です.

しかし,--force-htmlを指定した場合,ドキュメントはhtmlと見 なされます.この場合,相対的なリンクで問題があるかもしれず,それは, <base href="url">をドキュメントに加えたり,コマンドラインで --base=urlを指定することで解決できます.

-F
--force-html
ファイルから入力を読み込むとき,HTMLファイルとして扱うことを強制し ます.これで,ローカルディスクの既存のHTMLファイルからの相対的なリ ンクを,HTML<base href="url">を加えたり, --baseコマンドラインオプションを使用することで回収できます.


Node:Download Options, Next:, Previous:Logging and Input File Options, Up:Invoking

ダウンロードオプション

-t number
--tries=number
リトライの回数をnumberに設定します.0やinfの指定は,無限に リトライします.
-O file
--output-document=file
ドキュメントは適切なファイルに書かれませんが,全て一緒に連結され, fileに書き込まれます.fileが既にある場合,上書きされます. file-の場合,ドキュメントは標準出力に書き込まれます.この オプションを含めると,挑戦回数を1に自動的に設定します.
-nc
--no-clobber
いくつかのファイルの再帰的な回収で,階層ディレクトリに保存するとき,既存 のファイルを破壊しません.このオプションは,多くのファイルの回収で中止し たところから続けたいとき,非常に便利です.ファイルが.html や(yuck).htm接尾子を持つとき,それらはローカルディスクからロード され,それがウェブから回収されたものの場合,統合されます.
-c
--continue
既存のファイルの取得を続けます.これは,他のプログラムで開始したダウンロー ドや,前回のWgetのインスタンスを終了したいとき便利です.以下のように書く ことができます.
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
回収形式をstyleに設定します.Wgetは画面にドットを出力しながらそれ ぞれのドキュメントの回収を追跡し,それぞれのドットは回収されたデータの固 定量を表現します.あらゆるドットの数は,数えやすくするため,クラス タで分けられます.このオプションで,前もって定義された形式,ドットが表 現するバイト数の定義,クラスタ内のドット数,そして行のドット数の1つを選 択できます.

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
タイムスタンプを開始します.詳細は,See Time-Stamping.
-S
--server-response
HTTPサーバが送るヘッダを出力したり,FTPサーバに返事を送ったり します.
--spider
このオプションで呼び出された場合,WgetはWeb spiderとして動作し,そ れはページをダウンロードせずその存在を調査することを意味します.例えば, 以下のようにブックマークの調査で使用できます.
wget --spider --force-html -i bookmarks.html

この特徴は,Wgetを真のWWW spiderの能力に近づけるため,さらにより多 くの仕事が必要です.

-T seconds
--timeout=seconds
読み込みタイムアウトをseconds秒に設定します.ネットワーク読み込み が発生するときはいつでも,ファイルディスクリプタはタイムアウトを調査し, それ以外では,接続をペンディングのままにします(読み込みを中断しません). デフォルトタイムアウトは900秒(15分)です.タイムアウトを0に設定するとタイ ムアウトの調査はできません.

何を行っているか分からない場合,このオプションでタイムアウトのデフォルト 値を小さくしないでください.

-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に設定すると,ダウンロードクォータは無制限になり ます.


Node:Directory Options, Next:, Previous:Download Options, Up:Invoking

ディレクトリオプション

-nd
--no-directories
再帰的に回収するとき,ディレクトリの階層を作成しません.このオプションを 開始すると,全てのファイルは現在のディレクトリに上書き無しで保存されます (名前が1度以上現れる場合,ファイル名は拡張子.nが付きます).
-x
--force-directories
-ndの反対です--階層無しで作成されていても,ディレクトリ階層を作 成します.例えば,wget -x http://fly.cc.fer.hr/robots.txtはファイ ルをfly.cc.fer.hr/robots.txtにダウンロードします.
-nH
--no-host-directories
ホストを前置したディレクトリの生成を不可にします.デフォルトで,Wgetを -r http://fly.cc.fer.hr/を用いて呼び出した場合, fly.cc.fer.hr/で始まるディレクトリ構造を作成します.このオプショ ンはそのような動作を不可にします.
--cut-dirs=number
ディレクトリコンポーネントの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
ディレクトリプレフィクスをprefixに設定します.ディレクトリプ レフィクスは,他の全てのファイルとサブディレクトリが保存されるディレク トリで,すなわち回収ツリーのトップです.デフォルトは.(カレントディ レクトリ)です.


Node:HTTP Options, Next:, Previous:Directory Options, Up:Invoking

HTTPオプション

--http-user=user
--http-passwd=password
HTTPサーバでのユーザ名をuserに,そしてパスワードを passwordに指定します.試みる形式によって,Wgetはbasic (安全 でない),またはdigest認証手法のどちらかを用いて符号化します.

もう1つの方法は,ユーザ名とパスワードをURL自身に書く方法です (see URL Format).Wgetの安全な発行についての詳細は,See Security Considerations.

-C on/off
--cache=on/off
オフに設定したとき,サーバサイドのキャッシュを不可にします.この場合, Wgetは,リモートサービスからファイルを得るため,キャッシュバージョンを返 す代わりに,リモートサーバに適切なディレクティブ(Pragma: no-cache)を送ります.これは,プロキシサーバの時代遅れのドキュメントを回 収し,クリアするときに特に役立ちます.

キャッシュはデフォルトで許可されます.

--ignore-length
残念ながら,HTTPサーバ(より正確にはCGIプログラム)は,偽の Content-Lengthヘッダを送り,それでは,ドキュメント全てが回収され ないので,Wgetがおかしくなります.Wgetが同じドキュメントを何度も何度も回 収し,そのたび毎に(通常でない)接続が同じバイト数で閉じている報告を得る場 合,この症状を見付けることができます.

このオプションを用いた場合,WgetはContent-Lengthヘッダを--まるで 存在しないかのように--無視します.

--header=additional-header
additional-headerHTTPに渡すために定義します.ヘッダは,1つ 以上の空白ではない文字の前に:を含み,改行を含めてはなりません.

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
プロキシサーバの認証に対する,ユーザ名userとパスワード passwordを指定します.Wgetはこれらをbasic認証手法で符号化し ます.
-s
--save-headers
HTTPサーバがファイルにつけて送ったヘッダを,空白行で分けて,実際の 内容の前につけて保存します.
-U agent-string
--user-agent=agent-string
agent-stringとしてHTTPサーバを識別します.

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として間違って述べてはなりません


Node:FTP Options, Next:, Previous:HTTP Options, Up:Invoking

FTPオプション

--retr-symlinks
FTPサイトのシンボリックリンクを,プレーンファイルであるかのように回 収します.すなわちローカルにリンクを作成しません.
-g on/off
--glob=on/off
FTPグラブをオン/オフします.グラブは,シェルのような特別文字 (ワイルドカード)を意味し,同じディレクトリから一度に1つ以上のファ イルを回収するための*?[]のようなもので, 以下のようにします.
wget ftp://gnjilux.cc.fer.hr/*.msg

デフォルトで,URLがグラブ文字を含む場合,グラブはオンです.このオプ ションは,永久的にグラブのオン/オフに使用できます.

シェルによる拡張から保護するため,URLを引用符で囲む必要があるかもし れません.グラブはWgetにディレクトリリストを探させ,それはシステムで指定 されます.これは,現在の仕事がFTPサーバでのみ働く理由です(そしてそ れは,Unix ls出力をエミュレートします).

--passive-ftp
passive FTP回収手法を使用し,そして,そこでクライアントはデー タ接続を開始します.これは,FTPをファイアーウォールの後ろで働かせる ため,必要なときもあります.


Node:Recursive Retrieval Options, Next:, Previous:FTP Options, Up:Invoking

再帰的な回収オプション

-r
--recursive
再帰的な回収を開始します.詳細はSee Recursive Retrieval.
-l depth
--level=depth
再帰的な最大深度レベルをdepthに設定します.(see Recursive Retrieval).デフォルト最大深度は5です.
--delete-after
このオプションは,ダウンロードした,全ての単一ファイルを削除す るよう,Wgetに伝えます.それはプロキシから取得した一般的なページに対し便 利で,例えば以下のようにします.
wget -r -nd --delete-after http://whatever.com/~popular/page/

-rオプションは再帰的に回収し,-ndはディレクトリを作成しま せん.

-k
--convert-links
相対的でないリンクをローカルの相対的なものに変換します.実際にダウンロー ドされたドキュメントの参照のみが変換されます.残りは変換されません.

ダウンロード後のみ,Wgetはリンクがダウンロードされたことを知ることができ ます.そのため,-kが行う多くの仕事は,ダウンロード後に実行されま す.

-m
--mirror
ミラーに適したオプションを開始します.このオプションは回収とタイムスタン プを開始し,無限の再帰深度を設定し,FTPディレクトリリストを保ちます. 現在は,-r -N -l inf -nrと同じです.
-nr
--dont-remove-listing
FTPの回収で生成された,一時的な.listingを削除しません.通常, これらのフィルはFTPサーバから得た生のディレクトリリストを含みます. それを削除しないことで,ミラーの実行時やデバッグ目的で,完全にリモートの ファイルリストへのアクセスを便利にします.


Node:Recursive Accept/Reject Options, Previous:Recursive Retrieval Options, Up:Invoking

再帰の適応/拒絶オプション

-A acclist --accept acclist
-R rejlist --reject rejlist
受け入れるまたは拒絶するため,カンマで分けられたファイル名の接尾子やパター ンを指定します(詳細は,See Types of Files.).
-D domain-list
--domains=domain-list
受け入れるドメインと,DNSが探すものを設定し,そのとき domain-listはカンマで分けられたリストとなります.-Hを開始し ないことに注意してください.このオプションは,1つのホストのみ補っている 場合でも(see Domain Acceptance),動作を速くします.
--exclude-domains domain-list
DNS検索から,カンマで分けられたdomain-listで与えるドメインを 削除します(see Domain Acceptance).
-L
--relative
相対的なリンクのみたどります.たとえ同じホストの場合でも,乱すこと無く, 特定のホームページを指定して回収するとき便利です(see Relative Links).
--follow-ftp
HTMLドキュメントからのFTPリンクをたどります.このオプションが 無い場合,Wgetは全てのFTPリンクを無視します.
-H
--span-hosts
再帰的な回収時に,ホストに跨ることを可能とします(see All Hosts).
-I list
--include-directories=list
ダウンロード時に,だどりたいディレクトリのカンマで分けられたリストを指定 します(詳細は,See Directory-Based Limits.).listの要素はワイル ドカードを含ることができます.
-X list
--exclude-directories=list
ダウンロードから削除したいディレクトリの,カンマで分けられたリストを指定 します(詳細は,See Directory-Based Limits.).listの要素はワイル ドカードを含められます.
-nh
--no-host-lookup
時間がかかる,ほとんど全てのホストのDNS検索を不可にします (see Host Checking).
-np
--no-parent
再帰的な回収時に,親ディレクトリへ登りません.特定の階層以下のファ イルのみダウンロードすることを保証するので,これは便利なオプションです. 詳細は,See Directory-Based Limits.


Node:Recursive Retrieval, Next:, Previous:Invoking, Up:Top

再帰的な回収

GNU Wgetは,Web(または,単一のHTTPFTPサーバ)の部分を,最初の 深さからのリンク,そしてディレクトリ構造を渡り歩くことができます.これは 再帰的回収,または再帰と呼ばれます.

HTTP URLを用いると,Wgetは与えられたURLから得たHTMLhrefsrcのようなマークアップを通じてHTMLドキュメント が参照していたファイルを回収するドキュメントを,回収統合します.新たにダ ウンロードされたファイルもtext/html形式の場合,それは解析され更に 続けます.

回収が下降する最大の深度は,-lオプションで指定されます(デフォ ルトの最大深度は5階層です).See Recursive Retrieval.

FTP URLを再帰的に回収するとき,Wgetはリモートサーバの与えられ た(指定された深度以上のサブディレクトリを含め)ディレクトリツリーから,全 てのデータを回収し,ローカルにミラーイメージを作成します.FTPの回収 も,depthパラメータで制限されます.

デフォルトで,Wgetはローカルディレクトリツリーを作成し,それはリモートサー バで見つかったものに対応します.

再帰的回収は複数の応用が可能で,最も重要なものはミラーです.それは, WWWプレゼンテーションと,その他のネットワーク接続が遅い時に,ファイ ルをローカルに保存することでバイパスするために役立ちます.

再帰呼び出しは,ネットワークを通じたデータの高速転送のため,システムの過 負荷を起こす可能性があることを警告します.これらは全て,他のユーザの仕事 を妨げる可能性があります.ミラーしている外部サーバも同じことです-- 連続 的な取得のより多くの要求は,その負荷をより大きくします.

不注意な回収は,ファイルシステムを制御不能なまでに一杯にし,それでマシン は停止するはずです.

負荷は,最大再帰レベル(-l)を低くする,またはリトライ回数 (-t)を低くすることで最小にできます.リモートサーバへの要求を遅く するため,-wオプションの使用や,同様に,リンクをたどる (see Following Links)数を小さくする多数のオプションも考えることもで きます.

再帰的な回収は,正確に使用されると良いものです.不注意で破壊を引き起こす ことが無いようあらゆる用心を図ってください.


Node:Following Links, Next:, Previous:Recursive Retrieval, Up:Top

リンクの追跡

再帰的な回収で,不必要なデータの回収を導くことは望みません.ほとんどいつ も,正確にダウンロードしたいものと,Wgetにたどらせたい特定のリンクのみを ユーザは心に留めます.

例えば,fly.cc.fer.hrから音楽のアーカイブをダウンロードしたい場合, アーカイブの曖昧な部分を参照して生じる,全てのホームページのダウンロード を望みません.

たどりたいリンクを正確に調整することを可能とする,いくつかのメカニズムが Wgetにはあります.


Node:Relative Links, Next:, Previous:Following Links, Up:Following Links

相対的なリンク

相対的なリンクのみたどるとき(option -L),再帰的な回収はホストを決 して跨ぎません.DNS検索の貴重な時間は実行されず,ネットワークの最低 限の負担で,非常に速く処理されます.これはよくあるニーズで,様々な x2htmlコンバータの出力をミラーするとき,それらは相対リンクを生成 するので特に適しています.


Node:Host Checking, Next:, Previous:Relative Links, Up:Following Links

ホストの調査

相対的リンクを単にだどる欠点は,人間は実際には同じホストと実際には同じペー ジに対し絶対的リンクを混ぜることが多いためです.このモード(リンクをたど るデフォルトモード)では,同じホストを参照する全てのURLは回収されま す.

このオプションの問題は,ホストとドメインの別名です.実際,Wgetが regoc.srce.hrwww.srce.hrが同じホストであるとか, fly.cc.fer.hrfly.cc.etf.hrと同じホストであるとかを知る方 法はありません.絶対的リンクに出会うときはいつも,同じホストを扱っている 可能性を調査するため,ホストはgethostbynameDNS検索されます. gethostbynameの結果はキャッシュされますが,非常に遅くなり,例えば, 異なるホストのホームページの大きな索引を扱うときです(それぞれのホストに 対しそうする必要があり,開始ホストの別名かどうかを知るため, DNS解決されるためです).

オーバーヘッドを避けるため,-nhを使用でき,それはDNS解決と, Wgetにホストを文字通り比較させることを停止します.これはことを非常に速く 実行させますが,信頼性も小さくなるでしょう(例えば,www.srce.hrregoc.srce.hrは異なるホストとして,フラグが立ちます).

現在のHTTPサーバは,1つのIPアドレスで異なるvirtual servers ホ ストとなることが可能で,それぞれは独自のディレクトリ階層があります.その ような"サーバ"は,ホスト名(全て同じIPアドレスを持ちます)で区別されます. これが働くため,クライアントはHostヘッダを送る必要があり,それは Wgetが行います.しかしこの場合,Wgetはホストの"実際の"アドレスを占って みたり,それぞれのアクセスに対し同じホスト名を使用してみてはならず,すな わち,-nhをオンにする必要があります.

言い替えると,-nhオプションは,ホスト名で区別されたバーチャルサー バからの回収を可能とするために使用する必要があります.そのようなサーバの 設定が増えるにつれ,-nhの動作は,将来デフォルトとなるかもしれませ ん.


Node:Domain Acceptance, Next:, Previous:Host Checking, Up:Following Links

ドメインの受け入れ

-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/


Node:All Hosts, Next:, Previous:Domain Acceptance, Up:Following Links

全てのホスト

-D無しで-Hが指定されたとき,全てのホストは自由に跨げます. 最大深度以外,Wgetがドキュメントを取ってくるネットの部分がどこであれ,制 限がありません.www.yahoo.comにページ参照があった場合,そうします. そのようなオプションは,それ自身滅多に役に立ちません.


Node:Types of Files, Next:, Previous:All Hosts, Up:Following Links

ファイルの形式

ウェブから資料をダウンロードするとき,特定のファイル形式のみを回収するよ う,制限したいときもよくあります.例えば,GIFSをダウンロードするこ とに興味がある場合,ポストスクリプトのドキュメントでの負荷は嬉しいはずが 無く,逆もまたそうです.

Wgetは,この問題を扱う2つのオプションを提案します.それぞれのオプション は,短い名前,長い名前,そして.wgetrc内の等価コマンドをリストアッ プします.

-A acclist
--accept acclist
accept = acclist
--acceptオプションの引数は,Wgetが再帰的な回収の間にダウンロード するファイルの,接尾子やパターンのリストです.接尾子はファイルの終りの部 分で,"通常の"文字列,例えばgif.jpgから成り立ちます. パターンマッチはシェルのワイルドカードを含み,例えば,books*zelazny*196[0-9]*です.

そして,wget -A gif,jpgを指定すると,Wgetはgifjpg で終るファイルのみ,すなわちGIFJPEGをダウンロードします.一 方,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をリンク先を知るためにロード する必要があります--再帰的な回収は,そうしなければ意味がありません.


Node:Directory-Based Limits, Next:, Previous:Types of Files, Up:Following Links

ディレクトリベースの制限

他のリンクを追う能力にもかかわらず,ファイルがあるディレクトリを基に,回 収するファイルの制限を置くことは便利なときも良くあります.これには多くの 理由があります--ホームページは合理的なディレクトリ構造に組織化されてい るかもしれません.またはいくつかのディレクトリ,例えば/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に似ています.


Node:FTP Links, Previous:Directory-Based Limits, Up:Following Links

FTPリンクをだどる

FTPの規則は,そうさせる必要があるので,幾分特殊です.HTMLドキュ メントのFTPリンクは参照の目的を含むことが多く,デフォルトでダウンロー ドするため不便なことがよくあります.

HTMLドキュメントからFTPへのリンクをたどらせるため, --follow-ftpオプションを指定する必要があります.そうすることで, FTPリンクは,-Hの設定にかかわらずホストを跨ぎます.FTP リンクがHTTPサーバと同じホストを示すことが滅多にないので,これは論 理的です.同様の理由で-Lオプションは,そのようなダウンロードで効 果がありません.一方,ドメインの受け入れ(-D)と接尾子の規則 (-A-R)は通常適用されます.

また,FTPディレクトリへのリンクをたどることは,再帰的回収以上ではな いことに注意してください.


Node:Time-Stamping, Next:, Previous:Following Links, Up:Top

タイムスタンプ

インターネットからの情報のミラーの側面で最も重要なことの1つは,アーカイ ブの更新です.

アーカイブを何度も何度もダウンロードすると,わずかに変更されたファイルの 置換だけでは勿体なく,それは,バンド帯域とお金の無駄使いと更新する時間の 両方の意味です.これは,全てのミラーツールが逐次的な更新のオプションを提 案する理由です.

そのような更新メカニズムは,リモートサーバが新しいファイルの検索で, スキャンされることを意味します.これらの新しいファイルのみ,古いものに置 換されます.

以下の2つの条件のどちらか1つが当てはまる場合,ファイルは新しいものと考え られます.

  1. その名前のファイルが,ローカルにまだ存在しない.
  2. その名前のファイルが存在するが,リモートファイルがローカルファイルより後 で編集されている.

これをインプリメントするため,プログラムは,リモートとローカルの両方のファ イルが最後に更新された時間に気付いている必要があります.そのような情報は, タイムスタンプと呼ばれます.

GNU Wgetのタイムスタンプは,--timestamping (-N)オプション や,.wgetrcでのtimestamping = onの命令を通じて開始されます. このオプションで,それぞれのファイルをダウンロードするため,Wgetは,存在 する同じ名前のローカルファイルを調査します.それが存在し,リモートファイ ルが古い場合,Wgetはそれをダウンロードしません.

ローカルファイルが存在しない場合や,ファイルサイズが一致しない場合,Wget はタイムスタンプを気にせずに,リモートファイルをダウンロードします.


Node:Time-Stamping Usage, Next:, Previous:Time-Stamping, Up:Time-Stamping

タイムスタンプの利用

タイムスタンプの利用は単純です.編集日時を保つため,ダウンロードしたいファ イルに対し以下のようにします.

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に再取得させます.

HTTPFTPの回収の両方で,(-Nにかかわらず)Wgetは,タイム スタンプを取得した場合,すなはち,FTPに対するディレクトリリストや, HTTPに対するLast-Modifiedヘッダの取得で,ローカルファイルに 正しいタイムスタンプを打ちます.

毎週,GNUアーカイブをミラーしたい場合,毎週以下のコマンドを入力するでしょ う.

wget --timestamping -r ftp://prep.ai.mit.edu/pub/gnu/


Node:HTTP Time-Stamping Internals, Next:, Previous:Time-Stamping Usage, Up:Time-Stamping

HTTPタイムスタンプの内部

HTTPのタイムスタンプは,Last-Modifiedヘッダの調査により実行 されます.HTTPでファイルfoo.htmlを回収したい場合,Wgetは foo.htmlがローカルに存在しているかどうかを調べます.存在しない場 合,foo.htmlは無条件に回収されます.

ローカルにファイルがある場合,Wgetは最初にローカルのタイムスタンプを調べ (ls -lでそれを調べることに似ています),そして,リモートファイルの 情報を要求するため,HEAD要求をリモートサーバに送ります.

Last-Modifiedヘッダは,ファイルがより最近編集され("新しく"され) たことを知るために調べられます.リモートファイルがより新しい場合,ダウン ロードされます.古い場合,Wgetは諦めます.2

おそらく,HTTPタイムスタンプは,If-Modified-Since要求を使用 してインプリメントされるべきです.


Node:FTP Time-Stamping Internals, Previous:HTTP Time-Stamping Internals, Up:Time-Stamping

FTPタイムスタンプの内部

理論上,FTPタイムスタンプはHTTPと同じように働きますが, FTPにはヘッダがありません--タイムスタンプはディレクトリリストから 受け取るはずです.

それぞれのディレクトリファイルを回収するため,Wgetはリストの取得に LISTコマンドを使用します.それは,Unix ls -lリストと想定し リストを解析し,タイムスタンプを抽出します.残りは正確にHTTPと同じ です.

全てのディレクトリリストがUnix形式のリストだという仮定は,非常に不自然に 感じるかもしれませんが,経験的にはそうではなく,その理由は,多くの非Unix FTPサーバが,ほとんど(全て?)のクライアントがそれを理解できるので, Unixのようなリスト書式を使用しているためです.RFC959定義が,タイム スタンプはいうまでもなく,ファイルリストを取得する標準的な方法ではないこ とを覚えておいてください.我々は,将来の標準がこのように定義されることを 期待することしかできません.

もう1つの非標準の解決方法は,(評判のよいwu-ftpdを含め)いくつかの FTPサーバがサポートするMDTMコマンドの使用を含み,それは指定 したファイルの正確な時間を返します.Wgetは,将来このコマンドをサポートす るかもしれません.


Node:Startup File, Next:, Previous:Time-Stamping, Up:Top

スタートアップファイル

コマンドライン引数で,Wgetのデフォルト設定を変更する方法を知ると,これら の設定を永久的に行いたいと思うかも知れません.Wgetスタートアップファイル-- .wgetrc--を作成するという便利な方法でそうすることができます.

さらに,.wgetrcは"主な"初期化ファイルで,強固なパスワードに対す る特別な能力があるので便利です.このためWgetは,$HOME/.netrcがあ る場合は,その内容を読み込み翻訳します..netrc書式はシステムのマ ニュアルで見つかります.

Wgetは、コマンドの限定されたセットを認識して、スタートアップ時に .wgetrcを読みます。


Node:Wgetrc Location, Next:, Previous:Startup File, Up:Startup File

Wgetrcの場所

初期化時,Wgetはデフォルトで/usr/local/etc/wgetrc (または,Wgetが そこにインストールされていない場合,/usr/localではない接頭辞)であ るglobalなスタートアップファイルを探し,存在する場合はそれからコマ ンドを読み込みます.

それから,ユーザファイルを探します.環境変数WGETRCが設定されてい る場合,そのファイルをロードしようとします.失敗した場合,それ以上何もし ません.

WGETRCが設定されていない場合,Wgetは$HOME/.wgetrcをロード しようとします.

ユーザ設定がシステム全体のものの後にロードされるということは,ユーザの wgetrcと衝突した場合,システム全体のwgetrc(デフォルトで /usr/local/etc/wgetrc)に優先するということを意味します.全 体主義の管理者は不在です!


Node:Wgetrc Syntax, Next:, Previous:Wgetrc Location, Up:Startup File

Wgetrcの構文

wgetrcコマンドの構文は単純です.

variable = value

変数コマンドとも呼ばれます.有効なは異なるコマンド に対し異なります.

コマンドは大文字小文字とアンダースコアを識別しません.このため, DIr__PrefiXdirprefixと同じです.#で始まる行と空白 のみ含む行は,空行として捨てられます.

カンマで分けられたリストを期待するコマンドは,空のコマンドでリストをクリ アします.そのため,全体的なwgetrcで指定された拒絶するリストをリ セットしたい場合,以下のようにして行うことができます.

reject =


Node:Wgetrc Commands, Next:, Previous:Wgetrc Syntax, Up:Startup File

Wgetrcコマンド

コマンドの完全なセットは以下にリストアップされていて,=以下の文字 は,コマンドに渡す値を意味します.on/offonまたは off (同様に1または0),stringは空ではない文字 列,また,nは正の整数です.例えば,デフォルトでプロキシサーバの使 用を不可にするため,use_proxy = offのように指定できます.適切な場 合は,無限値に対しinfを使用できます.

ほとんどのコマンドは,コマンドラインオプションと同じですが (see Invoking),時代遅れのものや滅多に使用されないものは例外です.

accept/reject = string
-A/-R (see Types of Files)と同じです.
add_hostdir = on/off
ホストが前置したファイル名を利用可/不可にします.-nHはそれを不可 にします.
continue = on/off
回収の継続を利用可/不可にし,それは-c (利用可にする)と同じです.
background = on/off
バックグランドへの移行を可/不可にし,それは-b (利用可にする)と同 じです.
base = string
相対的なURLのベースを設定し,それは-Bと同じです.
cache = on/off
オフに設定した場合,サーバキャッシュを不可にします.-Cオプション を参照してください.
convert links = on/off
相対的でないリンクをローカルに変換します.それは-kと同じです.
cut_dirs = n
n個のリモートディレクトリコンポーネントを無視します.
debug = on/off
デバッグモードで,それは-dと同じです.
delete_after = on/off
ダウンロード後削除し,それは--delete-afterと同じです.
dir_prefix = string
ディレクトリツリーのトップで,それは-Pと同じです.
dirstruct = on/off
ディレクトリ構造のオン/オフを切替え,それは,それぞれ-x-ndと同じです.
domains = string
-D (see Domain Acceptance)と同じです.
dot_bytes = n
回収中に見ている1ドットが"含む"バイト数(デフォルトで1024)を指定します. 値にkmを後置することが可能で,それぞれキロバイトとメガバ イトの代わりです.ドットの設定で,必要に応じてドットの回収を適応させたり, 前もって定義された形式を使用できます(see Download Options).
dots_in_line = n
回収中にそれぞれの行に出力するドットの数(デフォルトで50)を指定します.
dot_spacing = n
1クラスタのドットの数(デフォルトで10)を指定します.
dot_style = string
--dot-styleを用いるように,ドットの回収形式を指定します.
exclude_directories = string
ダウンロードから除外したいディレクトリのカンマで分けられたリストを指定し, それは-X (see Directory-Based Limits)と同じです.
exclude_domains = string
--exclude-domains (see Domain Acceptance)と同じです.
follow_ftp = on/off
HTMLドキュメントからFTPリンクをたどり,それは-fと同じで す.
force_html = on/off
オンに設定された場合,入力ファイル名がHTMLドキュメントと同じと見な すことを強制し,それは-Fと同じです.
ftp_proxy = string
環境で指定されたものの代わりに,stringFTPプロキシとして使用 します.
glob = on/off
グラブをオン/オフし,それは-gと同じです.
header = string
--headerのように,追加ヘッダを定義します.
http_passwd = string
HTTPパスワードを設定します.
http_proxy = string
環境で指定されたものの代わりに,stringHTTPプロキシとして使 用します.
http_user = string
HTTPユーザをstringに設定します.
ignore_length = on/off
オンに設定した場合,Content-Lengthヘッダを無視します. --ignore-lengthと同じです.
include_directories = string
ダウンロード時にだどりたい,カンマで分けられたディレクトリのリストを指定 し,それは-Iと同じです.
input = string
-iのように,stringからURLを読み込みます.
kill_longer = on/off
content-lengthヘッダで指定されているより長いデータを無効だと考え(そして それを回収し)ます.デフォルトの動作はそこにあるデータと同じだけ保存し, つまりContent-Lengthの値より大きいまたは同じであると規定されます.
logfile = string
ログファイルを設定し,それは-oと同じです.
login = string
FTPに対するリモートマシンでのユーザ名です.デフォルトは anonymousです.
mirror = on/off
ミラーリングをオン/オフします.-mと同じです.
netrc = on/off
netrcの読み込みをオン/オフします.
noclobber = on/off
-ncと同じです.
no_parent = on/off
--no-parent (see Directory-Based Limits)のように,ディレクト リ階層外部への回収を禁止します.
no_proxy = string
環境で指定したものの代わりに,プロキシの負荷を避けるため,stringを カンマで分けられたドメインのリストとして使用します.
output_document = string
出力ファイル名を設定し,それは-Oと同じです.
passive_ftp = on/off
パッシブFTPに設定し,それは--passive-ftpと同じです.
passwd = string
FTPパスワードをpasswordに設定します.設定していない場合,パス ワードのデフォルトはusername@hostname.domainnameです.
proxy_user = string
--proxy-userのように,プロキシ認証のユーザ名をstringに設定 します.
proxy_passwd = string
--proxy-passwdのように,プロキシ認証のパスワードをstringに 設定します.
quiet = on/off
静かなモードで,それは-qと同じです.
quota = quota
ダウンロードのクォータを指定し,それは全体的なwgetrcに置くと便利です.ダ ウンロードクォータが指定された場合,Wgetは,ダウンロードの合計がクォータ より大きくなった後,回収を停止します.クォータはバイト(デフォルト),キロ バイト(kの追加),またはメガバイト(mの追加)で指定できます. このため,quota = 5mはクォータを5メガバイトに設定します.ユーザの スタートアップファイルがシステム設定に優先することに注意してください.
reclevel = n
再帰のレベルで,それは-lと同じです.
recursive = on/off
再帰をオン/オフし,それは-rと同じです.
relative_only = on/off
相対リンクのみをたどり,それは-L (see Relative Links)と同じで す.
remove_listing = on/off
オンに設定された場合,WgetがダウンロードしたFTPリストを削除します. オフの設定は-nrと同じです.
retr_symlinks = on/off
オンに設定したとき,シンボリックリンクをプレーンファイルであるかのように 回収します.--retr-symlinksと同じです.
robots = on/off
/robots.txtファイル(see Robots)を使用します(または使用しませ ん)デフォルト(on)を変更する前に,自分が行っていることが分かってい るか確かめてください.
server_response = on/off
HTTPFTPサーバのレスポンスの出力を行うかどうか選択し,それは -Sと同じです.
simple_host_check = on/off
-nh (see Host Checking)と同じです.
span_hosts = on/off
-Hと同じです.
timeout = n
タイムアウトの値を設定し,それは-Tと同じです.
timestamping = on/off
タイムスタンプのオン/オフを切替えます.-N (see Time-Stamping) と同じです.
tries = n
URL毎の再挑戦回数を設定し,それは-tと同じです.
use_proxy = on/off
プロキシサポートのオン/オフを切替えます.-Yと同じです.
verbose = on/off
冗長出力のオン/オフを切替えます.-v/-nvと同じです.
wait = n
回収の間でn秒待ち,それは-wと同じです.


Node:Sample Wgetrc, Previous:Wgetrc Commands, Up:Startup File

Wgetrcの見本

これは,配布物で与えられる初期化ファイルの例です.それは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


Node:Examples, Next:, Previous:Startup File, Up:Top

明確さのため,例は3つのセクションにクラス分けされています.最初のセクショ ンは初心者のためのチュートリアルです.2番目のセクションは,より複雑なプ ログラムの特徴のいくつかを説明します.3番目のセクションは,ミラー管理者 のためのアドバイスと,同様に,より複雑な特徴(ひねくれた呼び出しもありま す)を説明します.


Node:Simple Usage, Next:, Previous:Examples, Up:Examples

簡単な使用方法


Node:Advanced Usage, Next:, Previous:Simple Usage, Up:Examples

高度な使用方法


Node:Guru Usage, Previous:Advanced Usage, Up:Examples

グルの使用方法


Node:Various, Next:, Previous:Examples, Up:Top

様々なもの

この章は,どこにも適さなかったあらゆるものを含みます.


Node:Proxies, Next:, Previous:Various, Up:Various

プロキシ

プロキシは,リモートサーバからローカルクライアントにデータを転送す るために設計された,特別な目的のHTTPサーバです.プロキシの1つの典型 的な使用は,遅い接続にいるユーザのため,ネットワーク負荷を軽くすることで す.これは,転送したデータをキャッシュするプロキシを通じて,全ての HTTPFTPの要求の経路を作ることで達成します.キャッシュリソー スが再び要求されたとき,プロキシはキャッシュからデータを返します.プロキ シのもう1つの使用は,(セキュリティの理由で)インターネットに残されている ものから,内部のネットワークを分けてい会社のためです.Webから情報を得る ため,それらのユーザは,認証されたプロキシを使用してリモートデータに接続 し回収します.

Wgetは,HTTPFTPの回収の両方でプロキシをサポートします.Wget が認識できるように,プロキシの位置を指定する標準的な方法は,以下の環境変 数を使用することです.

http_proxy
この変数は,HTTPに接続するためのプロキシのURLを含むべきです.
ftp_proxy
この変数は,FTPに接続するためのプロキシのURLを含むべきです. HTTP_PROXYFTP_PROXYを同じURLに設定することは,全く普通 です.
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-userproxy-passwordオプションと,等価の.wgetrcでの proxy_userproxy_passwdの設定を使用できます.


Node:Distribution, Next:, Previous:Proxies, Up:Various

配布

全てのGNUユーティリティのように,Wgetの最近のバージョンは,GNUアーカイブ サイトprep.ai.mit.eduとそのミラーで見つかります.例えば,Wget 1.5.3は, <ftp://prep.ai.mit.edu/pub/gnu/wget-1.5.3.tar.gz>で見付け ることができます.


Node:Mailing List, Next:, Previous:Distribution, Up:Various

メーリングリスト

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>に保存されます.


Node:Reporting Bugs, Next:, Previous:Mailing List, Up:Various

バグの報告

GNU Wgetに関するバグレポートをbug-wget@gnu.orgに送ることを歓迎 します.大衆にとってバグだと思ったもの(すなわち,より多くの人々が知らさ れるべきであるもの)は,wget@sunsite.auc.dkのメーリングリストに Ccすることができます.

実際にバグレポートを提出する前に,以下の2,3の単純なガイドラインに従って みてください.

  1. 動作が本当にバグだということを確認してみてください.Wgetが壊れた場合,そ れはバグです.Wgetがドキュメントのように動作しない場合,それはバグです. 奇妙な動作をするが,期待した動作をさせる方法について確かではない場合,お そらくバグです.
  2. できるだけ単純な状況で,バグを繰り返してみてください.例えば,Wgetが wget -rLl0 -t5 -Y0 http://yoyodyne.com -o /tmp/logで壊れる場合, より単純なオプション設定で壊れるかどうか,見てみるべきです.

    また,.wgetrcの内容を知ることに興味がありはしますが,バグメッセー ジにそれをそのままダンプするのは,余り良いアイディアではありません.代わ りに,.wgetrcを伴うバグの報告が道を外れていないか,最初に見るべき です..wgetrcの設定がバグに影響があることが分かる場合のみ,ファイ ルの適切な部分をメールすべきです.

  3. Wgetを-dオプションで開始し,ログ(または,その適切な部分)を送って ください.Wgetがデバッグのサポート無しでコンパイルされている場合,再コン パイルしてください.デバッグサポートをオンにしたバグの追跡は,非常 に簡単になります.
  4. Wgetが壊れた場合,デバッガで動作してみてください.例えば,逆追跡するため, gdb `which wget` coreとしwhereと入力します.
  5. バグがある場所を見付け,それをフィクスしパッチを送ってください.:-)


Node:Portability, Next:, Previous:Reporting Bugs, Up:Various

移植

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メーリングリストに報告すべきです.


Node:Signals, Previous:Portability, Up:Various

シグナル

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-ckill -TERMkill -KILLは同様にそれをキルします.


Node:Appendices, Next:, Previous:Various, Up:Top

付録

この章は,私が役に立つと考えるリファレンスを含み,それはロボットの除外の 標準仕様のようなものと,また,GNU Wgetへの貢献者のリストです.


Node:Robots, Next:, Previous:Appendices, Up:Appendices

ロボット

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の 文章化されたバージョンを(わずかに修正して)提供します.


Node:Introduction to RES, Next:, Previous:Robots, Up:Robots

RESの紹介

WWWロボット (または,wanderersspidersと呼ばれます)は, リンクされたページの再帰的な回収で,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>

で見つけることができます.


Node:RES Format, Next:, Previous:Introduction to RES, Up:Robots

RESの書式

/robots.txtファイルの書式と意味論は以下の通りです.

ファイルは,1つ以上の(CRCR/NL,またはNLで終端され た)空白行で分けられた,1つ以上のレコードから成り立ちます.それぞれのレコー ドは以下の形式の行から成り立ちます.

<field>:<optionalspace><value><optionalspace>

フィールド名は,大文字小文字を認識します.

コメントは,UNIXボーンシェルの慣習を使用して,ファイルに含めることができ ます.#文字は,(もしあれば)前にスペースがあることをを示すために使 用され,行の残りは行の終りまで削除されます.コメントのみを含む行は,完全 に削除され,それゆえレコードの境界を示しません.

レコードは1つ以上の代理ユーザ行で始まり,以下で詳述する1つ以上の不許可行 が続きます.理解できないヘッダは無視されます.

空の/robots.txtファイルの存在は明示的に関連付された意味論を持たず, まるで存在しないかのように扱われ,すなわち,すべてのロボットは歓迎されて いると考えます.


Node:User-Agent Field, Next:, Previous:RES Format, Up:Robots

代理ユーザフィールド

このフィールドの値は,レコードがアクセスポリシーを記述しているロボットの 名前です.

1つ以上の代理ユーザフィールドが存在する場合,レコードは1つ以上のロボット に対しアクセスポリシーを示す記述です.少なくとも1つのフィールドがレコー ド毎に存在するしている必要があります.

ロボットは,このフィールドの解釈を自由に行います.バージョン情報が無い大 文字小文字の基底文字の一致が推奨されます.

値が*の場合,レコードは,あらゆるロボットに対するデフォルトのアク セスポリシーが,他のレコードに一致していないことを記述します.多くのその ようなレコードが,/robots.txtファイルにあることは許可されません.


Node:Disallow Field, Next:, Previous:User-Agent Field, Up:Robots

不許可フィールド

このフィールドの値は,訪問されない特定のURLを指定します.これはフル パスでも部分的なパスでも可能です.この値で始まるあらゆるURLは回収で きません.例えば,Disallow: /help/help.html/help/index.htmlの両方を不許可にするのに対し,Disallow: /help//help/index.htmlを不許可にしますが,/help.htmlは 許可します.

あらゆる空の値は,全てのURLが回収できることを示します.少なくとも1 つの不許可フィールドがレコードに存在する必要があります.


Node:Norobots Examples, Previous:Disallow Field, Up:Robots

ロボット拒否の例

以下の/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: /


Node:Security Considerations, Next:, Previous:Robots, Up:Appendices

セキュリティの考慮

Wgetを使用するとき,それが暗号化されていないパスワードをネットワークに流 すことを知っている必要があり,それはセキュリティの問題を提示するかもしれ ません.ここに主な発行と,いくつかの解決があります.

  1. コマンドラインのパスワードは,psを使用で見ることができます.これ が問題の場合,コマンドラインからパスワードを置くことを避けてください-- 例えば,このために.netrcを使用することができます.
  2. 安全でない基本的な認証方式を使用すると,暗号化されていないパスワー ドがネットワークのルータとゲートウェイと通じて転送されます.
  3. FTPパスワードも暗号化されません.現在これに関しては良い解決方があり ません.
  4. Wgetの"通常の"出力はパスワードを隠そうとしますが,デバッグログは,あら ゆる形式でそれらを表示します.この問題は,バグの報告を送るとき注意するこ とで避けます(そう,それらを私に送るときもです).


Node:Contributors, Previous:Security Considerations, Up:Appendices

寄稿者

しかしその開発は,バグレポート,特徴の提案,パッチや感謝状など,多くの人々 の助けが無ければ,非常に遠いものとなっていたはずです.

以下の人々に特別な感謝を送ります(順不同).

以下の人々は,パッチ,バグ/ビルドレポート,役立つ提案,ベータテスト,ファ ンメールと管理者が喜ばしいと感じるあらゆることを提供してくれました.

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メーリングリストの全ての方に多いに感謝し ます.


Node:Copying, Next:, Previous:Appendices, Up:Top

GNU GENERAL PUBLIC LICENSE

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.

Preamble

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.

  1. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".

    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.

  2. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.

    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.

  3. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
    1. You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
    2. You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
    3. If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)

    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.

  4. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
    1. Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
    2. Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
    3. Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)

    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.

  5. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
  6. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
  7. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
  8. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.

    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.

  9. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
  10. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

    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.

  11. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
  12. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
  13. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

How to Apply These Terms to Your New Programs

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.


Node:Concept Index, Previous:Copying, Up:Top

概念の索引

Table of Contents


Footnotes

  1. ホームディレクトリに.netrcファイ ルがある場合,パスワードはそこで探されます.

  2. 追加の調査として, WgetはContent-Lengthヘッダを見て,そして大きさを比較します.同じ ではない場合,リモートファイルはタイムスタンプ告げることにかかわらず,ダ ウンロードされます.