web-dev-qa-db-ja.com

wgetでミラーリングする場合、「そのようなファイルやディレクトリはありません」

wgetコマンドを使用して clojuredocs のローカルバージョンを保存しようとしています:

wget --user-agent=firefox --ignore-length -c -km 
"http://clojuredocs.org/quickref/Clojure Core"`

ただし、 http://clojuredocs.org/clojure_core/clojure.core/rem のようなリンクに到達すると、no such file or directoryを取得し続けます。これは、ブラウザーでアクセスできるため、明らかに存在します。これは、wgetがパスを構築/連結する方法の問題だと思います。 これをどのように修正しますか?--user-agent--ignore-lengthなどの他のオプションを試しましたが、以下のように同じ結果が得られます(メッセージを正しく表示するには、画像を開く必要があります)。

enter image description here

次のコマンドがあるため、これはミラーリングの問題のようです。

wget http://clojuredocs.org/clojure_core/clojure.core/rem

大丈夫です。

2
gebby

問題は、URL http://clojuredocs.org/clojure_core./clojuredocs.org/clojure_coreという名前のファイルに保存するwgetの動作に起因しますが、URL http://clojuredocs.org/clojure_core/(末尾のスラッシュに注意)は./clojuredocs.org/clojure_core/index.htmlという名前のファイルに保存します。 。

file./clojuredocs.org/clojure_coreが作成されたら、たとえば次のダウンロードを行います。 wgetディレクトリhttp://clojuredocs.org/clojure_core/somethingを作成できなくなったため、./clojuredocs.org/clojure_coreは失敗する運命にあります。

これは、GNU Wget Bugtrackerのバグ #29647 として報告されました。

提供された パッチ (明らかに公式のソースコードにはなりませんでした)を使用すると、この問題はなくなり、wgetは最初にディレクトリを作成するように強制されます。したがって、ダウンロードを続行できます。

ただし、http://clojuredocs.org/clojure_core./clojuredocs.org/clojure_core.1としてではなく./clojuredocs.org/clojure_core/index.htmlとして保存されます。

リンクコンバーター(-k)が、このミラーリングされたローカルコピーのリンクを機能させるのに十分スマートであるかどうかを判断できません...数分後にダウンロードを停止しました。 (私は焦りすぎです;)

4
mpy