直接把linux服务器上的文件下载到本地,最稳妥的命令是scp,只要服务器开了SSH服务,一行命令就能拉下来;文件大或者网络不稳定时用rsync续传,想在远端目录里挑文件就选sftp。下面按真实使用场景拆开讲,命令复制就能用。
scp命令怎么把linux服务器文件下载到本地
scp是Secure Copy的缩写,走的是SSH协议,几乎每台linux服务器默认都支持,你不需要在服务器上额外装软件,只要知道服务器IP、用户名、密码或密钥,就能把文件拽回本地。
scp基础语法和常用参数
scp的通用格式是:
scp 用户名@服务器IP:远程文件路径 本地目录路径
比如我想把一台IP为168.1.100的服务器上/var/log/nginx/access.log下载到我电脑的/home/user/logs/目录,命令就是:
scp root@192.168.1.100:/var/log/nginx/access.log /home/user/logs/
如果SSH端口不是默认的22,比如改成2222,要用大写-P参数指定:
scp -P 2222 root@192.168.1.100:/var/log/nginx/access.log /home/user/logs/
常用参数里还有:
-r:递归下载整个目录,目录和里面所有文件都拉下来-C:传输时压缩,适合文本日志这种高压缩比的文件-p:保留文件的修改时间和权限属性-l:限制传输带宽,单位是Kbit/s,比如-l 1000代表限速约1Mbps
下载单个文件和目录的实操命令
下载单个压缩包,先进入本地的目标目录,
cd /data/backup scp root@192.168.1.100:/home/backup/site-2026-01-14.tar.gz .
注意最后有个,表示下载到当前目录。
下载整个网站目录,加-r:
scp -r root@192.168.1.100:/var/www/html /data/backup/
如果文件名里有空格或特殊字符,把远程路径用引号包起来:
scp "root@192.168.1.100:/home/user/my web/index.html" .
用scp之前,建议先ssh root@服务器IP登录进去,用find / -name "文件名"确认一下完整路径,免得路径写错报错。
rsync断点续传:大文件下载首选
scp最烦人的问题是传输中断后必须从头再来,几十GB的数据库备份文件,传到一半断网,scp会直接失败,之前的进度全部作废,这种情况业内专家建议改用rsync,它支持断点续传和增量同步,重新执行命令只会补传剩余部分。
rsync下载文件的命令格式
rsync本身是同步工具,但也能从远端拉文件到本地,语法和scp很像:
rsync -avP --partial -e ssh 用户名@服务器IP:远程文件 本地目录
关键参数解释:
-a:归档模式,保持文件属性,递归子目录-v:显示详细输出,让你看到传输过程-P:等价于--partial --progress,允许传输中断后保留部分文件,并显示进度--partial:哪怕中断也保留已下载的临时文件,下次续传-e ssh:强制走SSH通道
比如下载服务器上/data/db.sql,本地存到/home/user/backup/:
rsync -avP -e ssh root@192.168.1.100:/data/db.sql /home/user/backup/
如果这个命令执行到一半断了,再次执行同样的命令,rsync会检查本地已下载的部分文件,只接着下载缺失的数据,速度比重新scp快得多。
rsync和scp怎么选
| 对比点 | scp | rsync |
|---|---|---|
| 断点续传 | 不支持 | 支持 |
| 增量传输 | 不支持,全量覆盖 | 支持,只传输变更部分 |
| 速度上限 | 单线程,大文件较慢 | 支持多线程(加-P配合--parallel等,但基础命令也通常优于scp) |
| 服务器预装情况 | 所有linux默认自带 | 部分精简系统需yum install rsync或apt install rsync |
| 适用场景 | 小文件、临时下载 | 大文件、反复同步、网络不稳 |
如果只是偶尔下载几百MB以内的文件,scp完全够用;一旦涉及几十GB的备份文件,或者要从服务器同步日志、数据库到本地做归档,rsync更靠谱。
sftp交互式下载:边看目录边挑文件
有时候你只知道文件在某个目录里,但记不住具体名字,或者想先查看服务器上的文件大小和修改时间再决定下载哪几个,这时候sftp最舒服,它相当于一个基于SSH的FTP会话。
sftp的交互操作步骤
在本地终端输入:
sftp root@192.168.1.100
输入密码后,会进入sftp交互界面,提示符变成sftp>。
常用操作:
pwd:查看远端当前目录lpwd:查看本地当前目录ls:列出远端文件lls:列出本地文件cd 目录名:切换远端目录
lcd 本地目录:切换本地目录get 文件:下载当前远端目录下的文件到本地当前目录get 文件 本地路径:下载到指定本地路径get -r 目录:递归下载整个目录quit:退出
举个例子,我想下载服务器上/home/user/reports/里最新的monthly.pdf,操作如下:
sftp root@192.168.1.100 # 登录后执行 cd /home/user/reports ls get monthly.pdf /data/backup/
sftp同样支持断点续传吗?原生的sftp命令在OpenSSH 8.4版本之前不支持断点续传,新版本支持reget命令,但我个人习惯还是把sftp当轻量工具用,下载大文件直接用rsync。
linux服务器文件下载到windows用什么工具
本地是Windows的话,命令行操作不一定顺手,我经常见到的场景是:一台国内云服务器上放着网站备份,运维同学要在自己Windows电脑上把备份包拉到桌面,这种情况用图形化工具效率最高。
三款主流图形化下载工具对比
| 工具 | 协议支持 | 断点续传 | 价格 | 适合人群 |
|---|---|---|---|---|
| WinSCP | SFTP、SCP、FTP | 支持 | 免费 | 普通运维,习惯单窗口双面板 |
| FileZilla | SFTP、FTP、FTPS | 支持 | 免费 | 需要同时管理多个服务器连接的人 |
| Xftp | SFTP | 支持 | 有免费版 | 已经用Xshell管理终端的人 |
- WinSCP:界面像Windows资源管理器,左侧本地,右侧服务器,直接拖拽文件就能下载,它内置了同步目录功能,可以一键让本地文件夹和服务器文件夹保持一致,适合定期把服务器网站代码备份到本地。
- FileZilla:经典FTP客户端,也支持SFTP,它最大的优点是在传输大量小文件时速度快,但配置上比WinSCP稍微复杂一点,需要手动设置协议为SFTP。
- Xftp:通常跟随Xshell一起安装,如果你平时用Xshell登录服务器,那就顺手装个Xftp,它在Xshell窗口里直接按一个快捷键就能打开当前连接的SFTP界面,省去重复输密码。
如果你是Mac本地,推荐用Cyberduck或者ForkLift,操作逻辑和WinSCP类似,不过Mac自带scp和sftp命令,终端熟练的话直接命令行就行。
下载文件到本地时容易踩的坑
这一部分是我平时帮人排查最多的问题,列几个高频故障点。
权限报错Permission denied
服务器上/root目录通常普通用户无权限下载,解决办法是用有权限的用户,或者把文件先复制到/tmp下再scp下载:
ssh root@192.168.1.100 "cp /var/log/secure /tmp/secure.log" scp root@192.168.1.100:/tmp/secure.log .
远程路径里包含通配符和空格
scp远端路径里的星号通配符会被服务器shell解析,但需要你把它放在引号里,否则本地shell可能会先展开,路径有空格时也必须用引号包住整个远程地址,
scp "root@192.168.1.100:/home/user/my backup/.log" .
Windows本地路径怎么写
Windows上保存路径建议写绝对路径,文件夹不存在会报错,比如下载到D盘backup目录:
scp root@192.168.1.100:/home/data.tar.gz D:backup
注意如果路径是D:backup这类带反斜杠的,部分终端可能转义出错,可以用引号包住:
scp root@192.168.1.100:/home/data.tar.gz "D:backup"
linux服务器文件下载到本地的常见问题解答
问:scp下载文件时,必须知道服务器上的完整路径吗?
答:是的,scp不像sftp可以进入远端目录浏览,它需要你提供明确的绝对路径,或者基于默认home目录的相对路径,如果记不清文件在哪里,建议先用ssh登录服务器,运行find / -name "文件名"定位,再用scp下载,常用文件名直接猜路径很容易报”no such file”。
问:大文件下载掉了线,怎么接着原来的进度继续?
答:改用rsync命令,并且一定要带上--partial参数,例如rsync -avP --partial -e ssh 用户名@服务器IP:/远程大文件 本地目录,这个命令会把已下载的部分保留下来,重新执行时自动跳过已传输完成的块,只补下剩余部分,scp做不到这一点,断了只能重头开始。
问:用WinSCP下载国内云服务器上的文件,速度很慢怎么办?
答:先排除服务器带宽瓶颈,多数国内云服务器限制的是出网带宽,比如标准配置只有1Mbps到5Mbps,无论用什么工具下载速度上限就在那里,其次确认你用的是SFTP协议而不是FTP,SFTP的压缩和加密搭配更稳定,WinSCP支持多线程并发连接,可以在”传输”设置里把连接数调高到4,往往能有效提升大文件下载速度,如果服务器在国外,跨国际链路本身延迟高,建议优先用rsync配合限速参数,避免长时间占用带宽导致连接中断。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/705186.html





