🛠Wget - 非対話型ネットワークダウンローダ wgetのコマンドラインオプション全紹介


概要


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

説明

GNU Wgetは、ウェブからファイルを非対話的にダウンロードするフリーのユーティリティです。HTTP、HTTPS、FTPプロトコルをサポートし、HTTPプロキシ経由での取得も可能です。

Wgetは非対話的で、ユーザーがログオンしていない間、バックグラウンドで動作することができます。これにより、検索を開始し、システムから切断し、Wgetに作業を終了させることができる。対照的に、ほとんどのウェブブラウザは、常にユーザーの存在を必要とし、多くのデータを転送する際に大きな障害となります。

Wgetは、HTML、XHTML、CSSページのリンクをたどって、リモートWebサイトのローカルバージョンを作成し、オリジナルサイトのディレクトリ構造を完全に再現することができます。これは "再帰的ダウンロード "と呼ばれることもあります。その際、Wgetはロボット排除標準(/robots.txt)を尊重します。Wgetは、オフラインでの閲覧のために、ダウンロードしたファイルのリンクをローカルファイルを指すように変換するよう指示することができます。

Wgetは、低速または不安定なネットワーク接続に耐えるように設計されており、ネットワークの問題によりダウンロードに失敗した場合、ファイル全体が取得されるまで再試行を続けます。サーバーが再試行をサポートしている場合、Wgetはサーバーに対し、中断したところからダウンロードを継続するよう指示します。

オプション構文

Wgetはコマンドライン引数を処理するためにGNU getoptを使用するので、すべてのオプションには短いものと長いものがあります。長いオプションは覚えておくと便利ですが、入力に時間がかかります。異なるオプションスタイルを自由に組み合わせたり、コマンドライン引数の後にオプションを指定することができます。したがって、次のように書くことができる:


wget -r --tries=10 http://fly.srk.fer.hr/ -o log

引数を受け付けるオプションと引数の間のスペースは省略できる。o logの代わりに-ologと書くこともできる。 のように、引数を必要としないオプションを複数並べることもできる:

wget -drc <URL
と完全に等価です:
wget -d -r -c <URL>
オプションは引数の後に指定できるので、--で終了させることもできる。したがって、以下のようにすると、URL -xをダウンロードしようとし、ログに失敗を報告する:
wget -o log -- -x
カンマで区切られたリストを受け付けるオプションはすべて、空のリストを指定するとその値がクリアされるという慣例に従っている。これは、.wgetrc設定をクリアするのに便利です。例えば、.wgetrcが "exclude_directories "を/cgi-binに設定している場合、以下の例ではまずそれをリセットし、次に/~nobodyと/~somebodyを除外するように設定します。.wgetrcのリストを消去することもできる。
wget -X " -X /~nobody,/~somebody
引数を受け付けないオプションのほとんどはブーリアンオプションで、その状態をイエスかノー(「ブーリアン」)変数で捕らえることができるため、このような名前が付けられている。例えば、--follow-ftpは、HTMLファイルからのFTPリンクをたどるように Wgetに指示し、一方、--no-globは、FTP URLのファイルグロブを行わないように Wgetに指示する。ブーリアンオプションは、肯定または否定(--noで始まる)のいずれかである。このようなオプションはすべて、いくつかの特性を共有している。
特に断りのない限り、デフォルトの動作は、そのオプションが実現する動作と 逆であると仮定する。たとえば、-follow-ftpという文書が存在する場合、デフォルトはHTMLページからのFTPリンクをたどらないことであると仮定する。

肯定的なオプションは、オプション名の前に--noを付けることで否定することができる。これは余計なことのように思えるかもしれない---肯定的オプションのデフォルトが何もしないことであるなら、なぜそれを明示的にオフにする方法を提供するのだろうか?しかし、スタートアップ・ファイルは実際にデフォルトを変更することができる。例えば、.wgetrcで "follow_ftp = on "を使用すると、WgetはデフォルトでFTPリンクに従うようになり、--no-follow-ftpを使用することが、コマンドラインから工場出荷時のデフォルトに戻す唯一の方法である。

基本起動オプション

-V--version

Wgetのバージョンを表示する。

-h--help

Wgetのコマンドラインオプションをすべて説明するヘルプメッセージを表示する。

-b--background

起動直後にバックグラウンドに移動する。oで出力ファイルが指定されない場合、出力はwget-logにリダイレクトされる。

-e command--execute command

.wgetrcの一部であるかのようにコマンドを実行する。こうして呼び出されたコマンドは、.wgetrc内のコマンドの後に実行され、それらに優先する。複数のwgetrcコマンドを指定する必要がある場合は、-eを複数回使用する。

Logging and Input File Options

-o logfile--output-file=logfile

すべてのメッセージをログファイルに記録する。メッセージは通常標準エラーに報告される。

-a logfile--append-output=logfile

ログファイルに追加する。これは-oと同じだが、古いログファイルを上書きする代わりにlogfileに追加する。logfileが存在しない場合は、新しいファイルが作成される。

-d--debug

デバッグ出力をオンにする。これは、Wgetが正しく動作しない場合に、Wgetの開発者にとって重要な様々な情報を意味する。システム管理者は、デバッグサポートなしでWgetをコンパイルすることを選択したかもしれません。デバッグサポート付きコンパイルは常に安全であることに注意してください---デバッグサポート付きでコンパイルされたWgetは、-dで要求されない限り、デバッグ情報を表示しません。

-q--quiet

Wgetの出力をオフにする。

-v--verbose

利用可能なすべてのデータを含む冗長出力をオンにする。デフォルトの出力は冗長です。

-nv--no-verbose

エラーメッセージや基本的な情報は表示される。

-i file--input-file=file

ローカルまたは外部ファイルからURLを読み込む。fileとして-を指定すると、URLは標準入力から読み込まれる。(文字通り-という名前のファイルから読み込むには、./-を使用する)。

この関数を使用する場合、URLはコマンドライン上に存在する必要はない。コマンドラインと入力ファイルの両方にURLがある場合、コマンドラインにあるものが最初に取得される。-force-htmlが指定されていない場合、ファイルは1行に1つずつ、一連のURLで構成される。

しかし、-force-htmlを指定すると、ドキュメントはhtmlとみなされます。この場合、相対リンクの問題が発生する可能性がありますが、ドキュメントに "<base href=" url ">" を追加するか、コマンドラインで --base=url を指定することで解決できます。

ファイルが外部ファイルの場合、Content-Typeがtext/htmlにマッチすれば、ドキュメントは自動的にhtmlとして扱われます。さらに、何も指定されていない場合は、ファイルの場所が暗黙的にベースhrefとして使われます。

-F--force-html

入力がファイルから読み込まれるとき、それをHTMLファイルとして強制的に扱う。これにより、HTMLに"<base href=" url">"を追加するか、-baseコマンドラインオプションを使用することで、ローカルディスク上の既存のHTMLファイルから相対リンクを取得することができる。

-B URL--base= URL

i/--input-fileオプションで指定されたHTMLファイルからリンクを読み込む場合(-force-htmlと併用する場合、または入力ファイルがHTMLとして記述されたサーバーからリモートで取得された場合)、URLを参照ポイントとして相対リンクを解決します。これは、HTML入力ファイルに "href "属性の値としてURLを持つ "BASE "タグが存在することと同じである。

例えば、URLにhttp://foo/bar/a.html を指定し、Wgetが入力ファイルから ../baz/b.html を読み込むと、http://foo/baz/b.html に解決されます。

ダウンロード・オプション

--bind-address= ADDRESS

クライアントTCP/IP接続を行う場合、ローカルマシンのADDRESSにバインドする。ADDRESSにはホスト名またはIPアドレスを指定することができる。このオプションは、マシンが複数のIPにバインドされている場合に便利である。

-t number--tries=number

リトライ回数をnumberに設定する。無限に再試行する場合は0またはinfを指定する。デフォルトは20回再試行する。ただし、"connection refused" や "not found" (404) のような致命的なエラーは再試行しない。

-O file--output-document=file

ドキュメントは適切なファイルに書き出されるのではなく、すべて連結されてfileに書き出される。fileとして-が使われた場合、ドキュメントは標準出力にプリントされ、リンク変換は無効になる。(文字通り-という名前のファイルにプリントするには、./-を使用する)。

