wget命令是英文词组”web get“的缩写,用于从指定网址下载网络文件。
wget命令支持如HTTP、HTTPS、FTP等常见协议,可以在命令行中直接下载网络文件。
与curl命令不同,wget仅能用于下载文件。
wget命令语法格式如下:
wget [选项] 网址
常用选项如下:
选项 | 作用或含义 |
-V | 显示版本信息 |
-h | 显示帮助信息 |
-b | 启动后转入后台执行 |
-c | 支持断点续传 |
-O | 定义本地文件名 |
-t N | N为整数,设置重试次数N |
-q | 安静模式 |
-i FILENAME | 下载的网址从文件FILENAME中读取 |
-r | 递归下载 |
-l | L的小写,指定最大递归深度,0或inf表示无限制 |
--limit-rate=RATE | 限制下载速度最大为RATE |
--ftp-user=USERNAME | 指定登录FTP服务器的账号名称 |
--ftp-password=PASSWORD | 指定登录FTP服务器的账号密码 |
--miror | 镜像站点 |
-np | 不追溯至父目录,递归下载时常用 |
-N | 只获取比本地文件新的文件 |
-P DIRNAME | 保存文件到指定目录DIRNAME下 |
--no-check-certificate | 不要验证服务器的证书,从HTTPS服务器下载时建议加上该选项 |
实例演示:
1、下载指定文件
# 不带选项,下载并按原文件名保存在当前目录[root@myEuler ~]# wget http://192.168.18.18/k8s/docker-20.10.23.tgz--2023-03-11 08:36:48-- http://192.168.18.18/k8s/docker-20.10.23.tgz正在连接 192.168.18.18:80... 已连接。已发出 HTTP 请求,正在等待回应... 200 OK长度:65976837 (63M) [application/octet-stream]正在保存至: “docker-20.10.23.tgz”……此处省略部分输出……
2、下载并重命名文件
# 使用选项-O,将下载的文件重命名为指定的文件名[root@myEuler ~]# wget -O docker http://192.168.18.18/k8s/docker-20.10.23.tgz--2023-03-11 08:38:37-- http://192.168.18.18/k8s/docker-20.10.23.tgz正在连接 192.168.18.18:80... 已连接。已发出 HTTP 请求,正在等待回应... 200 OK长度:65976837 (63M) [application/octet-stream]正在保存至: “docker”……此处省略部分输出……
3、限速下载
# 使用选项--limit=RATE,限制最高下载速率[root@myEuler ~]# wget --limit=218k -O docker2 http://192.168.18.18/k8s/docker-20.10.23.tgz--2023-03-11 08:41:16-- http://192.168.18.18/k8s/docker-20.10.23.tgz正在连接 192.168.18.18:80... 已连接。已发出 HTTP 请求,正在等待回应... 200 OK长度:65976837 (63M) [application/octet-stream]正在保存至: “docker2”docker2 5%[==> ] 3.56M 218KB/s 剩余 4m 39s
4、将下载任务放至后台
[root@myEuler ~]# wget -b http://192.168.18.18/k8s/docker-20.10.23.tgz继续在后台运行,pid 为 34327。将把输出写入至 “wget-log”。
5、断点续传
断点续传非常适合下载大文件,若下载中途因网络原因导致下载中断,这时就可以使用选项-c进行断点续传,避免从头下载。
[root@myEuler ~]# wget -c http://192.168.18.18/images/openEuler-22.03-LTS-SP1-everything-x86_64-dvd.iso
6、从FTP服务器下载文件
如果FTP服务器是匿名的,则下载与HTTP相同,如果要求提供用户账号,则必须使用--ftp-user和--ftp-password这两个选项。
[root@myEuler ~]# wget --ftp-user=zhangsan --ftp-password=Mima1234! ftp://192.168.218.115/docker--2023-03-11 09:16:49-- ftp://192.168.218.115/docker => “docker”正在连接 192.168.218.115:21... 已连接。正在以 zhangsan 登录 ... 登录成功!……此处省略后续输出……
7、递归下载
若想将站点中某个目录下的所有子目录及其文件都下载下来,则可以使用-r选项,同时用选项-l指定递归的深度。
# 安静递归下载,递归深度为6,不追溯父目录,下载的文件保存至data目录[root@myEuler ~]# wget -qrl 6 -np -P data/ http://192.168.18.18/images/harbor
8、镜像站点
当想将某个站点镜像下来时,就可以使用选项--mirror,该选项其实就是递归下载,只是递归深度不限,它本质是-N -r -l inf --no-remove-listing 的缩写形式。
[root@myEuler ~]# wget --mirror -P /data/ http://192.168.18.18/images/
但若站点是一个包含了大量Web网页的站点时,建议还要使用以下选项:
--convert-links:下载网页后,将链接转换成本地链接
-L:递归时不进入其它主机,因为可能该网站可能存在友情链接
9、从文件中读取下载的URL
# 在文件中指定要下载的URL,每行一个[root@myEuler ~]# cat downloadhttp://nginx.org/download/nginx-1.22.1.tar.gzhttps://webcdn.m.qq.com/spcmgr/download/QQ9.7.3.28946.exehttps://webcdn.m.qq.com/spcmgr/download/WeChatSetup_3.9.0.28.exe# 由于有HTTPS,故建议加上--no-check-certificate选项,否则可能提示没有认证不允许下载[root@myEuler ~]# wget -i download --no-check-certificate