9

単純なパスワードで保護された Web ポータルを、ミラーリングして最新の状態に保ちたいデータにミラーリングしたいと考えています。基本的に、この Web サイトはフォルダに整理されたデータを含む単なるディレクトリ リストであり、html ファイルやその他の書式設定要素を保持することはあまり気にしません。ただし、サイズが大きすぎてダウンロードできない巨大なファイル タイプがいくつかあるので、無視したいと思います。

フラグを使用するwget -m -R/--rejectと、すべてのファイルがダウンロードされ、-R フラグと一致する場合は削除されることを除いて、私が望むことはほぼ実現します。

これが私が使用している方法ですwget

wget --http-user userName --http-password password -R index.html,*tiff,*bam,*bai -m http://web.server.org/

次のような出力が生成され、除外されたファイル (index.html) が (a) ダウンロードされ、(b) その後削除されることが確認されます。

...
--2012-05-23 09:38:38-- http://web.server.org/folder/
web.server.org:80 への既存の接続を再利用します。
HTTP 要求が送信され、応答を待っています... 401 承認が必要です
web.server.org:80 への既存の接続を再利用しています。
HTTP 要求が送信され、応答を待っています... 200 OK
長さ: 2677 (2.6K) [text/html]
保存先: `web.server.org/folder/index.html' 100%[======== ================================================== ================================================== ==========>] 2,677 --.-K/s in 0s

Last-modified ヘッダーがありません -- タイムスタンプがオフになっています。
2012-05-23 09:38:39 (328 MB/s) - `web.server.org/folder/index.html' が保存されました [2677/2677]

それ以来、 web.server.org/folder/index.html を削除しています拒否する必要があります。

...

ファイルをダウンロードする前に wget に強制的にファイルを拒否させる方法はありますか?
検討すべき代替手段はありますか?

401 Authorization Requiredまた、ユーザー名とパスワードを指定したにもかかわらず、ダウンロードしたファイルごとにエラーが発生するのはなぜですか。wgetユーザー名/パスワードを試す前に、毎回認証なしで接続しようとするようなものです。

ありがとう、マーク

4

4 に答える 4

6

Pavuk ( http://www.pavuk.org ) は、URL パターンとファイル名拡張子に基づいてファイルを除外して、Web サイトをミラーリングできる有望な代替手段のように見えましたが、pavuk 0.9.35 seg-faults/dies は、長い転送の途中であり、積極的に開発されているようには見えません (このバージョンは 2008 年 11 月に作成されました)。

参考までに、これが私がそれをどのように使用していたかです:
pavuk -mode mirror -force_reget -preserve_time -progress -Robots -auth_scheme 3 -auth_name x -auth_passwd x -dsfx 'html,bam,bai,tiff,jpg' -dont_leave_site -remove_old -cdir /path/to/root -subdir /path/to/root -skip_url_pattern ’*icons*’ -skip_url_pattern '*styles*' -skip_url_pattern '*images*' -skip_url_pattern '*bam*' -skip_url_pattern '*solidstats*' http://web.server.org/folder 2>&1 | tee pavuk-日付.log

最後にwget --exclude-directories、トリックを行いました:

wget --mirror --continue --progress=dot:mega --no-parent \
--no-host-directories --cut-dirs=1 \
--http-user x --http-password x \
--exclude-directories='folder/*/folder_containing_large_data*' --reject "index.html*" \
--directory-prefix /path/to/local/mirror
http://my.server.org/folder

--exclude-directoriesワイルドカードは「/」にまたがらないため、フォルダー全体をダウンロードしないように、クエリを明確に作成する必要があります。

マーク

于 2012-05-28T00:37:17.210 に答える
1

wgetでは不可能:http://linuxgazette.net/160/misc/lg/how_to_make_wget_exclude_a_particular_link_when_mirroring.html

でも、新しいバージョンについてはよくわかりません。

約401コードでは、状態は保持されないため(CookieはHTTP認証に使用されません)、ユーザー名とパスワードはすべてのリクエストで送信する必要があります。wgetは、ユーザーなしでリクエストを試し、それに頼る前に最初にパスします。

于 2012-05-23T01:42:25.507 に答える