wget指定文件,指定目录,指定路径下载

本文介绍 wget 的高级用法,包括如何下载全站资料并进行本地化、如何利用代理下载资源及各类选项说明。同时提供了丰富的参数配置指南,帮助读者更好地掌握这一强大的下载工具。

转自 http://java-er.com/blog/wget-useage-x/

有时候我们需要wget一个文件下载到指定的目录下,或者重命名成指定的名字
wget -r -p -np -k -P ~/tmp/ http://java-er.com

wget居然有如此邪恶的用法

这个语句表示下载全站资料

等于把一个网站整个静态化到本地。


解释一下参数

-P 表示下载到哪个目录
-r 表示递归下载
-np 表示不下载旁站连接.
-k 表示将下载的网页里的链接修改为本地链接.
-p 获得所有显示网页所需的元素

额外的
-c 断点续传
-nd 递归下载时不创建一层一层的目录,把所有的文件下载到当前目录
-L 递归时不进入其它主机,如wget -c -r www.xxx.org/
-A 指定要下载的文件样式列表,多个样式用逗号分隔
-i 后面跟一个文件,文件内指明要下载的URL

* 使用代理下载
wget -Y on -p -k https://sourceforge.net/projects/wvware/

代理可以在环境变量或wgetrc文件中设定

# 在环境变量中设定代理
export PROXY=http://211.90.168.94:8080/
# 在~/.wgetrc中设定代理
http_proxy = http://proxy.yoyodyne.com:18023/
ftp_proxy = http://proxy.yoyodyne.com:18023/

wget各种选项分类列表

* 启动

-V, –version 显示wget的版本后退出
-h, –help 打印语法帮助
-b, –background 启动后转入后台执行
-e, –execute=COMMAND
执行`.wgetrc’格式的命令,wgetrc格式参见/etc/wgetrc或~/.wgetrc

* 记录和输入文件

-O, –output-file=FILE 把记录写到FILE文件中
-a, –append-output=FILE 把记录追加到FILE文件中
-d, –debug 打印调试输出
-q, –quiet 安静模式(没有输出)
-v, –verbose 冗长模式(这是缺省设置)
-nv, –non-verbose 关掉冗长模式,但不是安静模式
-i, –input-file=FILE 下载在FILE文件中出现的URLs
-F, –force-html 把输入文件当作HTML格式文件对待
-B, –base=URL 将URL作为在-F -i参数指定的文件中出现的相对链接的前缀
–sslcertfile=FILE 可选客户端证书
–sslcertkey=KEYFILE 可选客户端证书的KEYFILE
–egd-file=FILE 指定EGD socket的文件名

* 下载

–bind-address=ADDRESS
指定本地使用地址(主机名或IP,当本地有多个IP或名字时使用)
-t, –tries=NUMBER 设定最大尝试链接次数(0 表示无限制).
-O –output-document=FILE 把文档写到FILE文件中
-nc, –no-clobber 不要覆盖存在的文件或使用.#前缀
-c, –continue 接着下载没下载完的文件
–progress=TYPE 设定进程条标记
-N, –timestamping 不要重新下载文件除非比本地文件新
-S, –server-response 打印服务器的回应
–spider 不下载任何东西
-T, –timeout=SECONDS 设定响应超时的秒数
-w, –wait=SECONDS 两次尝试之间间隔SECONDS秒
–waitretry=SECONDS 在重新链接之间等待1…SECONDS秒
–random-wait 在下载之间等待0…2*WAIT秒
-Y, –proxy=on/off 打开或关闭代理
-Q, –quota=NUMBER 设置下载的容量限制
–limit-rate=RATE 限定下载输率

* 目录

-nd –no-directories 不创建目录
-x, –force-directories 强制创建目录
-nH, –no-host-directories 不创建主机目录
-P, –directory-prefix=PREFIX 将文件保存到目录 PREFIX/…
–cut-dirs=NUMBER 忽略 NUMBER层远程目录

* HTTP 选项

–http-user=USER 设定HTTP用户名为 USER.
–http-passwd=PASS 设定http密码为 PASS.
-C, –cache=on/off 允许/不允许服务器端的数据缓存 (一般情况下允许).
-E, –html-extension 将所有text/html文档以.html扩展名保存
–ignore-length 忽略 `Content-Length’头域
–header=STRING 在headers中插入字符串 STRING
–proxy-user=USER 设定代理的用户名为 USER
–proxy-passwd=PASS 设定代理的密码为 PASS
–referer=URL 在HTTP请求中包含 `Referer: URL’头
-s, –save-headers 保存HTTP头到文件
-U, –user-agent=AGENT 设定代理的名称为 AGENT而不是 Wget/VERSION.
–no-http-keep-alive 关闭 HTTP活动链接 (永远链接).
–cookies=off 不使用 cookies.
–load-cookies=FILE 在开始会话前从文件 FILE中加载cookie
–save-cookies=FILE 在会话结束后将 cookies保存到 FILE文件中

* FTP 选项

-nr, –dont-remove-listing 不移走 `.listing’文件
-g, –glob=on/off 打开或关闭文件名的 globbing机制
–passive-ftp 使用被动传输模式 (缺省值).
–active-ftp 使用主动传输模式
–retr-symlinks 在递归的时候,将链接指向文件(而不是目录)

