我有一個Web目錄,我在其中存儲一些配置文件。我想使用wget來拉下這些文件並保持其當前結構。例如,遠程目錄如下所示:使用wget遞歸獲取一個包含任意文件的目錄
http://mysite.com/configs/.vim/
.vim保存多個文件和目錄。我想用wget在客戶端複製它。似乎無法找到正確的組合wget標誌來完成這件事。有任何想法嗎?
我有一個Web目錄,我在其中存儲一些配置文件。我想使用wget來拉下這些文件並保持其當前結構。例如,遠程目錄如下所示:使用wget遞歸獲取一個包含任意文件的目錄
http://mysite.com/configs/.vim/
.vim保存多個文件和目錄。我想用wget在客戶端複製它。似乎無法找到正確的組合wget標誌來完成這件事。有任何想法嗎?
你必須在-np
/--no-parent
選項傳遞給wget
(除了-r
/--recursive
,當然),否則會請按照我網站上的目錄索引中的鏈接訪問父目錄。所以,命令應該是這樣的:
wget --recursive --no-parent http://example.com/configs/.vim/
爲了避免下載自動生成index.html
文件,使用-R
/--reject
選項:
wget -r -np -R "index.html*" http://example.com/configs/.vim/
wget -r http://mysite.com/configs/.vim/
適合我。
也許你有一個干擾它的.wgetrc?
你應該能夠做到這一點只需添加一個-r
wget -r http://stackoverflow.com/
這實際上並不下載目錄,而是可以在服務器上找到的所有文件,包括您要下載的目錄之上的目錄。 – Luc 2013-03-20 09:38:21
要遞歸下載目錄,它拒絕的index.html *文件和下載沒有主機名,父目錄和整個目錄結構:
wget -r -nH --cut-dirs=2 --no-parent --reject="index.html*" http://mysite.com/dir1/dir2/data
對於anyon否則有類似的問題。 Wget遵循robots.txt
,這可能不允許您抓取該網站。不用擔心,你可以將其關閉:
wget -e robots=off http://www.example.com/
http://www.gnu.org/software/wget/manual/html_node/Robot-Exclusion.html
下面是完整的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
你應該使用-m(鏡像)標誌,爲照顧到不亂帶時間戳並無限期地遞歸。
wget -m http://example.com/configs/.vim/
如果添加其他人在這個線程中提到的點,那就是:
wget -m -e robots=off --no-parent http://example.com/configs/.vim/
獲取目錄遞歸使用用戶名和密碼,請使用以下命令:
wget -r --user=(put username here) --password='(put password here)' --no-parent http://example.com/
Wget 1.18可能會更好地工作,例如,我被一個版本1.12的bug咬了...
wget --recursive (...)
...只檢索index.html而不是所有文件。
解決方法是注意到一些301重定向,並嘗試新的位置 - 給定新的URL,wget獲取目錄中的所有文件。
該版本以遞歸方式下載,不會創建父目錄。
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/"
所有你需要的是兩個標誌,一個是"-r"
遞歸和"--no-parent"
(或-np
)爲了不去'.'
和".."
。就像這樣:
wget -r --no-parent http://example.com/configs/.vim/
就是這樣。它將下載到以下本地樹中:./example.com/configs/.vim
。 但是,如果你不想前兩個目錄,然後使用附加標誌--cut-dirs=2
的建議在早期回覆:
wget -r --no-parent --cut-dirs=2 http://example.com/configs/.vim/
它會下載你的文件樹只進./.vim/
事實上,我從第wget manual這個答案中得到了第一行,這是第4.3節結尾的一個非常簡單的例子。
add -nH(切出主機名)--cut-dirs = X(切出X個目錄)。有點煩人的是不得不手動計算X的目錄.. – lkraav 2010-11-08 21:49:46
爲什麼這些工作不能用於http://www.w3.org/History/1991-WWW-NeXT/Implementation/? 它只會下載robots.txt – matteo 2011-11-14 18:56:58