凌峰创科服务平台

Linux如何下载服务器文件?

在Linux环境下从服务器下载文件是日常运维和开发工作中常见的操作,掌握多种下载方法能够根据不同场景(如文件大小、服务器类型、网络环境等)选择最优方案,本文将详细介绍基于Linux的文件下载技术,涵盖常用命令、参数配置、高级场景处理及常见问题解决方案。

Linux如何下载服务器文件?-图1
(图片来源网络,侵删)

基础下载命令:wget与curl

Linux中最常用的下载工具是wgetcurl,二者均支持HTTP、HTTPS、FTP等协议,但功能侧重点有所不同。

wget:简洁高效的下载工具

wget(Web Get)以非交互式设计著称,适合后台下载和批量操作,其核心优势在于支持断点续传、递归下载及镜像站点。
基本语法

wget [选项] [URL]

常用参数

  • -O:指定本地保存文件名,如wget -O newfile.txt http://example.com/file.txt
  • -P:设置下载目录,如wget -P /tmp/ http://example.com/file.zip
  • -c:断点续传,若下载中断后再次执行,会从断点继续,避免重复下载;
  • -r:递归下载,可获取整个网站资源(需配合-l限制层级,如wget -r -l 2 http://example.com);
  • --limit-rate:限速下载,如wget --limit-rate=100k http://example.com/largefile.iso(单位可为k/m/g);
  • --user/--password:认证下载,如wget --user=admin --password=123 http://example.com/private/

示例
下载并重命名文件,同时限制下载速度:

Linux如何下载服务器文件?-图2
(图片来源网络,侵删)
wget -O data_backup.tar.gz --limit-rate=500k http://server.com/backup/data.tar.gz

curl:灵活的数据传输工具

curl支持更多协议(如SMTP、SCP等),且能直接与API交互,适合需要处理响应头或上传/下载同时进行的场景。
基本语法

curl [选项] [URL]

常用参数

  • -o:指定输出文件(与wget -O类似),如curl -o image.jpg http://example.com/image.jpg
  • -L:跟随重定向,若URL发生跳转,curl会自动跟踪;
  • -u:设置认证信息,如curl -u username:password http://example.com/protected/
  • -C -:断点续传(与wget -c功能一致);
  • -X:指定请求方法(如GET/POST),如curl -X POST -d "param=value" http://example.com/api

示例
通过HTTPS下载文件并跟随重定向,同时输出响应头:

curl -I -L -o result.html https://example.com/redirect-page

SCP与SFTP:安全文件传输(SSH协议)

若服务器通过SSH协议访问,需使用scp(Secure Copy)或sftp(Secure File Transfer Protocol)进行加密传输,避免明文泄露。

Linux如何下载服务器文件?-图3
(图片来源网络,侵删)

scp:基于SSH的远程复制

scp通过SSH协议传输文件,语法类似cp,但需指定远程主机信息。
基本语法

scp [选项] [用户@主机:]源路径 [用户@主机:]目标路径

常用参数

  • -P:指定SSH端口(默认22),如scp -P 2222 user@server:/file.txt /local/
  • -r:递归复制目录,如scp -r user@server:/remote_dir /local_dir/
  • -C:启用压缩,适合传输大文件;
  • -p:保留文件权限、时间戳等属性。

示例
从远程服务器下载目录到本地,并保留文件属性:

scp -rp user@192.168.1.100:/data/project /home/localuser/

sftp:交互式文件传输

sftp是SSH的子协议,提供类似FTP的交互式命令行界面,支持上传、下载、删除等操作,适合需要频繁管理远程文件的场景。
基本语法

sftp [用户@主机]

常用交互命令

  • get:下载文件,如get remote_file.txt local_file.txt
  • put:上传文件,如put local_file.txt /remote/path/
  • ls/cd:列出/切换远程目录;
  • mkdir:创建远程目录;
  • bye:退出会话。

示例
通过sftp登录服务器并下载文件:

sftp user@192.168.1.100
sftp> get /remote/path/file.zip /local/path/
sftp> bye

高级场景处理

大文件下载与断点续传

对于大文件(如ISO镜像、数据库备份),网络中断可能导致下载失败,此时可结合wget -ccurl -C -实现断点续传,若服务器不支持断点续传,可尝试分片下载(如使用axel多线程工具):

axel -n 8 -o largefile.iso http://example.com/largefile.iso  # 8线程下载

通过代理服务器下载

若本地网络需通过代理访问服务器,需配置代理参数:

  • wgetwget --http-proxy=proxy:8080 --https-proxy=proxy:8080 http://example.com/file
  • curlcurl --proxy proxy:8080 http://example.com/file

批量下载文件

若需下载多个文件(如网页中的图片、日志文件列表),可结合wget-i参数(从文件读取URL列表)或xargs

# 从url_list.txt批量下载
wget -i url_list.txt
# 通过正则匹配下载网页中的所有jpg图片
curl -s http://example.com | grep -oE 'src="([^"]*\.jpg)"' | cut -d'"' -f2 | xargs -n1 curl -O

工具对比与选择

下表总结了wgetcurlscpsftp的适用场景及特点:

工具 协议支持 核心优势 适用场景
wget HTTP/HTTPS/FTP 非交互式、支持递归/镜像 批量下载、后台任务、网站镜像
curl 多协议(HTTP/HTTPS/FTP/SCP等) 灵活处理响应头、支持API交互 API调用、需处理响应数据、混合协议
scp SSH 基于SSH加密、简单易用 单文件/目录传输、安全拷贝
sftp SSH 交互式操作、支持文件管理 远程文件维护、频繁上传下载

相关问答FAQs

Q1:下载过程中出现“certificate verify failed”错误如何解决?
A:该错误通常是由于HTTPS证书无效或CA证书缺失导致,可通过以下方式解决:

  • 忽略证书验证(不推荐,存在安全风险):wget --no-check-certificate https://example.com
  • 更新CA证书:在Debian/Ubuntu系统中运行sudo apt update && sudo apt install ca-certificates,CentOS中运行sudo yum update ca-certificates
  • 手动指定证书路径:curl --cacert /path/to/cacert.pem https://example.com

Q2:如何通过SSH密钥认证实现免密下载?
A:若需通过scp/sftp免密传输,需配置SSH密钥认证:

  1. 本地生成SSH密钥对(若无):ssh-keygen -t rsa -b 4096
  2. 将公钥上传到服务器:ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
  3. 执行下载命令时无需密码:scp -r user@server:/remote/path /local/path/
    注意:确保服务器SSH配置(/etc/ssh/sshd_config)中开启了PubkeyAuthentication yes
分享:
扫描分享到社交APP
上一篇
下一篇