wget -O file http://foo は、wget -O - http://foo > fileのように動作する。fileは即座に切り捨てられ、ダウンロードされた内容はすべてそこに書き込まれる。

このため、-N (タイムスタンプのチェック) は -O との組み合わせではサポートされません: ファイルは常に新しく作成されるため、常に非常に新しいタイムスタンプを持つことになります。この組み合わせを使用すると、警告が表示されます。

同様に、-Oで-rまたは-pを使用しても、期待通りには動作しないかもしれません: Wgetは、最初のファイルをfileにダウンロードし、残りのファイルを通常の名前でダウンロードすることはありません。これはバージョン1.11では無効になっていましたが、1.11.2では(警告付きで)復活しました。

kとの組み合わせは単一のドキュメントをダウンロードする場合にのみ許可されることに注意してください。この場合、相対URIはすべて外部URIに変換されます。

-nc--no-clobber

ファイルが同じディレクトリに複数回ダウンロードされる場合、Wgetの動作は-ncを含むいくつかのオプションに依存する。場合によっては、ダウンロードが繰り返されると、ローカルファイルは上書きされます。他の場合は、保存されます。

Wgetを-N、-nc、-r、-pなしで実行すると、同じディレクトリにある同じファイルをダウンロードした場合、ファイルのオリジナルコピーは保存され、2番目のコピーはfile.1という名前になる。そのファイルをもう一度ダウンロードすると、3番目のコピーはfile.2という名前になり、以下同様である。(ncを指定すると、この動作は抑制され、Wgetはファイルの新しいコピーのダウンロードを拒否する。したがって、このモードでは、""no-clobber""は実際には誤った呼び方である--防止されるのはclobberingではなく(数字の接尾辞はすでにclobberingを防止していたので)、むしろ防止されるのは複数バージョンの保存である。

Wgetを-rまたは-pで実行し、-N、-nd、-ncを指定しない場合、ファイルを再ダウンロードすると、新しいコピーが古いファイルを単に上書きします。ncを追加すると、この動作が防止され、元のバージョンが保存され、サーバー上の新しいコピーは無視されます。

Wgetを-Nで実行する場合、-rまたは-pの有無にかかわらず、ファイルの新しいコピーをダウンロードするかどうかの決定は、ローカルとリモートのタイムスタンプとファイルのサイズに依存する。-ncは、-Nと同時に指定することはできない。

ncを指定すると、接尾辞が.htmlまたは.htmのファイルはローカルディスクからロードされ、ウェブから取得したかのように解析されることに注意。

-c--continue

部分的にダウンロードされたファイルの取得を継続する。これは、Wgetの前のインスタンスや他のプログラムによって開始されたダウンロードを終了したい場合に便利である。例えば

wget -c ftp://sunsite.doc.ic.ac.uk/ls-lR.Z

カレントディレクトリにls-lR.Zという名前のファイルがある場合、Wgetはそれがリモートファイルの最初の部分であると仮定し、ローカルファイルの長さに等しいオフセットから検索を継続するようにサーバーに要求する。

接続が途中で切断された場合に、現在のWgetの起動時にファイルのダウンロードを再試行させたいだけであれば、このオプションを指定する必要はないことに注意すること。これはデフォルトの動作である。-cは、Wgetの起動前に開始され、ローカルファイルがまだ残っているダウンロードの再開にのみ影響する。

cなしでは、前の例はリモートファイルをls-lR.Z.1にダウンロードするだけで、切り捨てられたls-lR.Zファイルはそのままになる。

Wget 1.7以降では、空でないファイルに-cを使用し、サーバーが継続的なダウンロードをサポートしていないことが判明した場合、Wgetはゼロからのダウンロードの開始を拒否します。本当にゼロからダウンロードを開始したい場合は、ファイルを削除してください。

また、Wget 1.7から、サーバー上のファイルと同じサイズのファイルに対して-cを使用した場合、Wgetはファイルのダウンロードを拒否し、説明メッセージを表示するようになった。同じことが、ファイルがローカルよりサーバーの方が小さい場合(おそらく、前回のダウンロード試行以降にサーバーで変更されたため)にも起こります---"continue "が意味をなさないため、ダウンロードは行われません。

反対に、-cを使用している間、ローカルよりサーバーの方が大きいファイルは不完全なダウンロードとみなされ、"(length(remote) - length(local)) "バイトだけがダウンロードされ、ローカルファイルの最後に追加される。例えば、データコレクションやログファイルに追加された新しい部分だけをダウンロードするためにwget -cを使用することができます。

しかし、単に追加されただけでなく、変更されたためにサーバー上でファイルが大きくなった場合、文字化けしたファイルになってしまいます。Wgetは、ローカルファイルが本当にリモートファイルの有効な接頭辞であるかどうかを確認する方法がありません。すべてのファイルが「不完全なダウンロード」候補とみなされるため、-cと-rを併用する場合は特に注意が必要です。

cを使おうとするとファイルが文字化けするもう一つの例は、ローカルファイルに「転送が中断されました」という文字列を挿入するような、いい加減なHTTPプロキシを使っている場合である。将来的には、このケースに対処するための「ロールバック」オプションが追加されるかもしれない。

-cは、FTPサーバーと "Range "ヘッダーをサポートしているHTTPサーバーでのみ動作することに注意。

--progress=type

使用する進捗インジケータのタイプを選択します。有効なインジケータは「ドット」と「バー」です。

デフォルトでは "バー "インジケータが使用される。これは、検索のステータスを示すASCIIプログレス・バー・グラフィックス(別名「温度計」ディスプレイ)を描画します。出力がTTYでない場合、デフォルトで「dot」バーが使用される。

ドット」表示に切り替えるには --progress=dot を使用する。これは、画面上にドットを表示することで検索をトレースするもので、各ドットはダウンロードされたデータの一定量を表す。

ドット付き検索を使用する場合、dot:styleのように型を指定してスタイルを設定することもできる。スタイルが異なれば、1つのドットに割り当てられる意味も異なる。デフォルト」スタイルでは、各ドットは1Kを表し、1クラスタには10個のドットがあり、1行には50個のドットがある。8Kドット、16ドットのクラスタ、1行48ドット(384K行になる)。メガ "スタイルは、非常に大きなファイルをダウンロードするのに適している--各ドットは64Kの取得を表し、クラスタ内に8つのドットがあり、各行に48のドットがある(したがって、各行は3Mを含む)。

デフォルトのスタイルは、.wgetrcの "progress "コマンドで設定できる。この設定はコマンドラインから上書きすることができる。例外は、出力がTTYでない場合、"dot "プログレスが "bar "よりも優先されることである。バー出力を強制するには、-progress=bar:forceを使用する。

-N--timestamping

タイムスタンプをオンにする。

-S--server-response

HTTPサーバーが送信するヘッダーと、FTPサーバーが送信するレスポンスを表示する。

--spider

このオプションで起動すると、Wgetはウェブスパイダーとして動作する。例えば、Wgetを使ってブックマークをチェックすることができる:

wget --spider --force-html -i bookmarks.html

この機能は、Wgetが本物のウェブスパイダーの機能に近づくためには、もっと多くの作業が必要である。

-T seconds--timeout=seconds

ネットワーク・タイムアウトを秒秒に設定する。これは、--dns-timeout、--connect-timeout、 --read-timeoutを同時に指定するのと同じである。

ネットワークとやりとりするとき、Wgetはタイムアウトをチェックし、時間がかかりすぎる場合は操作を中断することができます。これにより、読み込みのハングアップや無限接続のような異常を防ぐことができる。デフォルトで有効なタイムアウトは900秒の読み込みタイムアウトのみです。タイムアウトを0に設定すると、完全に無効になる。何をやっているのかわからない限り、デフォルトのタイムアウト設定を変更しない方がよい。

タイムアウト関連のオプションはすべて、10進数値だけでなく、秒未満の値も使用できる。例えば、0.1秒は(賢明ではありませんが)合法的なタイムアウトの選択です。秒以下のタイムアウトは、サーバーの応答時間をチェックしたり、ネットワークの待ち時間をテストするのに便利です。

--dns-timeout=seconds

DNSルックアップのタイムアウトを秒秒に設定する。指定した時間内に完了しないDNSルックアップは失敗する。デフォルトでは、システム・ライブラリが実装している以外のDNSルックアップにはタイムアウトはありません。

--connect-timeout=seconds

接続タイムアウトを秒秒に設定する。確立に時間がかかるTCP接続は中止される。デフォルトでは、システム・ライブラリが実装している以外の接続タイムアウトはない。

--read-timeout=seconds

読み取り(および書き込み)タイムアウトを秒秒に設定する。このタイムアウトの "time "はアイドル時間を意味する。ダウンロードのどの時点でも、指定された秒数以上データが受信されない場合、読み込みは失敗し、ダウンロードが再開される。このオプションは、ダウンロード全体の時間には直接影響しない。

もちろん、リモートサーバーは、このオプションが要求するよりも早く接続を終了することもできる。デフォルトの読み取りタイムアウトは900秒である。

--limit-rate=amount

ダウンロード速度を1秒あたりのバイト数に制限します。量は、バイト、キロバイト(接尾辞k)、メガバイト(接尾辞m)で表すことができる。例えば、-limit-rate=20kは、検索速度を20KB/秒に制限します。これは、何らかの理由でWgetに利用可能な帯域幅をすべて消費させたくない場合に便利です。

このオプションは、通常、べき乗接尾辞と組み合わせて10進数を使用することができます; 例えば、-limit-rate=2.5kは、合法的な値です。

Wgetは、rateで指定された時間よりも短いネットワーク読み込みの後、適切な時間スリープすることで制限を実行することに注意してください。最終的に、この戦略により、TCP転送は、指定されたレート程度まで遅くなる。しかし、このバランスが達成されるまでには時間がかかることがあるので、レートを制限しても非常に小さなファイルでうまく機能しなくても驚かないでください。

-w seconds--wait=seconds

取得間隔を指定秒数待つ。このオプションの使用を推奨する。リクエストの頻度を少なくすることで、サーバーの負荷を軽減できるからである。秒単位の代わりに、"m "接尾辞で分単位、"h "接尾辞で時間単位、"d "接尾辞で日単位で指定することもできる。

このオプションに大きな値を指定すると、ネットワークまたは宛先ホストがダウンしている場合に便利で、Wgetが再試行する前にネットワークエラーが修正されることを合理的に期待するのに十分な時間待つことができます。この関数で指定される待機間隔は、"--random-wait "の影響を受ける。

--waitretry=seconds

Wgetにすべての取得の間を待たせず、失敗したダウンロードの再試行の間だけ待たせたい場合、このオプションを使うことができる。Wgetはリニアバックオフを使用し、指定されたファイルの最初の失敗の後1秒待機し、そのファイルの2番目の失敗の後2秒待機し、指定された最大秒数まで待機する。したがって、値10を指定すると、Wgetは1ファイルにつき(1 + 2 + ... + 10) = 55秒まで待つことになる。

デフォルトでは、Wgetは10秒を想定している。

--random-wait

いくつかのウェブサイトは、リクエスト間の時間における統計的に有意な類似性を探すことによって、Wgetのような検索プログラムを識別するためにログ解析を実行するかもしれない。このオプションは、このような分析からWgetの存在を隠すために、 リクエスト間の時間を0.5から1.5 * wait秒の間で変化させる。

人気のあるコンシューマー・プラットフォームでの開発に特化した出版物の2001年の記事で、この解析をその場で実行するコードが提供されていた。その著者は、DHCPが提供するアドレスの変更にもかかわらず、自動取得プログラムがブロックされることを保証するために、クラスCアドレスレベルでのブロックを提案した。

random-waitオプションは、1人のユーザーの行動によって、多くの無関係なユーザーをウェブサイトからブロックするという、この無分別な推奨に触発されたものである。

--no-proxy

適切な*_proxy環境変数が定義されていても、プロキシは使わないこと。

-Q quota--quota=quota

自動取得のダウンロード・クォータを指定します。値はバイト(デフォルト)、キロバイト(接尾辞k)、メガバイト(接尾辞m)で指定できます。

クォータは単一のファイルのダウンロードには影響しないことに注意してください。したがって、wget -Q10k ftp://wuarchive.wustl.edu/ls-lR.gz を指定すると、ls-lR.gzがすべてダウンロードされる。コマンドラインで複数のURLを指定した場合も同様である。ただし、quotaは、再帰的に取得する場合、または入力ファイルから取得する場合に尊重されます。したがって、安全にwget -Q2m -i sitesとタイプしてもよい。

quotaを0またはinfに設定すると、ダウンロードクォータの制限が解除されます。

--no-dns-cache

DNSルックアップのキャッシュをオフにする。通常、WgetはDNSから検索したIPアドレスを記憶しているので、同じ(一般的に小さい)ホストを検索するためにDNSサーバに何度も問い合わせる必要はありません。このキャッシュはメモリ上にのみ存在し、新たにWgetを実行すると再びDNSに問い合わせる。

しかし、Wgetのような短時間実行のアプリケーションであっても、ホスト名をキャッシュすることが望ましくない状況もあることが報告されている。このオプションでは、Wgetは新しい接続を行うたびに、新しいDNS検索(より正確には、"gethostbyname "または "getaddrinfo "への新しい呼び出し)を行う。このオプションは、リゾルビングライブラリやNSCDのような外部キャッシュレイヤーによって実行されるキャッシュには影響しないことに注意してください。

このオプションが何をするのか正確に理解していない場合は、おそらく必要ないだろう。

--restrict-file-names=modes

ローカルのファイル名を生成するときに、リモートの URL で見つかったどの文字をエスケープしなければならないかを変更する。このオプションで制限された文字はエスケープされる、すなわち %HH で置き換えられる。このオプションは、すべてのアルファベット大文字を小文字または大文字に強制するために使用することもできます。

デフォルトでは、Wgetは、オペレーティングシステム上でファイル名の一部として有効または安全でない文字や、通常印刷不可能な制御文字をエスケープします。このオプションは、非ネイティブパーティションにダウンロードする場合や、制御文字のエスケープを無効にしたい場合、またはASCII値の範囲内の文字のみにさらに制限したい場合など、これらのデフォルトを変更するのに便利です。

モードはカンマで区切られたテキスト値の集合である。使用可能な値は、unix、windows、nocontrol、ascii、小文字、大文字です。unixとwindowsは互いに排他的であり(一方が他方を上書きする)、小文字と大文字も同様である。これらは特殊なケースであり、エスケープされる文字のセットを変更するのではなく、ローカルのファイルパスを小文字または大文字に強制的に変換するからである。

unix "が指定された場合、Wgetは文字/と0--31と128--159の範囲の制御文字をエスケープします。これは、Unixライクなオペレーティングシステムでのデフォルトです。

windows "が指定された場合、Wgetは、"、 |、 /、 :、 ?、 " 、 *、 <、 >、および0~31および128~159の範囲の制御文字をエスケープする。これに加えて、WindowsモードのWgetは、ローカルファイル名のホストとポートを区切るために:の代わりに+を使用し、ファイル名のクエリ部分を残りと区切るために?の代わりに@を使用します。したがって、Unixモードではwww.xemacs.org:4300/search.pl?input=blah として保存されるURLは、Windowsモードではwww.xemacs.org+4300/search.pl@input=blahとして保存される。このモードがWindowsのデフォルトである。

nocontrolを指定すると、制御文字のエスケープもオフになる。このオプションは、UTF-8でファイル名を保存・表示できるシステムで、UTF-8文字を含む名前のURLをダウンロードする場合に意味があるかもしれません(UTF-8バイトシーケンスで使用される可能性のあるいくつかのバイト値は、Wgetが「コントロール」として指定する値の範囲に該当します)。

asciiモードは、ASCII文字の範囲外(つまり127より大きい)の値を持つバイトをエスケープするように指定するために使用される。これは、エンコーディングがローカルで使用されているものと一致しないファイル名を保存するときに便利である。

-4--inet4-only-6--inet6-only

IPv4またはIPv6アドレスへの接続を強制する。net4-onlyまたは-4を指定すると、WgetはIPv4ホストにのみ接続し、DNSのAAAAレコードを無視し、URLで指定されたIPv6アドレスへの接続を拒否します。逆に--inet6-onlyまたは-6を指定すると、WgetはIPv6ホストのみに接続し、AレコードとIPv4アドレスを無視する。

どちらのオプションも通常は必要ないはずである。デフォルトでは、IPv6対応のWgetは、ホストのDNSレコードで指定されたアドレスファミリーを使用する。DNSがIPv4アドレスとIPv6アドレスの両方で応答した場合、Wgetは接続できるアドレスが見つかるまで順番に試行する。(後述の"-prefer-family "オプションも参照のこと)。

これらのオプションは、デュアルファミリシステムでIPv4またはIPv6アドレスファミリを強制的に使用するために使われる。同時に指定できるのは--inet6-onlyと--inet4-onlyのどちらか1つだけである。どちらのオプションも、IPv6をサポートせずにコンパイルされたWgetでは利用できない。

--prefer-family=none/IPv4/IPv6

複数のアドレスの選択肢が与えられた場合、指定されたアドレスファミリーを持つアドレスに最初に接続する。デフォルトでは、DNSが返すアドレスの順番がそのまま使用される。

これにより、IPv4ネットワークからIPv6アドレスとIPv4アドレスの両方に解決するホストにアクセスするときに、偽のエラーや接続の試行を避けることができる。例えば、www.kame.net、2001:200:0:8002:203:47ff:fea5:3085と203.178.141.194に解決する。優先ファミリーが "IPv4 "の場合、IPv4アドレスが最初に使用される。優先ファミリーが "IPv6 "の場合、IPv6アドレスが最初に使用される。指定値が "none "の場合、DNSが返すアドレスの順序がそのまま使用される。

4や-6とは異なり、このオプションはどのアドレスファミリへのアクセスも禁止しない。また、このオプションで行われる並び替えは安定しており、同じファミリーのアドレスの順序には影響しないことに注意すること。つまり、すべてのIPv4アドレスとすべてのIPv6アドレスの相対的な順序は、どのような場合でもそのままである。

--retry-connrefused

接続拒否」は一過性のエラーと考え、再試行してください。通常、Wgetはサイトに接続できない場合、そのURLをあきらめます。なぜなら、接続に失敗した場合、サーバーがまったく稼動していないことを意味し、再試行しても何の役にも立たないからです。このオプションは、サーバーが短期間停止しがちな信頼性の低いサイトをミラーリングするためのものです。

--user=user--password=password

FTP と HTTP の両方のファイル検索用に、ユーザー名 user とパスワード password を指定します。これらのパラメータは、FTP 接続の場合は --ftp-user および --ftp-password オプションを、HTTP 接続の場合は --http-user および --http-password オプションを使用して上書きすることができる。

--ask-password

接続が確立されるたびにパスワードを要求する。この2つは互いに排他的であるため、-passwordを使用しているときには指定できない。

--no-iri

国際化 URI ( IRI ) サポートをオフにする。オンにするには--iriを使用する。IRIサポートはデフォルトで有効になっている。

.wgetrcの "iri "コマンドを使用して、IRIサポートのデフォルト状態を設定できます。この設定は、コマンドラインから上書きすることができる。

--local-encoding=encoding

デフォルトのシステムエンコーディングとしてエンコーディングを使用するようにWgetを強制します。これは、WgetがIRIサポートのためにロケールからUTF-8に引数として指定されたURLを変換する方法に影響します。

Wgetは、"nl_langinfo() "関数と "CHARSET "環境変数を使用してロケールを取得します。失敗した場合は、ASCIIが使用されます。

.wgetrcの "local_encoding "コマンドを使用して、デフォルトのローカルエンコーディングを設定できます。この設定は、コマンドラインから上書きすることができる。

--remote-encoding=encoding

デフォルトのリモートサーバエンコーディングとしてエンコーディングを使用するようにWgetを強制します。これは、Wgetが再帰的な取得の間に、リモートエンコーディングからUTF-8にファイル内で見つかったURIを変換する方法に影響します。このオプションは、非ASCII文字の解釈のためのIRIサポートにのみ有用です。

HTTPの場合、リモートエンコーディングはHTTPの "Content-Type "ヘッダーとHTMLの "Content-Type http-equiv "メタタグで見つけることができる。

デフォルトのエンコーディングは、.wgetrcの "remoteencoding "コマンドで設定できます。この設定は、コマンドラインから上書きすることができる。

ディレクトリオプション

-nd--no-directories

再帰的に検索するときにディレクトリの階層を作らない。このオプションをオンにすると、すべてのファイルがカレントディレクトリに保存される。

-x--force-directories

nd---ディレクトリの階層を作成する。例えば、wget -x http://fly.srk.fer.hr/robots.txt は、ダウンロードしたファイルをfly.srk.fer.hr/robots.txtに保存する。

-nH--no-host-directories

ホスト接頭辞付きディレクトリの生成を無効にする。デフォルトでは、Wgetを-r http://fly.srk.fer.hr/ で起動すると、fly.srk.fer.hr/で始まるディレクトリ構造が作成されます。このオプションは、そのような動作を無効にします。

--protocol-directories

プロトコル名をローカルファイル名のディレクトリ構成要素として使用する。例えば、このオプションを使うと、wget -r http://host は、単にhost/...ではなく、http/host/...に保存される。

--cut-dirs=number

ディレクトリ構成要素数を無視する。これは、再帰検索が保存されるディレクトリを細かく制御するのに便利である。

例えば、ftp://ftp.xemacs.org/pub/xemacs/ のディレクトリを例にとってみよう。rで検索すると、ローカルにftp.xemacs.org/pub/xemacs/に保存されます。nHオプションはftp.xemacs.org/の部分を削除できますが、pub/xemacsのままです。これはWgetがリモートディレクトリの構成要素を「見ない」ようにするものです。以下は-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 の組み合わせに似ている。たとえば、-nH --cut-dirs=1 とすると、 beta/ サブディレクトリは、期待どおり xemacs/beta に置かれる。

-P prefix--directory-prefix=prefix

ディレクトリプレフィックスを prefix に設定します。ディレクトリプレフィックスは、他のすべてのファイルやサブディレクトリが保存されるディレクトリ、つまり検索ツリーの先頭です。デフォルトは .(カレントディレクトリ)です。

HTTPオプション

--default-page=name

既知のファイル名でない場合(つまり、スラッシュで終わるURLの場合)、index.htmlの代わりにnameをデフォルトのファイル名として使用する。

-E--adjust-extension

application/xhtml+xml または text/html タイプのファイルがダウンロードされ、 URL が正規表現 .[Hh][Tt][Mm][Ll]? で終わらない場合、 このオプションはローカルのファイル名に接尾辞 .html を付加します。これは、例えば、.asp ページを使用するリモートサイトをミラーリングしているが、ミラーリングされたページがあなたの純正 Apache サーバーで閲覧できるようにしたい場合に便利です。もう一つの良い使い方は、CGIで生成された素材をダウンロードするときです。http://site.com/article.cgi?25 のような URL は article.cgi?25.html として保存されます。

このようにして変更されたファイル名は、サイトを再ミラーリングするたびに再ダウンロードされることに注意してください。なぜなら、WgetはローカルのX.htmlファイルがリモートのURL Xに対応していることを知ることができないからです(URLがtext/htmlまたはapplication/xhtml+xmlタイプの出力を生成することをまだ知らないため)。この再ダウンロードを防ぐには、-kと-Kを使用して、ファイルのオリジナルバージョンをX.origとして保存する必要があります。

バージョン1.12から、Wgetはダウンロードされたtext/cssタイプのファイルの末尾が.cssであることも保証するようになり、このオプションは--html-extensionから改名されました。旧オプション名はまだ使用可能ですが、現在は非推奨とみなされます。

将来のある時点で、このオプションは、Wgetによって解析されないコンテントタイプを含む、他のタイプのコンテント用の接尾辞を含むように拡張されるかもしれない。

--http-user=user--http-password=password

HTTPサーバのユーザ名userとパスワードpasswordを指定する。チャレンジのタイプに応じて、Wgetは "basic"(安全でない)、"digest"、Windowsの "NTLM "認証スキームのいずれかを用いてエンコードする。

ユーザー名とパスワードを指定するもう1つの方法は、URLそのものである。いずれの方法でも、"ps "をわざわざ実行する人にはパスワードが見えてしまう。パスワードを見られないようにするには、パスワードを.wgetrcまたは.netrcに保存し、"chmod "で他のユーザーからこれらのファイルを保護するようにしてください。もしパスワードが本当に重要なものであるなら、これらのファイルに置いたままにしないでください-ファイルを編集し、Wgetがダウンロードを開始した後に削除してください。

--no-http-keep-alive

HTTPダウンロードの "keep-alive "機能をオフにする。通常、Wgetは、同じサーバーから複数のドキュメントをダウンロードする場合、それらが同じTCPコネクションで転送されるように、コネクションをオープンにしておくようサーバーに要求する。これは時間を節約し、同時にサーバーの負荷を軽減します。

このオプションは、サーバーのバグやサーバー側のスクリプトが接続に対応できないなどの理由で、何らかの理由で持続的(keep-alive)接続が機能しない場合に便利です。

--no-cache

サーバサイドキャッシュを無効にします。この場合、Wgetはリモートサーバに適切なディレクティブ(Pragma: no-cache)を送り、キャッシュされたバージョンを返すのではなく、リモートサービスからファイルを取得します。これは、特にプロキシサーバ上で古いドキュメントを取得し、フラッシュするのに便利です。

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

--no-cookies

クッキーの使用を無効にする。クッキーは、サーバー側の状態を維持するためのメカニズムです。サーバは "Set-Cookie "ヘッダを使用してクライアントにクッキーを送信し、クライアントは次のリクエスト時に同じクッキーで応答します。クッキーは、サーバーの所有者が訪問者を追跡し、サイトがこの情報を交換することを可能にするため、プライバシーの侵害と考える人もいます。デフォルトではクッキーを使用するようになっていますが、クッキーの保存はデフォルトではオンになっていません。

--load-cookies file

fileは、もともとNetscapeのcookies.txtファイルで使われていた形式のテキストファイルです。

このオプションは通常、コンテンツの一部またはすべてにアクセスするためにログインする必要があるサイトをミラーリングするときに使用します。ログイン・プロセスは通常、ウェブ・サーバーがあなたの認証情報を受信して確認すると、HTTPクッキーを発行します。このクッキーは、サイトのその部分にアクセスする際にブラウザによって再送信され、あなたの身元を証明します。

このようなサイトをミラーリングするには、サイトと通信するときにブラウザが送信するのと同じクッキーをWgetが送信する必要があります。これは--load-cookies--によって達成されます。Wgetにcookies.txtファイルの場所を指定するだけで、ブラウザが同じ状況で送信するのと同じクッキーを送信します。ブラウザによって、テキスト形式のクッキーファイルは異なる場所に保存されます:

Netscape 4.x.

クッキーは~/.netscape/cookies.txtにあります。

Mozilla and Netscape 6.x.

Mozillaのクッキーファイルもcookies.txtという名前で、~/.mozillaの下、あなたのプロファイルのディレクトリのどこかにあります。フルパスは通常、~/.mozilla/default/some-weird-string/cookies.txtのようになります。

Internet Explorer.

Wgetが使用できるクッキーファイルを作成するには、ファイルメニュー、インポートとエクスポート、クッキーのエクスポートを使用します。これはInternet Explorer 5でテストされています。

Other browsers.

クッキーの作成に別のブラウザを使用している場合、--load-cookiesは、Wgetが期待するNetscapeフォーマットのクッキーファイルを見つけるか作成できる場合にのみ動作します。

load-cookiesが使えない場合でも、代替手段があるかもしれません。あなたのブラウザが「クッキー・マネージャー」をサポートしていれば、それを使って、ミラーしているサイトにアクセスしたときに使われたクッキーを見ることができます。クッキーの名前と値を書き留め、「公式」クッキーサポートをバイパスして、クッキーを送信するようWgetに手動で指示する:

wget --no-cookies --header "Cookie: <name>=<value>"

--save-cookies file

終了前にクッキーをファイルに保存する。この場合、有効期限が切れたクッキーや有効期限のないクッキー(いわゆる「セッション・クッキー」)は保存されませんが、--keep-session-cookiesも参照してください。

--keep-session-cookies

指定すると、-save-cookiesはセッション・クッキーも保存します。セッション・クッキーはメモリーに保存され、ブラウザを終了すると消去されるため、通常は保存されません。セッションクッキーを保存しておくと、いくつかのページにアクセスする前にログインしたり、ホームページにアクセスしたりする必要があるサイトで便利です。このオプションでは、複数のWget実行は、サイトに関する限り、1つのブラウザセッションとみなされます。

Wgetの--load-cookiesはこれらをセッションクッキーとして認識しますが、他のブラウザを混乱させるかもしれません。また、そうしてロードされたクッキーは、他のセッションクッキーとして扱われることに注意してください。つまり、--save-cookiesでそれらを再び保存したい場合は、--keep-session-cookiesを再び使用しなければなりません。

--ignore-length

残念なことに、一部のHTTPサーバー(正確にはCGIプログラム)は、偽の "Content-Length "ヘッダーを送信する。Wgetが同じ文書の取得を何度も繰り返し、そのたびに(そうでなければ正常な)接続がまさに同じバイトで閉じられたと主張すれば、この症候群を発見することができます。

このオプションを指定すると、Wgetは "Content-Length "ヘッダを無視します。

--header=header-line

各HTTPリクエストの残りのヘッダーと一緒にヘッダー行を送る。つまり、名前と値をコロンで区切って記述し、改行を含んではいけません。

headerを複数回指定することで、複数の追加ヘッダーを定義できます。

wget --header='Accept-Charset: iso-8859-2' \
     --header='Accept-Language: hr'        \
       http://fly.srk.fer.hr/

ヘッダー値として空文字列を指定すると、以前のユーザー定義ヘッダーはすべてクリアされます。

Wget 1.10では、このオプションは自動的に生成されるヘッダを上書きするために使用できます。この例では、Wgetにlocalhostに接続するが、"Host "ヘッダにfoo.barを指定するよう指示している:

wget --header="Host: foo.bar" http://localhost/

1.10より前のバージョンのWgetでは、このような--headerの使用は、重複したヘッダを送信する原因となった。

--max-redirect=number

リソースのリダイレクトの最大数を指定します。デフォルトは 20 で、通常は必要以上です。しかし、より多くの (あるいはより少ない) リダイレクトを許可したい場合は、このオプションを使います。

--proxy-user=user--proxy-password=password

プロキシサーバで認証するためのユーザ名 user とパスワード password を指定します。Wgetは "basic "認証スキームを使ってこれらをエンコードします。

ここでも --http-password と同様のセキュリティ上の注意が必要です。

--referer=url

HTTPリクエストに'Referer: url'ヘッダを含める。サーバサイドの処理で、対話的なウェブブラウザが常にドキュメントを取得していると仮定し、Referer がそのドキュメントを指すページのいずれかに設定されている場合にのみ、ドキュメントを正しく取得するのに便利です。

--save-headers

HTTPサーバーから送られたヘッダーをファイルに保存し、実際のコンテンツの前に、空行をセパレーターとして置く。

-U agent-string--user-agent=agent-string

HTTPサーバにエージェント文字列として識別させる。

HTTPプロトコルでは、クライアントが "User-Agent "ヘッダフィールドを使って自分自身を識別することができます。これは、通常、統計目的やプロトコル違反のトレースのために、WWWソフトウェアを区別することを可能にする。Wgetは通常Wget/versionとして識別され、versionはWgetの現在のバージョン番号である。

しかし、サイトによっては、"User-Agent "が提供する情報に従って出力を調整するポリシーを課すことが知られている。これは理論的にはそれほど悪い考えではないが、(歴史的には)Netscapeや、より頻繁にはMicrosoft Internet Explorer以外のクライアントへの情報を拒否するサーバーによって悪用されてきた。このオプションにより、Wgetが発行する "User-Agent "行を変更することができる。このオプションの使用は、自分が何をしているのか本当に分かっている場合を除き、推奨されない。

user-agent=""で空のユーザーエージェントを指定すると、HTTPリクエストで "User-Agent "ヘッダを送信しないようにWgetに指示する。

--post-data=string--post-file=file

すべてのHTTPリクエストのメソッドとしてPOSTを使用し、リクエスト・ボディに指定されたデータを送信する。-post-dataは文字列をデータとして送信し、-post-fileはファイルの内容を送信する。それ以外は、まったく同じように動作する。唯一の違いは、一方はその内容をコマンドラインパラメータとして期待し、もう一方はその内容をファイルから受け入れることである。特に、-post-fileは、フォームの添付ファイルとしてファイルを送信するためのものではありません:それらは、他のものと同様に、(適切なパーセントコーディングで)"key=value "データとして表示されなければなりません。Wgetは現在、POSTデータを送信するための "multipart/form-data "をサポートしていません; "application/x-www-form-urlencoded "のみです。post-dataと-post-fileのどちらか一方のみを指定する。

WgetはPOSTデータのサイズを事前に知る必要があることに注意してください。したがって、"-post-file "の引数は、通常のファイルでなければなりません。FIFOや/dev/stdinのようなものを指定しても動作しません。HTTP/1 .1は、リクエストの長さを事前に知る必要のないチャンク転送を導入していますが、クライアントは、HTTP/1 .1サーバーと話していることがわからない限り、チャンク転送を使うことができません。そして、クライアントはレスポンスを受け取るまでそれを知ることができず、そのレスポンスはリクエストが完了していることを要求する。

注意: POSTリクエストが完了した後にWgetがリダイレクトされた場合、Wgetはリダイレクト先のURLにPOSTデータを送信しません。これは、POSTを処理するURLは、多くの場合、POSTを望んだり受け入れたりしない通常のページへのリダイレクトで応答するためです。この動作が最適かどうかは完全には明らかではありません。もしうまくいかなければ、将来変更されるかもしれません。

この例では、POSTを使ってサーバーにログインし、目的のページをダウンロードする方法を示している:

# Log in to the server.  This can be done only once.
wget --save-cookies cookies.txt \
     --post-data 'user=foo&password=bar' \
     http://server.com/auth.php

# Now grab the page or pages we care about.
wget --load-cookies cookies.txt \
     -p http://server.com/interesting/article.php

サーバーがユーザー認証を追跡するためにセッション・クッキーを使用している場合、--save-cookiesはセッション・クッキーを保存せず(ブラウザも同様)、cookies.txtファイルは空になるため、上記の方法は機能しません。その場合、--save-cookiesとともに--keep-session-cookiesを使用して、セッション・クッキーを強制的に保存してください。

--content-disposition

これを on に設定すると、実験的な "Content-Disposition" ヘッダのサポートが有効になります。現在のところ、"HEAD" リクエストのためにサーバへの余分なラウンドトリップが発生する可能性があり、いくつかのバグがあることが知られています。

このオプションは、"Content-Disposition" ヘッダを使用してダウンロードされるファイルの名前を記述する、いくつかのファイルダウンロードCGIプログラムで有用です。

--auth-no-challenge

このオプションを指定すると、Wget 1.10.2 以前のデフォルトのように、 Wget はすべてのリクエストに対して HTTP 基本認証情報 (平文のユーザ名とパスワード) を送信します。

このオプションの使用は推奨されず、HTTP認証チャレンジを送信せず、フォームベースの認証に加えて、未承諾の認証情報を受け付ける、いくつかの不明瞭なサーバをサポートすることのみを意図しています。

HTTPS ( SSL/TLS ) Options

暗号化されたHTTP ( HTTPS ) ダウンロードをサポートするために、Wgetは外部SSLライブラリ(現在OpenSSL)とともにコンパイルされなければならない。WgetがSSLサポートなしでコンパイルされた場合、これらのオプションは使用できません。

使用するセキュアプロトコルを選択します。有効な値は、auto、SSLv2、SSLv3、TLSv1である。 autoが使用される場合、SSLライブラリは自動的に適切なプロトコルを選択する自由を与えられ、SSLv2のグリーティングを送信し、SSLv3とTLSv1のサポートをアナウンスすることによって達成される。

SSLv2、SSLv3、TLSv1を指定すると、対応するプロトコルが強制的に使われます。これは、OpenSSLが正しいプロトコルのバージョンを選択するのが難しい、古くてバグの多いSSLサーバーの実装と通信するときに便利です。幸運なことに、そのようなサーバーはかなり稀です。

--no-check-certificate

サーバー証明書を利用可能な認証局と照合しない。また、URLホスト名が証明書によって提示されたコモンネームと一致することを要求しません。

Wget 1.10では、デフォルトでサーバーの証明書を認識された認証局に対して検証し、検証に失敗した場合はSSLハンドシェイクを解除してダウンロードを中止します。これは、より安全なダウンロードを提供しますが、以前のWgetバージョンで動作していたいくつかのサイト、特に自己署名証明書、期限切れ証明書、またはその他の無効な証明書を使用しているサイトとの相互運用性を壊します。このオプションは、証明書検証エラーを警告に変え、続行できるようにする "安全でない "操作モードを強制する。

証明書の検証 "エラーや、"コモンネームが要求されたホスト名と一致しない "というエラーに遭遇した場合、このオプションを使用して検証をバイパスし、ダウンロードを続行することができます。このオプションは、そのサイトの信頼性を確信できる場合、または証明書の有効性を本当に気にしない場合にのみ使用してください。機密データや重要なデータを送信する場合、証明書を確認しないのはほとんど常に悪い考えです。

--certificate=file

ファイルに保存されているクライアント証明書を使用する。これは、接続するクライアントから証明書を要求するように設定されているサーバに必要である。通常、証明書は必要ないので、このスイッチはオプションである。

--certificate-type=type

クライアント証明書のタイプを指定します。有効な値は PEM (既定) および DER (ASN1 とも呼ばれる) です。

--private-key=file

ファイルから秘密鍵を読み込む。これにより、証明書とは別のファイルで秘密鍵を提供できる。

--private-key-type=type

秘密鍵のタイプを指定します。指定できる値は PEM (デフォルト) および DER です。

--ca-certificate=file

ファイルを、ピアを検証する認証局("CA")のバンドルがあるファイルとして使用する。証明書はPEM形式でなければなりません。

このオプションがない場合、WgetはOpenSSLのインストール時に選択されたシステム指定の場所でCA証明書を探します。

--ca-directory=directory

PEM 形式の CA 証明書を含むディレクトリを指定する。各ファイルには1つのCA証明書が含まれ、ファイル名は証明書に由来するハッシュ値に基づいています。これは、OpenSSLに付属の "c_rehash "ユーティリティで証明書ディレクトリを処理することで実現される。多くの証明書がインストールされている場合、-ca-directory を使用する方が --ca-certificate よりも効率的です。

このオプションがない場合、WgetはOpenSSLのインストール時に選択されたシステム指定の場所でCA証明書を探します。

--random-file=file

dev/randomを持たないシステムでは、擬似乱数生成器の乱数データ源としてファイルを使用します。

このようなシステムでは、SSLライブラリは初期化のために外部の乱数源を必要とします。乱数はEGDによって提供されるか(下記の--egd-fileを参照)、 ユーザーによって指定された外部ソースから読み込まれる。このオプションが指定されていない場合、Wgetは$RANDFILEか、未設定の場合は$HOME/.rndにあるランダムデータを探す。そのどれもが利用できない場合、SSL暗号化は利用できない可能性が高い。

もし、"Could not seed OpenSSL PRNG ; disabling SSL .エラー "が表示される場合、上記の方法でランダムデータを提供する必要があります。

--egd-file=file

ファイルをEGDソケットとして使用する。EGDはEntropy Gathering Daemon(エントロピー収集デーモン)の略で、様々な予測不可能なシステムソースからデータを収集し、それを必要とする他のプログラムが利用できるようにするユーザー空間プログラムである。SSLライブラリのような暗号化ソフトウェアは、暗号的に強力な鍵を生成するために使用される乱数ジェネレーターの種となる、繰り返しのないランダム性のソースを必要とします。

OpenSSLでは、"RAND_FILE "環境変数を使って、ユーザーが自分のエントロピー源を指定することができます。この変数が設定されていない場合、または指定されたファイルが十分なランダム性を生成しない場合、OpenSSLはこのオプションで指定されたEGDソケットからランダムデータを読み込む。

このオプションが指定されていない場合(および同等のスタートアップコマンドが使用されていない場合)、EGDは接触しません。dev/randomをサポートする最近のUnixシステムでは、EGDは必要ありません。

FTP オプション

--ftp-user=user--ftp-password=password

FTPサーバーのユーザー名userとパスワードpasswordを指定する。これがない場合、または対応する起動オプションがない場合、パスワードのデフォルトは、通常匿名FTPに使用される -wget@ になります。

ユーザー名とパスワードを指定するもう1つの方法は、URL自体にあります。どちらの方法でも、わざわざ "ps "を実行する人にパスワードを公開してしまう。パスワードを見られないようにするには、.wgetrcまたは.netrcに保存し、"chmod "で他のユーザーからこれらのファイルを保護するようにしてください。もしパスワードが本当に重要なものであるなら、これらのファイルに置いたままにしないでください-ファイルを編集し、Wgetがダウンロードを開始した後に削除してください。

--no-remove-listing

FTP検索によって生成された一時的な.listingファイルを削除しないでください。通常、これらのファイルにはFTPサーバから受信した生のディレクトリ一覧が含まれています。これらのファイルを削除しないことは、デバッグ目的や、リモートサーバディレクトリの内容を簡単に確認したい場合 (例えば、実行中のミラーが完全であることを確認する場合など) に便利です。

Wgetがこのファイルを既知のファイル名に書き込むとしても、ユーザが.listを/etc/passwdか何かへのシンボリックリンクにして、"root "に自分のディレクトリでWgetを実行するように頼むというシナリオでは、これはセキュリティホールではないことに注意してください。使用されるオプションに応じて、Wgetは.listingへの書き込みを拒否し、グロビング/再帰/タイムスタンプ操作が失敗するか、シンボリックリンクが削除され、実際の.listingファイルに置き換えられるか、または、リストが.listing.numberファイルに書き込まれます。

この状況は問題ではないとしても、「root」は、信頼されていないユーザーのディレクトリーでWgetを実行すべきではない。ユーザは、index.htmlを/etc/passwdにリンクし、"root "に-Nまたは-rでWgetを実行するように要求することで、ファイルが上書きされるという単純なことができる。

--no-glob

FTPグロビングをオフにする。グロビングとは、*、?などのシェルのような特殊文字(ワイルドカード)を使って、同じディレクトリから複数のファイルを一度に取得することです:

wget ftp://gnjilux.srk.fer.hr/*.msg

デフォルトでは、URLにグロッビング文字が含まれていると、グロッビングがオンになる。このオプションを使用すると、グロビングのオン/オフを永続的に切り替えることができます。

シェルによって展開されないように、URLを引用符で囲む必要があるかもしれません。グロビングはWgetにディレクトリリストを探させますが、これはシステム固有です。このため、現在のところUnix FTPサーバ(およびUnixの "ls "出力をエミュレートしたもの)でのみ動作します。

--no-passive-ftp

パッシブFTP転送モードの使用を無効にする。パッシブFTPは、データ接続を確立するために、クライアントがサーバーに接続することを義務付けている。

マシンがインターネットに直接接続されている場合、パッシブFTPもアクティブFTPも同じように動作するはずである。ほとんどのファイアウォールやNAT設定の背後では、パッシブFTPの方が動作する可能性が高い。しかし、まれにパッシブFTPが動作しないのにアクティブFTPが動作するファイアウォール設定もある。これが疑わしい場合は、このオプションを使用するか、initファイルで "passive_ftp=off "を設定してください。

--retr-symlinks

通常、FTPディレクトリを再帰的に検索してシンボリックリンクに遭遇した場合、リンク先のファイルはダウンロードされない。代わりに、一致するシンボリックリンクがローカルファイルシステム上に作成される。指されたファイルは、再帰的な検索がそのファイルとは別に遭遇し、 いずれにしてもダウンロードされない限り、ダウンロードされない。

しかし、--retr-symlinksが指定されると、シンボリックリンクが走査され、指されたファイルが検索される。現時点では、このオプションはWgetがディレクトリへのシンボリックリンクをトラバースして再検索することを引き起こさないが、将来的にはこれを行うように拡張されるはずである。

(ディレクトリではなく)ファイルを取得する場合、それが再帰されたからではなく、コマンドラインで指定されたからである場合、このオプションは効果がないことに注意すること。この場合、シンボリックリンクは常に走査される。

再帰的検索オプション

-r--recursive

再帰的検索をオンにする。

-l depth--level=depth

再帰の最大深度レベルの深さを指定する。デフォルトの最大深度は 5 である。

--delete-after

このオプションは、Wgetがダウンロードしたすべてのファイルを削除するように指示します。プロキシ経由で人気のあるページを事前にフェッチする場合などに便利です:

wget -r -nd --delete-after http://whatever.com/~popular/page/

rオプションは再帰的に検索を行い、-ndはディレクトリを作成しない。

delete-afterはローカル・マシン上のファイルを削除する。例えば、リモートのFTPサイトに対してDELEコマンドを発行することはない。また、--delete-afterが指定されている場合、--convert-linksは無視されるため、.origファイルはそもそも作成されないことに注意すること。

-k--convert-links

ダウンロードが完了したら、ドキュメント内のリンクをローカルでの表示に適したものに変換します。これは目に見えるハイパーリンクだけでなく、埋め込まれた画像、スタイルシートへのリンク、非HTMLコンテンツへのハイパーリンクなど、外部コンテンツにリンクしているドキュメントのあらゆる部分に影響します。

各リンクは、次の2つの方法のいずれかで変更されます:

Wgetによってダウンロードされたファイルへのリンクは、相対リンクとして、指し示すファイルを参照するように変更されます。

例:ダウンロードされたファイル/foo/doc.htmlが、同じくダウンロードされた/bar/img.gifにリンクしている場合、doc.htmlのリンクは./bar/img.gifを指すように変更される。このような変換は、任意のディレクトリの組み合わせに対して確実に機能する。

Wgetによってダウンロードされていないファイルへのリンクは、ホスト名と絶対パスを含むように変更されます。

例:ダウンロードされたファイル/foo/doc.htmlが/bar/img.gif(または./bar/img.gif)にリンクしている場合、doc.htmlのリンクはhttp://hostname/bar/img.gif。

リンクされたファイルがダウンロードされた場合、リンクはそのローカル名を参照し、ダウンロードされなかった場合、リンクはリンク切れを起こすことなく、完全なインターネットアドレスを参照します。以前のリンクは相対リンクに変換されるため、ダウンロードした階層を別のディレクトリに移動することができます。

ダウンロードの最後にのみ、Wgetはどのリンクがダウンロードされたかを知ることができることに注意してください。そのため、-kによる作業はすべてのダウンロードの最後に実行される。

-K--backup-converted

ファイルを変換する場合、元のバージョンを接尾辞 .orig でバックアップします。Nの動作に影響する。

-m--mirror

ミラーリングに適したオプションをオンにする。このオプションは、再帰とタイムスタンプをオンにし、再帰の深さを 無限に設定し、FTPディレクトリの一覧を保持する。現在のところ、-r -N -l inf --no-remove-listingと同等である。

-p--page-requisites

このオプションは、与えられたHTMLページを適切に表示するために必要なすべてのファイルをWgetにダウンロードさせる。これには、インライン画像、サウンド、参照スタイルシートなどが含まれます。

通常、単一のHTMLページをダウンロードする場合、それを適切に表示するために必要なドキュメントはダウンロードされません。rを-lと一緒に使うことで解決できますが、Wgetは通常、外部ドキュメントとインラインドキュメントを区別しないので、一般的に、必要なものが欠けている「リーフドキュメント」が残ってしまいます。

例えば、ドキュメント1.htmlが、1.gifを参照する"<IMG>"タグと、外部ドキュメント2.htmlを指す"<A>"タグを含んでいるとします。2.htmlも同様だが、その画像は2.gifであり、3.htmlにリンクしているとする。これが、ある任意の数まで続くとする。

If one executes the command:

wget -r -l 2 http://<site>/1.html

とすると、1.html、1.gif、2.html、2.gif、3.htmlがダウンロードされる。おわかりのように、3.htmlには必要な3.gifがない。Wgetは再帰をどこで止めるかを決定するために、1.htmlからのホップ数(最大2)を数えているだけだからだ。しかし、このコマンドでは

wget -r -l 2 -p http://<site>/1.html

all the above files and 3.html's requisite 3.gif will be downloaded. Similarly,

wget -r -l 1 -p http://<site>/1.html

1.html、1.gif、2.html、2.gifがダウンロードされる。と思うかもしれない:

wget -r -l 0 -p http://<site>/1.html

を指定すると、1.htmlと1.gifだけをダウンロードすることになるが、-l 0は-l inf-つまり無限再帰と等価なので、残念ながらそうはならない。単一のHTMLページ(または、コマンドラインまたは-i URL入力ファイルで指定された一握りのHTMLページ)とその(またはその)必要なものをダウンロードするには、-rと-lを省略するだけでよい:

wget -p http://<site>/1.html

Wgetは-rが指定されたかのように動作するが、その単一ページとその必要なものだけがダウンロードされることに注意。そのページから外部ドキュメントへのリンクは辿られない。実際、1つのページとその必要なものすべて(たとえそれらが別々のウェブサイトに存在するとしても)をダウンロードし、そのロットがローカルで正しく表示されるようにするために、筆者は-pに加えていくつかのオプションを使うのが好きだ:

wget -E -H -k -K -p http://<site>/<document>

このトピックの最後に、Wgetが考える外部ドキュメントリンクとは、"<A>"タグ、"<AREA>"タグ、または"<LINK REL="stylesheet">"以外の"<LINK>"タグで指定されたURLであることを知っておくとよいでしょう。

--strict-comments

HTMLコメントの厳密な解析を有効にする。デフォルトは最初の --> でコメントを終了します。

仕様によると、HTMLコメントはSGML宣言として表現されます。宣言とは、<!DOCTYPE ...>のように、<!で始まり>で終わる特別なマークアップのことで、一対の--区切り文字の間にコメントを含むことができます。HTMLのコメントは「空の宣言」で、コメント以外のテキストを含まないSGML宣言です。したがって、<!-foo-->は有効なコメントであり、<!--one-- -two-->も有効ですが、<!-1--2-->は有効ではありません。

一方、ほとんどのHTMLライターは、コメントを<!--と -->で区切られたテキスト以外には認識しません。例えば、<!------------>のようなものは、ダッシュの数が4の倍数(!)である限り、有効なコメントとして機能します。そうでない場合、そのコメントは技術的には次の--まで続きますが、それは文書のもう一方の端にあるかもしれません。このため、多くの一般的なブラウザは仕様を完全に無視し、<!--と -->で区切られたコメントという、ユーザーが期待するものを実装しています。

バージョン1.9まで、Wgetはコメントを厳密に解釈していたため、ブラウザでは問題なく表示されるものの、非準拠のコメントを含む多くのウェブページでリンクが欠落するという不運を招いていました。バージョン1.9から、Wgetは「素朴な」コメントを実装するクライアントの仲間入りをしました。

何らかの理由で厳密なコメント解析が必要な場合は、このオプションを使用してオンにしてください。

再帰的Accept/Rejectオプション

-A acclist --accept acclist-R rejlist --reject rejlist

コンマで区切られたファイル名の接尾辞またはパターンを指定する。acclistまたはrejlistの要素にワイルドカード文字、*、?

-D domain-list--domains=domain-list

domain-listはカンマで区切ったドメインのリストである。Hをオンにしないことに注意。

--exclude-domains domain-list

フォローしないドメインを指定する。

--follow-ftp

HTML文書からFTPリンクをたどる。このオプションがない場合、Wgetは全てのFTPリンクを無視します。

--follow-tags=list

Wgetは、再帰検索でリンクされたドキュメントを探すときに考慮するHTMLタグと属性のペアの内部テーブルを持っています。しかし、ユーザがこれらのタグのサブセットのみを考慮したい場合は、このオプションでタグをカンマ区切りで指定する必要があります。

--ignore-tags=list

これは-follow-tagsオプションの逆である。ダウンロードするドキュメントを再帰的に探すときに特定のHTMLタグをスキップするには、カンマ区切りのリストで指定します。

以前は、このオプションは、コマンドラインを使用して、単一のページとその必要なものをダウンロードするための最良の方法でした:

wget --ignore-tags=a,area -H -k -K -r http://<site>/<document>

しかし、このオプションの作者は、"<LINK REL="home" HREF="/">"のようなタグを持つページに遭遇し、無視するタグを指定するだけでは不十分であることに気づいた。スタイルシートがダウンロードされないからだ。現在、単一のページとその必要条件をダウンロードするための最良の方法は、専用の --page-requisites オプションである。

--ignore-case

ファイルとディレクトリのマッチング時に大文字と小文字を無視します。これは、-R、-A、-I、-X オプションと、FTP サイトからダウンロードするときに実装されるグロビングの動作に影響する。たとえば、このオプションを指定すると、-A *.txt は file1.txt にマッチするが、file2.TXT や file3.TxT などにもマッチする。

-H--span-hosts

再帰的な検索を行う際に、ホスト間のスパニングを有効にする。

-L--relative

相対リンクのみをたどる。同じホストのものでなくても、特定のホームページを邪魔されずに取得するのに便利です。

-I list--include-directories=list

ダウンロード時に追いかけたいディレクトリのリストをカンマ区切りで指定する。リストの要素にはワイルドカードを含めることができます。

-X list--exclude-directories=list

ダウンロードから除外したいディレクトリをカンマ区切りで指定します。リストの要素にはワイルドカードを含めることができます。

-np--no-parent

再帰的に取得するときに、親ディレクトリに昇順しない。これは便利なオプションで、ある階層以下のファイルだけがダウンロードされることを保証するからである。

終了ステータス

Wgetは問題が発生した場合、いくつかのエラーコードのいずれかを返すことがある。

0

問題は発生しなかった。

1

一般的なエラーコード。

2

パースエラー--例えば、コマンドラインオプションのパース時、.wgetrcまたは.netrc...。

3

ファイルI/Oエラー。

4

ネットワーク障害。

5

SSL検証に失敗しました。

6

ユーザー名/パスワード認証の失敗。

7

プロトコルエラー。

8

サーバーがエラー応答を発行しました。

0と1を除き、複数の種類のエラーが発生した場合、番号の小さい終了コードが番号の大きい終了コードより優先されます。

Wgetの1.12より前のバージョンでは、Wgetの終了ステータスは役に立たず、一貫性がない傾向があった。再帰的なダウンロードは、遭遇した問題に関係なく、事実上常に0(成功)を返し、非再帰的な取得は、最近試行されたダウンロードに対応するステータスを返すだけでした。

Files

/etc/wgetrc

グローバル・スタートアップ・ファイルのデフォルトの場所。

.wgetrc

ユーザー起動ファイル。

BugsGNU Wgetバグトラッカー(http://wget.addictivecode.org/BugTracker参照)を通してバグレポートを提出することを歓迎します。

実際にバグ報告を提出する前に、いくつかの簡単なガイドラインに従ってみてください。

あなたが見た動作が本当にバグであるか確認してください。Wgetがクラッシュする場合、それはバグです。Wgetがドキュメント通りに動作しない場合、それはバグです。動作がおかしいが、その動作方法がよくわからない場合は、バグかもしれませんが、ドキュメントやメーリングリストを再確認してください。

できるだけ単純な状況でバグを繰り返してみる。例えば、wget -rl0 -kKE -t5 --no-proxy http://yoyodyne.com -o /tmp/logをダウンロード中にWgetがクラッシュした場合、そのクラッシュが再現可能かどうか、また、より単純なオプションのセットで起こるかどうかを試してみてください。クラッシュが発生したページからダウンロードを開始して、そのページが何らかの形でクラッシュの引き金になったかどうかを確認することもできるかもしれない。

また、あなたの.wgetrcファイルの内容を知りたいとは思いますが、それをデバッグメッセージにダンプするのは悪い考えでしょう。その代わりに、まず.wgetrcを移動してバグが繰り返されるかどうかを試してください。.wgetrcの設定がバグに影響することが判明した場合のみ、そのファイルの該当箇所を私にメールしてください。3.

Wgetを-dオプションで起動し、結果の出力(または関連する部分)を送ってください。Wgetがデバッグサポートなしでコンパイルされた場合、再コンパイルしてください。

注意: バグアドレスに送信する前に、デバッグログから機密情報を削除してください。d "はわざわざ機密情報を収集することはありませんが、ログにはWgetのサーバとの通信のかなり完全な記録が含まれます。バグアドレスは一般に公開されているので、すべてのバグレポートは一般に公開されていると考えてよい。4.

  1. Wgetがクラッシュした場合、デバッガで実行してみてください。例えば、 "gdb `which wget` core "と入力し、"where "と入力してバックトレースを取得します。システム管理者がコアファイルを無効にしている場合、これは機能しないかもしれないが、試しても安全である。

See Also

これはGNU Wgetの完全なマニュアルではありません。いくつかのオプションのより詳細な説明や、.wgetrcファイルと-eオプションで使用可能な多くのコマンドを含む、より完全な情報については、wgetのGNU Infoエントリを参照してください。

https://linux.die.net/man/1/wget


お願い致します