本地文件传到Linux服务器,最直接的办法是使用scp命令、rsync命令、sftp图形工具或宝塔面板,其中scp单文件传输最快,rsync适合大目录增量同步,新手推荐WinSCP或Xftp。
传文件前先搞清楚:你面对的是哪种Linux服务器
不同使用场景决定你该选哪种传输方式,很多人在第一步就搞混了,拿Windows的思维去操作Linux,结果卡在权限和路径上。
云服务器和本地虚拟机的区别
云服务器(简米云、酷番云、华为云)默认开启了SSH远程登录端口22,你可以直接用scp或sftp连上去,本地虚拟机(VMware、VirtualBox)则需要先确认网络模式是桥接还是NAT,桥接模式下虚拟机有独立局域网IP,NAT模式下需要配置端口转发才能从宿主机连接,判断方法很简单:在Linux里执行ip addr,看到eth0或ens33下有192.168.x.x之类的地址,就说明有局域网IP。
传文件前必做的三项检查
- SSH服务是否运行:执行
systemctl status sshd,看到active (running)就正常,没装就执行yum install -y openssh-server或apt install -y openssh-server - 目标目录是否有写权限:传到
/root/需要root权限,传到/home/用户名/只需要对应用户权限,建议先传到自己的home目录再移动 - 有没有安装传输工具:
which scp rsync,如果没输出路径说明没装,yum install -y rsync或apt install -y rsync装一下
本地文件传到Linux服务器最常用的scp命令详解
scp全称secure copy,基于SSH协议加密传输,是Linux服务器传文件最基础的工具,你只需要一条命令,就能把本地文件直接推到服务器上。
scp单文件传输命令格式
scp -P 端口号 本地文件路径 用户名@服务器IP:服务器目标路径
举个例子,把本地的/home/user/backup.zip传到IP为168.1.100的服务器/opt/data/目录下,用户名是root,端口默认22:
scp /home/user/backup.zip root@192.168.1.100:/opt/data/
如果你改了SSH端口,比如用22026,那命令就变成:
scp -P 22026 /home/user/backup.zip root@192.168.1.100:/opt/data/
第一次连接会提示确认主机指纹,输入yes回车,然后输密码,看到进度条100%就传完了。
scp传输目录加-r参数
传整个文件夹必须加-r,否则会报错omitting directory:
scp -r /home/user/project root@192.168.1.100:/opt/
这条命令会把整个project目录连同里面的文件一起拷到服务器的/opt/下。
从Linux服务器下载文件到本地
scp是双向的,反过来写就是把服务器文件拉下来:
scp root@192.168.1.100:/opt/data/report.pdf /home/user/Downloads/
scp常见报错和解决方法
- Permission denied (publickey,password):用户名写错或者密码输错,检查用户名和密码
- No such file or directory:本地路径或服务器目标路径写错了,先
ls确认路径存在 - Connection timed out:防火墙拦了22端口,在服务器安全组规则里放行22端口,或者执行
firewall-cmd --add-port=22/tcp --permanent && firewall-cmd --reload
大文件批量传输首选rsync,支持断点续传
scp在传输大文件时如果断网就得重头再来,rsync解决了这个痛点,rsync支持断点续传、增量同步、压缩传输,特别是传几十GB的数据库备份时,区别非常明显。
rsync增量同步命令
rsync -avz --progress 本地目录/ 用户名@服务器IP:服务器目标目录/
参数说明:
-a:归档模式,保留文件权限、时间戳、软链接-v:显示详细输出-z:传输时压缩,节省带宽--progress:显示传输进度
实际传输场景演示,把本地/data/mysql_backup/整个目录同步到服务器/backup/:
rsync -avz --progress /data/mysql_backup/ root@192.168.1.100:/backup/
注意目录末尾的斜杠:/data/mysql_backup/带斜杠表示同步目录里面的内容,不带斜杠/data/mysql_backup表示把目录本身连同内容一起同步过去。
rsync断点续传加–partial参数
传输中途断网,重新执行同样的命令,rsync会自动对比文件差异,只传未完成的部分:
rsync -avz --progress --partial /data/mysql_backup/ root@192.168.1.100:/backup/
不同端口时rsync怎么指定
rsync默认走22端口,如果你改了SSH端口,用-e指定:
rsync -avz -e "ssh -p 22026" --progress /data/ root@192.168.1.100:/backup/
后台跑大文件传输用screen
传几十GB的文件时,直接在当前终端执行rsync,一旦关闭SSH连接传输就中断,用screen创建后台会话:
screen -S transfer rsync -avz --progress /data/bigfile.tar.gz root@192.168.1.100:/backup/ # 按Ctrl+A然后按D切出会话 # 重新进入查看进度 screen -r transfer
行业共识认为,rsync是Linux服务器运维中不可或缺的同步工具,几乎所有主流备份方案底层都依赖rsync的增量算法。
scp和rsync怎么选
| 对比维度 | scp | rsync |
|---|---|---|
| 传输速度 | 常规 | 小文件快,增量更快 |
| 断点续传 | 不支持 | 支持 |
| 增量同步 | 不支持 | 支持 |
| 命令复杂度 | 简单 | 中等 |
| 适合场景 | 单次传几个文件 | 定期备份、同步大目录 |
Windows本地文件传到Linux服务器:用WinSCP或Xftp图形化工具
很多不熟悉命令行的用户,本地文件传输到Linux服务器更推荐用SFTP图形工具,你不需要记住任何命令,像操作Windows文件管理器一样,鼠标拖拽就能完成上传下载。
WinSCP使用步骤
- 下载安装WinSCP:官网下载安装包,安装时一路下一步
- 填写连接信息:主机名填服务器IP,端口填22(改了SSH端口就填对应端口),用户名填root或你的登录名,密码填SSH登录密码
- 点击登录:第一次会提示确认主机密钥,点“是”
- 上传文件:左侧是本地文件窗口,右侧是服务器文件窗口,直接从左边拖到右边,状态栏显示传输进度
- 下载文件:从右侧拖到左侧即可
WinSCP还内置了命令终端,遇到需要执行操作的场景可以直接点“终端”按钮,不用另外开SSH客户端。
Xftp和WinSCP的差异
Xftp是一款Windows平台上的SFTP工具,界面风格和WinSCP类似,但多了一个优势:可以和Xshell联动,在Xshell的连接会话上直接打开Xftp,自动匹配服务器地址和账号密码,省去重复填写。
图形化工具和命令行怎么分工
- 临时传几个配置文件、图片、压缩包,用WinSCP或Xftp拖拽就行
- 需要定期同步日志、备份数据库,写个rsync脚本放crontab里自动化
- 服务器上执行命令操作文件,用Xshell或MobaXterm的ssh终端
宝塔面板和FinalShell:适合新手最省事的方案
如果你已经安装了宝塔面板(Linux面板),传给服务器上的文件不需要任何工具,打开浏览器操作就行。
宝塔面板文件上传操作
登录宝塔面板后台,点击左侧“文件”,进入目标目录,点击“上传”按钮,选择本地文件,支持批量上传和拖拽上传,上传大文件时有个进度条显示速度,宝塔的文件管理器还支持远程下载,通过URL链接直接把网络文件拉到服务器上。
FinalShell的实时同步功能
FinalShell这类集成工具更适合需要频繁调试代码的场景,它的特点是左边本地目录,右边远程目录,不仅有上传下载,还能实时同步本地文件一改动,自动推到远程服务器,省去每次手动拖拽。
大文件上传处理方案
超过5GB的单个文件,无论是scp还是宝塔都可能超时,推荐先传到对象存储(简米云OSS、酷番云COS),再用服务器上的wget或curl拉取,服务器带宽通常比本地宽带上行速度更快,整体效率更高。
常见问题解答(本地文件传到Linux服务器)
为什么scp传输速度很慢?
多因素影响,一是本地宽带上行带宽,一般家用宽带上行只有20-50Mbps,传大文件自然慢;二是服务器下行带宽限制,简米云、酷番云的按量计费带宽通常只有几Mbps;三是跨网问题,电信宽带连联通服务器会有较高延迟,可以用rsync -avz开启压缩,或用lrzsz在终端直接传输小文件,大文件建议用对象存储中转。
怎么把Windows本地文件传到Linux服务器而不用安装任何工具?
Windows 10以上系统自带OpenSSH客户端,可以直接打开PowerShell或命令提示符,用scp命令传输:
scp D:\backup.zip root@192.168.1.100:/opt/
前提是服务器已开启SSH服务且有公网IP或局域网可达,传目录加-r参数,例如scp -r D:\project root@192.168.1.100:/opt/。
服务器上的文件怎么传到本地电脑?
和上传相反的操作,用scp命令,把本地路径和服务器路径调换位置:
scp root@192.168.1.100:/opt/data/report.pdf /home/user/Downloads/
如果在Windows的PowerShell里,则写成:
scp root@192.168.1.100:/opt/data/report.pdf D:\Downloads\
图形化工具的话,WinSCP或Xftp直接从右侧窗口拖到左侧窗口即可完成下载。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/771976.html


