在Linux终端环境中,下载文件是日常运维、开发和服务管理中的常见需求,由于Linux服务器通常不配备图形界面,掌握终端下载命令至关重要,本文将详细介绍Linux终端中主流的文件下载工具及其使用方法,涵盖基础命令、高级功能及适用场景,帮助用户根据实际需求选择合适的下载方式。
基础下载工具:wget与curl
wget和curl是Linux中最基础、最常用的下载工具,二者均支持HTTP、HTTPS、FTP等协议,但各有侧重。
wget:非交互式下载利器
wget是GNU开发的免费工具,以“非交互式”和“断点续传”著称,尤其适合脚本自动化下载,其基本语法为wget [选项] URL
,常用参数包括:
-c
:断点续传,若下载中断可从断点继续;-b
:后台下载,适合大文件下载,避免阻塞终端;-P
:指定保存目录,如-P /tmp
将文件保存到/tmp
;-r
:递归下载,可下载整个网站(需配合-l
限制层级);-q
:静默模式,不输出下载信息,适合脚本中静默执行;--limit-rate
:限速下载,如--limit-rate=100k
限制速度为100KB/s。
示例:
- 下载单个文件并保存到
/home/user
:wget -P /home/user https://example.com/file.zip
- 后台下载并记录日志:
wget -b -o download.log https://example.com/large.iso
- 断点续传下载中断的文件:
wget -c https://example.com/incomplete_file.tar.gz
curl:多功能传输工具
curl支持更多协议(如SMTP、SCP、SFTP等),且默认输出到终端,适合需要实时查看下载进度的场景,其语法为curl [选项] URL
,常用参数包括:
-O
:保持远程文件名,如curl -O https://example.com/file.zip
;-o
:指定本地文件名,如curl -o myfile.txt https://example.com/data.txt
;-L
:跟随重定向,若URL跳转可自动跟踪;-u
:用户认证,如-u username:password
;-x
:设置代理,如-x http://proxy:port
;-C -
:断点续传,与wget的-c
类似。
示例:
- 下载文件并保持原文件名:
curl -O https://example.com/image.jpg
- 通过代理下载文件:
curl -x http://192.168.1.100:8080 -o file.pdf https://example.com/report.pdf
- 带用户名密码下载:
curl -u admin:password -O https://example.com/private.zip
高级下载工具:aria2
aria2是一款轻量级、多线程下载工具,支持HTTP、HTTPS、FTP、BT、磁力链接等多种协议,下载速度远超wget和curl,尤其适合大文件和资源密集型下载,其语法为aria2c [选项] URL
,核心参数包括:
-x
:单线程连接数,如-x 16
设置16线程;-s
:同时下载的文件数,适合多文件下载;-c
:启用断点续传;-d
:下载目录,如-d /downloads
;-t
:超时时间(秒),默认60秒;--check-certificate
:忽略SSL证书错误(测试环境可用)。
示例:
- 多线程下载大文件:
aria2c -x 8 -s 8 -c https://example.com/large_file.iso
- 下载磁力链接:
aria2c --bt-metadata-only=true -d /downloads "magnet:?xt=urn:btih:..."
- 下载种子文件:
aria2c -s 2 -d /downloads example.torrent
远程文件传输工具:scp与rsync
若需从远程服务器下载文件(如SSH连接的服务器),scp和rsync是更安全的选择。
scp:基于SSH的安全复制
scp通过SSH协议传输文件,语法为scp [选项] user@host:/remote/path /local/path
,常用参数:
-P
:指定SSH端口(默认22);-r
:递归复制目录;-C
:启用压缩。
示例:
- 从远程服务器下载文件:
scp -P 2222 user@192.168.1.100:/home/user/file.txt /local/path
- 下载整个目录:
scp -r user@remote:/var/www /local/backup
rsync:增量同步工具
rsync支持增量传输(仅同步变化部分),适合大文件或频繁同步场景,语法为rsync [选项] user@host:/remote/path /local/path
,常用参数:
-a
:归档模式,保留权限、时间戳等属性;-v
:显示详细过程;-z
:压缩传输;-P
:显示进度并支持断点续传。
示例:
- 同步远程目录到本地:
rsync -avz user@remote:/data/ /local/backup/
- 仅同步变化文件并显示进度:
rsync -avP user@remote:/logs/ /local/logs/
其他下载方式
- git clone:若需从GitHub、Gitee等代码仓库下载代码,可直接使用
git clone <仓库地址>
,支持SSH和HTTPS协议。 - ftp/sftp:传统FTP协议可通过
ftp
命令连接(交互式),或使用sftp
(基于SSH的安全FTP),语法类似scp,如sftp user@remote
后用get filename
下载。
工具对比与选择
为方便选择,以下是主流下载工具的特性对比:
工具 | 主要用途 | 断点续传 | 多线程 | 代理支持 | 认证支持 | 适用场景 |
---|---|---|---|---|---|---|
wget | 通用下载、脚本自动化 | 是 | 否 | 是 | 是 | 静态资源、网站镜像、后台任务 |
curl | 多协议传输、API测试 | 是 | 否 | 是 | 是 | 动态链接、实时进度、调试接口 |
aria2 | 大文件、BT/磁力下载 | 是 | 是 | 是 | 是 | 高速下载、P2P资源、批量任务 |
scp | 远程文件安全传输 | 否 | 否 | 否 | 是(SSH) | 服务器间文件同步、敏感数据 |
rsync | 远程增量同步 | 是 | 否 | 否 | 是(SSH) | 目录备份、频繁同步、数据迁移 |
注意事项
- 代理设置:若通过代理下载,需确保工具支持代理参数(如wget的
--proxy
、curl的-x
),并配置代理服务器地址和端口。 - 权限问题:下载前需确保对目标目录有写权限(如
mkdir -p /downloads && chmod 755 /downloads
)。 - URL编码:若URL包含特殊字符(如空格、
&
),需用引号包裹或进行编码(如%20
代替空格)。
相关问答FAQs
问题1:下载大文件时网络中断,如何继续下载?
解答:不同工具支持断点续传的方式不同:
- wget:使用
wget -c URL
,若原文件存在会自动从断点继续; - curl:使用
curl -C - -O URL
,-C -
表示自动检测断点; - aria2:使用
aria2c -c URL
,默认启用断点续传; - rsync:使用
rsync -avP URL
,-P
参数包含断点续传功能。
问题2:如何通过代理服务器下载文件?
解答:以常见工具为例,代理配置如下:
- wget:
wget --proxy=on -e "http_proxy=http://proxy:port" -e "https_proxy=http://proxy:port" URL
; - curl:
curl -x "http://proxy:port" URL
(若需HTTPS代理,将协议改为https
); - aria2:
aria2c --http-proxy="http://proxy:port" --https-proxy="http://proxy:port" URL
。
注意:代理地址需替换为实际可用的代理服务器(如http://192.168.1.100:8080
),并确保代理服务器允许下载流量。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/26223.html