在服务器上想拉一个安装包,翻了几篇帖子只看到 wget 和 curl,Linux 下载命令确实没有统一的一条。多数发行版自带这两个工具,用哪个看习惯。
wget 适合直接下文件
wget 默认把文件存到当前目录,文件名跟远程一致。想改名用 -O,想指定保存目录用 -P,断点续传加 -c,后台下载加 -b,限速用 --limit-rate=1m。
wget https://example.com/tool.tar.gz; wget -c -O tool.tar.gz https://example.com/tool.tar.gzhttps 地址默认校验证书,公司内网用自签证书会报错,临时跳过加 --no-check-certificate,但公网环境别随手加这个参数,等于关掉了身份校验。
curl 更灵活,输出要自己指定
curl 默认把内容打到终端,下载文件得加 -O 保留远程文件名,或者 -o 指定文件名。遇到 301、302 要加 -L 跟随跳转,显示进度条用 -#,静默模式用 -s。
curl -L -o tool.tar.gz https://example.com/tool.tar.gz需要带请求头、发 POST、调接口,curl 更顺手;单纯下一个大文件,wget 的参数少,出错也好懂。
包管理器也能只下载不安装
Debian、Ubuntu 用 apt download 包名,deb 文件落在当前目录;CentOS 用 yum install --downloadonly --downloaddir=/tmp 包名,依赖可以一起下,适合给离线机器准备。下完核对 sha256sum,和官网公布的校验值对一遍,别嫌麻烦。
下载大文件前先 df -h 看磁盘余量,传一半空间满了更麻烦。下载前还要确认目录有没有写权限,往 /usr/local 这类地方写要加 sudo。日常用哪个都行,把 -c 断点续传记住,网络抖动时能省不少时间。文件特别大就用 nohup 加 & 放到后台,断开 SSH 也不会中断;curl 的断点续传写 -C -,和 wget -c 是一个意思。