* 递归下载

-r, –recursive 递归下载--慎用!
-l, –level=NUMBER 最大递归深度 (inf 或 0 代表无穷).
–delete-after 在现在完毕后局部删除文件
-k, –convert-links 转换非相对链接为相对链接
-K, –backup-converted 在转换文件X之前,将之备份为 X.orig
-m, –mirror 等价于 -r -N -l inf -nr.
-p, –page-requisites 下载显示HTML文件的所有图片

* 递归下载中的包含和不包含(accept/reject)

-A, –accept=LIST 分号分隔的被接受扩展名的列表
-R, –reject=LIST 分号分隔的不被接受的扩展名的列表
-D, –domains=LIST 分号分隔的被接受域的列表
–exclude-domains=LIST 分号分隔的不被接受的域的列表
–follow-ftp 跟踪HTML文档中的FTP链接
–follow-tags=LIST 分号分隔的被跟踪的HTML标签的列表
-G, –ignore-tags=LIST 分号分隔的被忽略的HTML标签的列表
-H, –span-hosts 当递归时转到外部主机
-L, –relative 仅仅跟踪相对链接
-I, –include-directories=LIST 允许目录的列表
-X, –exclude-directories=LIST 不被包含目录的列表
-np, –no-parent 不要追溯到父目录


