いくつかの設定ファイルを保存するWebディレクトリがあります。 wgetを使ってそれらのファイルをプルダウンし、現在の構造を維持したいと思います。たとえば、リモートディレクトリは次のようになります。
http://mysite.com/configs/.vim/
.vimは複数のファイルとディレクトリを保持します。私はwgetを使ってクライアント上でそれを再現したいです。これを実現するためのwgetフラグの正しい組み合わせが見つかりません。何か案は?
-np
/--no-parent
オプションを(もちろん-r
/--recursive
に加えて)wget
に渡す必要があります。そうでなければ、それは私のサイトのディレクトリインデックスの親ディレクトリへのリンクをたどります。そのため、コマンドは次のようになります。
wget --recursive --no-parent http://example.com/configs/.vim/
自動生成されたindex.html
ファイルをダウンロードしないようにするには、-R
/--reject
オプションを使用します。
wget -r -np -R "index.html*" http://example.com/configs/.vim/
ディレクトリを再帰的にダウンロードするには、index.html *ファイルを拒否し、ホスト名、親ディレクトリ、およびディレクトリ構造全体を削除します。
wget -r -nH --cut-dirs=2 --no-parent --reject="index.html*" http://mysite.com/dir1/dir2/data
同様の問題を抱えている他の誰にとっても。 Wgetはrobots.txt
の後に続きますので、サイトをつかむことはできません。心配しないで、あなたはそれをオフにすることができます:
wget -e robots=off http://www.example.com/
http://www.gnu.org/software/wget/manual/html_node/Robot-Exclusion.html
タイムスタンプを台無しにしないで無期限に再帰するように注意するので、-m(mirror)フラグを使うべきです。
wget -m http://example.com/configs/.vim/
このスレッドに他の人が言及した点を追加すると、次のようになります。
wget -m -e robots=off --no-parent http://example.com/configs/.vim/
これが私のためにサーバのディレクトリからファイルをダウンロードするために働いた完全なwgetコマンドです(robots.txt
を無視します):
wget -e robots=off --cut-dirs=3 --user-agent=Mozilla/5.0 --reject="index.html*" --no-parent --recursive --relative --level=1 --no-directories http://www.example.com/archive/example/5.3.0/
--no-parent
が役に立たない場合は、--include
オプションを使用してください。
ディレクトリ構造
http://<Host>/downloads/good
http://<Host>/downloads/bad
そして、あなたはdownloads/good
をダウンロードしたいがdownloads/bad
ディレクトリはしたくない:
wget --include downloads/good --mirror --execute robots=off --no-Host-directories --cut-dirs=1 --reject="index.html*" --continue http://<Host>/downloads/good
wget -r http://mysite.com/configs/.vim/
私のために働きます。
おそらくあなたはそれに干渉している.wgetrcを持っている?
ユーザー名とパスワードを使用してディレクトリを再帰的に取得するには、次のコマンドを使用します。
wget -r --user=(put username here) --password='(put password here)' --no-parent http://example.com/
必要なのは2つのフラグだけです。1つは再帰用の"-r"
と"--no-parent"
と-np
に入らないための'.'
(または".."
)です。このような:
wget -r --no-parent http://example.com/configs/.vim/
それでおしまい。それは次のローカルツリーにダウンロードするでしょう:./example.com/configs/.vim
。ただし、最初の2つのディレクトリが不要な場合は、以前の返信で提案されているように追加のフラグ--cut-dirs=2
を使用します。
wget -r --no-parent --cut-dirs=2 http://example.com/configs/.vim/
そしてそれはあなたのファイルツリーを./.vim/
にのみダウンロードします。
実際、私はこの答えから wget manual から正確に最初の行を得ました、彼らはセクション4.3の終わりに向かって非常にきれいな例を持っています。
-rを追加するだけでそれを実行できるはずです。
wget -r http://stackoverflow.com/
このバージョンは再帰的にダウンロードし、親ディレクトリを作成しません。
wgetod() {
NSLASH="$(echo "$1" | Perl -pe 's|.*://[^/]+(.*?)/?$|\1|' | grep -o / | wc -l)"
NCUT=$((NSLASH > 0 ? NSLASH-1 : 0))
wget -r -nH --user-agent=Mozilla/5.0 --cut-dirs=$NCUT --no-parent --reject="index.html*" "$1"
}
使用法:
~/.bashrc
に追加するか、端末に貼り付けますwgetod "http://example.com/x/"
Wget 1.18はもっとうまくいくかもしれません、例えば、バージョン1.12のバグに噛み付かれました。
wget --recursive (...)
...すべてのファイルの代わりにindex.htmlのみを取得します。
この問題を回避するには、301個のリダイレクトを確認して新しい場所を試します。新しいURLを指定すると、wgetはディレクトリ内のすべてのファイルを取得します。