dポイントプレゼントキャンペーン実施中!

centos5

wgetコマンドを使って、WEBサイトのデータを丸ごと取得しました。

$ wget -r ftp://ftp.xxxxxx.co.jp/

ところが、下位階層のファイルやフォルダが取れていない事に気付きました。

ftpルート
+-www
  +-htdocs
    +-content1
    | +-file
    | | +-image
    | | | +-image1.png
    | | +-css
    | |   +-css1.css
    | +-content1-1
    | | +-file
    | | | +-image
    | | | | +-image1.png
    | | | +-css
    | | |   +-css1.css
    | | +-index.html
    | +-index.html
    +-content2
    +-image
    | +-image1.png
    +-css
    | +-css1.css
    +-js
    | +-js1.css
    +-index.html

$ wget -r ftp://ftp.xxxxxx.co.jp/
で取得すると、下位階層のファイルが取得できていませんでした。

上記の例で言うと
www/htdocs/content1/content1-1/file
までは取れていて、
www/htdocs/content1/content1-1/fileの中身が空っぽです。

$ wget -r ftp://ftp.xxxxxx.co.jp/www

$ wget -r ftp://ftp.xxxxxx.co.jp/www/htdocs

で取得しても状況は変わらず。
$ wget -r ftp://ftp.xxxxxx.co.jp/www/htdocs/content1
まで指定すると、
www/htdocs/content1/content1-1/file/image
www/htdocs/content1/content1-1/file/css
と、その中のファイルまで取得できました。

これは、どういう事?
wget自体が、単に調子悪いとドンドン取りこぼしていく信頼のおけない機能なのか?
取得階層数のデフォルトが5になっていて、それ以上は明示的に指定が必要なのか?

試しに
$ wget -r -l 99 ftp://ftp.xxxxxx.co.jp/www/htdocs/content1
で99階層を指定してみると、最後までキッチリ取れました。

やっぱり、取得階層数のデフォルトが5なのか?
それとも、通信が、たまたま調子良いか悪いかだけなのか?
取得階層数のデフォルトが5だとすれば、
$ wget -r ftp://ftp.xxxxxx.co.jp/
の時と
$ wget -r ftp://ftp.xxxxxx.co.jp/www/htdocs/
の時がダメで
$ wget -r ftp://ftp.xxxxxx.co.jp/www/htdocs/content1
の時が取れる意味が分からない。

謎です。

A 回答 (3件)

>やっぱり、取得階層数のデフォルトが5なのか?



そうですね
設定ファイルはwgetrcを利用すればいいでしょう。

reclevel = 5
を変更してください

また本当に不調が原因であれば
tries = 20
waitretry = 10

の値を少しあげてみるのも手かもしれません。
    • good
    • 0
この回答へのお礼

ありがとうございます。

簡潔でありながら詳しい説明に感謝です。

お礼日時:2014/08/29 13:06

UnixやLinuxのコマンドなら


「manコマンドでマニュアルを読む」
くらいのことはやってから、人に聞きましょう。

今回のも、最初からそうしていれば、こんなに長々と文章書かずに済んだのです。

man wget より
> -r
> --recursive
> Turn on recursive retrieving. The default maximum depth is 5.
と、ちゃんと「デフォルトでは5階層まで」と書いてあります。


また、manで見るべきところは「SEE ALSO」だと言われています。
SEE ALSOにはこうあります。
> This is not the complete manual for GNU Wget.
> For more complete information,(略) see the GNU Info entry for wget.
「これは完全なマニュアルではないので、より詳しくは GNU infoのwgetを読め」

Googleで検索したら、日本語訳がありました。
http://www.bookshelf.jp/texi/wget/wget-ja_3.html …
> FTP URLを再帰的に回収するとき,Wgetはリモートサーバの

『与えられたディレクトリツリーから』

> 全てのデータを回収し,ローカルにミラーイメージを作成します.
> FTPの 回収もdepthパラメータで制限されます.

と、あなたの疑問が全て載っています。
    • good
    • 0

>やっぱり、取得階層数のデフォルトが5なのか?



そうです。man wget の -l の所にそう書いてあります。
また、無制限は -l 0 です。これは、wget --help に書いてあります(man にないのは謎)。

>の時が取れる意味が分からない。

指定したところからの階層数です。これはmanには書いてないですが、常識的な判断で。

通信がたまたま調子悪いのであれば、エラーになります。
    • good
    • 0
この回答へのお礼

ありがとうございます。

>指定したところからの階層数です。

$ wget -r ftp://ftp.xxxxxx.co.jp/www/htdocs/
と、指定階層を下げてみてもダメだったので、ftpルートからなのか?
と思いきや、
$ wget -r ftp://ftp.xxxxxx.co.jp/www/htdocs/content1
まで下げてみると、最後まで取れたので疑問なんです。

今、新ためて
$ wget -r ftp://ftp.xxxxxx.co.jp/www/htdocs/
してみると、
ちゃんと取れていたので、やっぱり意味が分かりません。

この前は通信が激重だったので。。
そもそも、wget を使おうと思ったのが、filezillaなどのguiツールが途中で通信切れてしまうぐらい重くて、ダウンロードできないから、「コマンドなら幾分軽いかな?」と試したという背景があるのですが、何かそこら辺が絡んでるのかも。。。

お礼日時:2014/08/29 13:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!