<think>好的,用户之前问过如何使用wget获取Nginx文件,现在的问题是“wget文件指定目录”。我需要先理解用户的具体需求。可能他们想知道如何在使用wget下载文件指定保存的目录,或者可能下载后移动文件指定目录。 首先,用户可能已经知道基本的wget用法,但需要更高级的目录管理。我需要回顾wget的不同选项,尤其是关于输出目录的参数。-P选项用于指定目录,-O可以指定文件名。这两个参数的区别需要解释清楚,避免用户混淆。 然后,用户可能遇到的问题包括:如何同时更改文件名和目录?如何保持远程目录结构?这里可能需要用到--cut-dirs和--prefix等选项,但需要确认这些选项的用法是否正确,避免给出错误的信息。 另外,用户可能有批量下载的需求,比如下载多个文件指定目录,或者递归下载整个网站。这时候需要介绍递归下载的参数,并提醒用户注意带宽和服务器负载。 还要考虑用户可能的错误操作,例如目录不存在导致下载失败,这时候需要建议先创建目录,或者使用mkdir -p确保目录存在。同时,权限问题也是需要注意的,用户是否有权限写入目标目录。 用户之前的例子是关于Nginx的,可能他们是在进行服务器配置或源码编译,所以指定目录可能涉及到源码存放位置或者安装路径。这时候,给出实际例子会更有帮助,比如将文件下载到/usr/local/src这样的常见目录。 此外,用户可能对相对路径和绝对路径不太清楚,需要明确说明如何在命令中使用这两种路径。例如,-P ./downloads是相对当前目录,而-P /opt/downloads是绝对路径。 最后,整理常见问题,比如如何覆盖已存在的文件,如何处理下载中断的情况,以及如何查看下载日志。这些补充信息能让用户更全面地使用wget,避免遇到问题无法解决。 总结下来,需要分步骤介绍不同的参数和场景,确保用户能够根据自身需求选择合适的方法,同时给出实际例子和注意事项,确保命令的正确执行。</think>以下是使用 `wget` 将文件下载指定目录的 **详细操作指南**,包含多种场景和实用技巧: --- ### **基础用法** #### 1. 使用 `-P` 参数指定目录 ```bash # 将文件下载到 /opt/downloads 目录 wget -P /opt/downloads http://example.com/file.zip # 同时修改文件名(下载指定目录并重命名) wget -O /opt/downloads/custom_name.zip http://example.com/original.zip ``` --- ### **进阶技巧** #### 2. 批量下载到特定目录 ```bash # 下载多个文件指定目录 wget -P /opt/images http://example.com/{img1.jpg,img2.png,file.txt} ``` #### 3. 保持远程目录结构(镜像功能) ```bash # 递归下载并保留原始目录结构 wget -P /backup -r -np http://example.com/path/ ``` #### 4. 动态目录创建(自动处理路径) ```bash # 如果目录不存在则自动创建 mkdir -p ~/downloads/$(date +%Y-%m) && wget -P ~/downloads/$(date +%Y-%m) http://example.com/file ``` --- ### **特殊场景** #### 5. 分片下载到临时目录 ```bash # 下载到 /tmp 并限制速度 wget -P /tmp --limit-rate=1m http://example.com/large_file.iso ``` #### 6. 后台下载到网络存储 ```bash # 下载到 NFS 挂载点(断点续传 + 后台执行) wget -c -b -P /mnt/nas/downloads http://example.com/bigfile.rar ``` --- ### **目录管理技巧** | 参数组合 | 功能说明 | |-----------------------|-----------------------------------| | `-P dir --no-directories` | 下载文件目录但不创建子目录结构 | | `-nd -P dir` | 平铺所有文件到目标目录 | | `-x -P dir` | 强制创建完整远程目录结构 | --- ### **实用命令模板** ```bash # 模板:带进度条、限速、断点续传的完整下载 wget -c --progress=bar:force -P /opt/packages \ --limit-rate=500k \ http://mirror.nginx.org/nginx-1.25.3.tar.gz ``` --- ### **常见问题解决** 1. **权限不足** ```bash sudo wget -P /usr/local/src http://example.com/file # 需要管理员权限 ``` 2. **目录不存在** ```bash mkdir -p /path/to/dir && wget -P /path/to/dir http://example.com/file ``` 3. **中文路径处理** ```bash wget -P "$(iconv -f utf8 -t gbk//TRANSLIT <<< '/下载/中文目录')" http://example.com/file ``` --- ### **文件路径对照表** | 下载源地址 | 本地保存路径 | |------------------------------------|---------------------------------| | `http://a.com/file.txt` | `/opt/downloads/file.txt` | | `http://a.com/img/photo.jpg` | `/opt/downloads/photo.jpg` | | `http://a.com/docs/` (使用 `-r`) | `/opt/downloads/docs/*` | --- 通过以上方法,您可以精准控制文件下载位置。建议生产环境中结合 `-c` (断点续传) 和 `--spider` (测试下载) 参数使用: ```bash # 先测试下载可行性 wget --spider http://example.com/file # 确认后执行实际下载 wget -c -P /target/dir http://example.com/file ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值