从Linux服务器下载文件到本地,最直接的方法是使用scp命令,一条命令就能安全传输文件。无论你是运维新手还是开发老手,掌握几种主流下载方式,能让文件传输这件事变得高效又省心,下文结合日常使用场景,拆解不同工具的适用条件和具体操作步骤。
用scp命令下载单个文件或整个目录
scp基于SSH协议传输,安全性高,适合临时性、小批量的文件下载,它在Linux系统中默认安装,几乎不需要额外配置。
基本语法:
scp 用户名@服务器地址:文件路径 本地保存路径
把服务器上/home/user/logs/app.log下载到本地当前目录:
scp root@192.168.1.100:/home/user/logs/app.log .
执行后输入服务器密码,文件就会出现在当前目录,如果服务器SSH端口不是默认的22,需要加-P参数指定端口:
scp -P 2222 root@192.168.1.100:/home/user/logs/app.log .
下载整个目录加-r参数:
scp -r root@192.168.1.100:/home/user/logs/ /local/backup/
这条命令会把远程logs目录完整复制到本地backup目录下。
本地Windows系统下scp怎么用
Windows 10以上系统自带OpenSSH客户端,可以直接打开PowerShell或CMD使用scp,操作路径为:开始菜单搜索“PowerShell”并打开,然后输入和Linux下一样的scp命令,如果提示无法识别scp,可以在Windows设置中搜索“可选功能”,添加“OpenSSH客户端”。
国内不少企业使用Windows服务器环境,按照上述步骤就能解决linux服务器下载文件到本地的问题,要注意的是目标路径如果包含空格,请用双引号包裹,例如"C:\My Files\data.zip"。
scp传输慢怎么优化
大文件传输时scp速度可能不理想,这是因为scp默认加密算法开销较大,可以尝试使用-C参数开启压缩,或指定更快的加密算法:
scp -C -c aes128-ctr root@服务器地址:远程文件 本地路径
如果文件特别大,后续介绍的rsync可能是更好的选择。
用rsync断点续传下载大文件
rsync是增量同步工具,支持断点续传和差异传输,适合下载大文件或反复同步目录,它不像scp每次全量传,而是只传有变化的部分,节省时间和带宽。
大致用法:
rsync -avz --progress root@服务器地址:远程路径 本地路径
-a归档模式保留权限和时间戳,-v显示详情,-z传输时压缩,--progress显示进度。
rsync -avz --progress root@192.168.1.100:/data/database.dump /local/backup/
如果下载中途中断,重新执行相同命令即可续传,已传部分不会重复。
rsync和scp怎么选
以下是实际场景中的对比,方便快速决策:
| 对比维度 | scp | rsync |
|---|---|---|
| 传输方式 | 全量复制 | 增量同步 |
| 断点续传 | 不支持 | 支持 |
| 速度表现 | 小文件快 | 大文件更优 |
| 命令复杂度 | 简单 | 稍复杂 |
| 适用场景 | 临时一次性传输 | 定期备份、大文件传输 |
在日常服务器维护中,如果只是偶尔下载几个文件,scp足够;如果涉及数据库备份、日志归档等重复性任务,rsync会节省不少时间,有些用户会问linux服务器下载文件到本地哪个命令最稳定,行业共识认为,rsync在可靠性上更胜一筹,尤其是网络不稳定时。
通过sftp交互式下载文件
sftp也是基于SSH的文件传输协议,适合需要先查看服务器文件列表再决定下载哪些文件的场景,它比scp多了列目录、切换路径等交互操作,体验更接近图形化FTP工具。
连接服务器:
sftp root@服务器地址
输入密码后进入sftp提示符界面,常用命令如下:
ls:查看服务器当前目录的文件列表cd 目录名:切换服务器上的路径lcd 本地路径:切换本地路径get 文件名:下载文件到本地当前目录get -r 目录名:递归下载整个目录exit:退出sftp
比如想下载/var/www/html下的整个站点,依次执行:
cd /var/www/html get -r .
sftp模式下的get命令支持通配符,例如get .tar.gz一次下载全部符合条件的文件。
用wget或curl从服务器上下载文件
如果服务器上运行了HTTP或FTP服务,也可以直接用wget或curl从服务器下载文件,这种方式适合有人提前把文件放到Web目录或FTP共享目录下的情况,无需SSH账号也能访问。
用wget下载:
wget http://服务器IP/downloads/app.zip
用curl下载并保持原文件名:
curl -O http://服务器IP/downloads/app.zip
-O参数让curl以URL末段作为保存文件名,如果服务器有FTP服务,URL改成ftp://开头同样可用。
本地没有图形界面怎么下文件
纯命令行环境也能处理,比如一台无桌面的Linux机器要下载服务器文件,远程shell下直接输入wget或curl即可,该场景下传输速度受限于网络带宽,没有图形界面拖拽那么直观,但胜在稳定可控。
使用图形化工具FileZilla下载文件
对不习惯命令行的用户来说,图形化SFTP工具更友好,FileZilla是开源免费的跨平台工具,支持Windows、macOS和Linux。
操作步骤:
- 下载并安装FileZilla客户端
- 打开后,在顶部填写服务器IP、用户名、密码、端口(默认22)
- 快速连接后,左侧是本地目录,右侧是服务器目录
- 选中右侧文件,拖到左侧即可完成下载
FileZilla支持多线程传输,大文件下载速度比scp更快,同时支持断点续传,传输中断后可以右键文件选择“续传”继续下载。
很多国内云服务器厂商的资料中,也推荐用户使用FileZilla作为图形化下载方案,这类方式对linux服务器下载文件到本地这个需求来说,确是上手零门槛的选项。
Q&A:关于Linux服务器下载文件的常见疑问
怎么从linux服务器下载多个不同类型文件到本地?
如果有多文件下载需求,建议先将文件打包成一个压缩包,再下载,在服务器上执行:
tar czvf files.tar.gz /path/to/files
生成files.tar.gz后,再用scp或rsync下载到本地,这种方式能减少多次连接的开销,传输效率更高。
下载文件时提示Permission denied怎么办?
说明当前用户没有该文件的读取权限,检查所用账户是否属于文件属主或所属组,也可以用sudo提权后重新执行下载命令。
sudo scp /var/log/secure root@服务器:本地路径
如果是普通用户想下载root权限文件,建议登录root账户操作,或者临时修改文件权限,下载完成后立刻改回。
从linux服务器下载到本地macOS系统有什么不同?
macOS自带scp、sftp和rsync命令,终端下操作和Linux完全一致,如果习惯图形界面,可以用Cyberduck或FileZilla,macOS上scp默认支持粘贴公钥认证,只要配置过SSH密钥,下载时无需反复输密码,下载到本地路径时,注意macOS的文件系统大小写敏感,建议指定明确的路径,避免因大小写问题保存失败。
从Linux服务器下载文件到本地,核心无非是选对工具和使用正确的命令,临时小文件用scp,大文件或频繁同步用rsync,需要浏览服务器目录就用sftp,已开启Web服务可直接wget或curl,追求图形操作体验则用FileZilla,掌握了这几种方式,在任何环境中都能快速取回服务器数据。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/771006.html


