在CentOS服务器上进行文件下载是日常运维和开发中的常见操作,涵盖了多种工具和方法,适用于不同场景(如命令行交互、自动化脚本、大文件传输等),以下从常用工具、操作步骤、注意事项及场景化建议等方面进行详细说明。

常用下载工具及适用场景
在CentOS服务器中,下载文件主要依赖以下工具,需根据需求(如协议、文件大小、是否断点续传等)选择:
| 工具名称 | 支持协议 | 特点 | 适用场景 |
|---|---|---|---|
wget |
HTTP/HTTPS/FTP | 轻量级、支持断点续传、后台下载 | 简单单文件/目录下载,脚本自动化 |
curl |
HTTP/HTTPS/FTP/SCP等 | 功能丰富、可交互式传输、支持JSON处理 | 复杂请求(如带Header、认证)、API测试 |
yum |
HTTP/HTTPS(Yum仓库) | 系统软件包管理,依赖自动解析 | 下载安装系统软件包(如nginx、php) |
scp/rsync |
SSH(SCP)/SSH(rsync) | 基于SSH加密传输,支持增量同步 | 服务器间文件传输(跨服务器拷贝) |
详细操作步骤
使用wget下载文件
wget是CentOS中最常用的下载工具,默认已安装(若未安装,可通过yum install wget安装)。
-
下载单文件:
wget http://example.com/file.zip
若需指定保存目录或文件名,使用
-P(目录)和-O(文件名):
(图片来源网络,侵删)wget -P /opt http://example.com/file.zip # 保存到/opt目录 wget -O new_name.zip http://example.com/file.zip # 重命名为new_name.zip
-
下载整个目录:
需确保服务器开启目录列表功能(如Apache的Options Indexes),使用-r(递归)和-np(不遍历父目录):wget -r -np http://example.com/files/ # 下载files目录及其子目录
-
断点续传与限制速度:
网络中断时,通过-c续传:wget -c http://example.com/large_file.zip # 断点续传 wget --limit-rate=100k http://example.com/file.zip # 限制下载速度为100KB/s
使用curl下载文件
curl支持更多协议和灵活参数,适合需要精细控制的场景。
-
下载单文件并显示进度:
(图片来源网络,侵删)curl -O http://example.com/file.zip # -O保留原文件名 curl -o output.txt http://example.com/data # -o指定输出文件名
-
带认证或Header的下载:
如需携带Cookie或User-Agent:curl -H "User-Agent: Mozilla/5.0" -b "cookie=value" http://example.com/protected_file
-
通过HTTPS下载并跳过证书验证(测试环境使用):
curl -k https://self-signed-example.com/file.zip
使用yum下载软件包(不安装)
若需下载系统软件包(如.rpm文件)而不直接安装,可通过yumdownloader工具(需安装yum-utils):
yum install yum-utils -y # 安装yumdownloader yumdownloader nginx # 下载nginx及其依赖 yumdownloader --destdir /pkgs nginx # 指定保存目录为/pkgs
服务器间文件传输(scp/rsync)
-
scp(Secure Copy):适合一次性传输小文件,基于SSH协议:scp /local/path/file.zip user@remote_server:/remote/path/ # 上传到远程服务器 scp user@remote_server:/remote/path/file.zip /local/path/ # 从远程服务器下载
参数说明:
-P指定SSH端口(默认22),-r递归传输目录。 -
rsync(Remote Sync):支持增量同步,适合大文件或频繁同步场景:rsync -avz /local/dir/ user@remote_server:/remote/dir/ # 同步目录(a=归档,v= verbose,z=压缩) rsync -avz --progress user@remote_server:/remote/file.zip /local/ # 显示传输进度
注意事项
- 网络环境:确保服务器能访问目标URL(如防火墙开放80/443端口,或配置代理)。
- 磁盘空间:下载前检查目标目录剩余空间(
df -h),避免因空间不足导致失败。 - 权限问题:下载目录需有当前用户写权限(如
/opt目录可能需sudo操作)。 - 安全性:
- 优先使用HTTPS协议,避免HTTP明文传输敏感数据;
- 验证文件完整性(如通过
md5sum/sha256sum校验下载文件的哈希值)。
场景化建议
- 简单脚本自动化:优先使用
wget,语法简洁,适合定时任务(如crontab)。 - API接口交互:使用
curl,可灵活处理JSON响应或认证信息。 - 跨服务器同步:大文件或频繁传输用
rsync,增量传输节省带宽。 - 系统软件管理:通过
yum下载.rpm包,便于离线安装或版本管理。
相关问答FAQs
Q1: 下载大文件时如何避免因网络中断导致任务失败?
A1: 可使用支持断点续传的工具,如wget -c或curl -C -。
wget -c http://example.com/large_file.zip # 若中断,再次执行会从断点继续 curl -C - -O http://example.com/large_file.zip # curl断点续传语法
可配合nohup让任务后台运行(nohup wget -c ... &),避免终端关闭导致任务终止。
Q2: 如何通过代理服务器使用wget或curl下载文件?
A2: 若服务器需通过代理访问外网,可通过以下方式配置:
wget使用代理:export http_proxy=http://proxy_server:8080 # 设置HTTP代理 export https_proxy=https://proxy_server:8080 # 设置HTTPS代理 wget http://example.com/file.zip
或临时通过
-e参数指定代理:wget -e "http_proxy=http://proxy_server:8080" http://example.com/file.zip
curl使用代理:curl --proxy http://proxy_server:8080 -O http://example.com/file.zip
代理认证时需添加用户名密码(如
--proxy user:pass@proxy_server:8080)。
