我有一个web目录,我存储一些配置文件。我想使用wget将这些文件拉下来并保持它们当前的结构。例如,远程目录看起来像:
http://mysite.com/configs/.vim/
.vim包含多个文件和目录。我想用wget在客户端复制它。似乎无法找到正确的wget标志组合来完成这项工作。什么好主意吗?
我有一个web目录,我存储一些配置文件。我想使用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/
其他回答
如果——没有家长帮助,你可以使用——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
递归下载一个目录,该目录拒绝index.html*文件,下载时不包含主机名、父目录和整个目录结构:
wget -r -nH --cut-dirs=2 --no-parent --reject="index.html*" http://mysite.com/dir1/dir2/data
您必须将-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命令,用于从服务器目录下载文件(忽略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/
这个版本递归下载,不创建父目录。
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/”