Using wget to recursively fetch a directory with arbitrary files in it
我有一个Web目录,在其中存储一些配置文件。我想使用wget将这些文件拉下来并维护它们的当前结构。例如,远程目录如下:
1 | http://mysite.com/configs/.vim/ |
.vim保存多个文件和目录。我想使用wget在客户机上复制它。似乎找不到正确的wget标志组合来完成此操作。有什么想法吗?
你必须把
1 | wget --recursive --no-parent http://example.com/configs/.vim/ |
为避免下载自动生成的
1 | wget -r -np -R"index.html*" http://example.com/configs/.vim/ |
要以递归方式下载一个目录,该目录拒绝index.html*文件,并且不下载主机名、父目录和整个目录结构,请执行以下操作:
1 | wget -r -nH --cut-dirs=2 --no-parent --reject="index.html*" http://mysite.com/dir1/dir2/data |
对于其他有类似问题的人。wget遵循
1 | wget -e robots=off http://www.example.com/ |
http://www.gnu.org/software/wget/manual/html_node/robot-exclusion.html
您应该使用-m(mirror)标志,因为它注意不要弄乱时间戳并无限期地重复出现。
1 | wget -m http://example.com/configs/.vim/ |
如果您在这个线程中添加其他人提到的点,它将是:
1 | wget -m -e robots=off --no-parent http://example.com/configs/.vim/ |
下面是完整的wget命令,我可以从服务器目录下载文件(忽略
1 | 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/ |
如果
目录结构:
1 2 | http://<host>/downloads/good http://<host>/downloads/bad |
您想下载
1 | wget --include downloads/good --mirror --execute robots=off --no-host-directories --cut-dirs=1 --reject="index.html*" --continue http://<host>/downloads/good |
1 | wget -r http://mysite.com/configs/.vim/ |
为我工作。
也许你有一个干扰它的.wgetrc?
要使用用户名和密码递归获取目录,请使用以下命令:
1 | wget -r --user=(put username here) --password='(put password here)' --no-parent http://example.com/ |
您只需要两个标志,一个是用于递归的
就是这样。它将下载到以下本地树:
它只会把你的文件树下载到
事实上,我从这个答案中得到的第一行恰好来自wget手册,在第4.3节的结尾处有一个非常干净的例子。
此版本以递归方式下载,不创建父目录。
1 2 3 4 5 | 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" } |
用途:
wget 1.18可能工作得更好,例如,我被版本1.12的bug咬了,其中…
1 | wget --recursive (...) |
…只检索index.html而不是所有文件。
解决方法是注意到一些301重定向,并尝试新的位置-考虑到新的URL,wget得到了目录中的所有文件。
您应该能够通过添加a-r来完成它。
1 | wget -r http://stackoverflow.com/ |