把本地文件传到Linux服务器,最推荐的方式是使用scp命令(传小文件)或rsync命令(传大文件、目录),两者都基于SSH加密协议,安全且无需额外安装服务端软件。如果你更习惯点鼠标操作,用支持SFTP协议的图形化工具(如WinSCP、FileZilla)同样高效。
怎么把本地文件上传到linux服务器:先搞懂这几种方式的区别
很多朋友第一次接触Linux服务器,总以为传文件是什么高深操作,其实原理很简单,你的服务器开启了SSH服务(默认端口22),本地电脑通过同一协议把数据“推”过去,行业共识认为,只要有SSH权限,你就拥有了文件传输的通道。
本地文件上传到linux服务器的几种方法,怎么选?
| 传输方式 | 适用场景 | 是否需要装客户端 | 断点续传 | 学习成本 |
|---|---|---|---|---|
| scp命令 | 一次性传几个文件 | 无需(Linux/Mac自带) | 不支持 | 低 |
| rsync命令 | 大目录、增量同步、频繁更新 | Linux/Mac自带,Windows需装 | 支持 | 中 |
| WinSCP/FileZilla | 纯图形界面操作 | Windows需安装 | 支持 | 极低 |
| 宝塔面板上传 | 已装宝塔的服务器 | 直接在网页操作 | 支持 | 极低 |
核心逻辑很简单:命令行的方式更灵活,图形化的方式更直观,如果你是第一次操作,建议先从命令行为主,因为所有云服务器商(简米云、酷番云、华为云)的文档里,默认教的都是命令。
用scp命令上传:最直接、零门槛的方法
假设你已经在本地打开了终端(Windows用户请用PowerShell或CMD),并且知道服务器的IP、用户名和密码,操作流程如下。
单个文件上传:一行命令搞定
scp /本地路径/文件名.txt root@服务器IP:/目标目录/
按下回车后,系统会提示你输入root用户的密码,输入密码(输入时不显示,正常现象),等待进度条跑完就成功了。
这套命令拆解来看:
scp:Secure Copy的缩写,就是安全复制。/本地路径/文件名.txt:告诉电脑要传哪个文件,这里要用绝对路径,不知道当前路径就输入pwd查询。root@服务器IP:以root身份登录到目标服务器。/目标目录/:文件放到服务器的哪个文件夹,比如/home/user/或/var/www/html/。
整个文件夹连同内部文件一起传
传目录必须加-r参数(recursive,递归),否则会报错“omitting directory”。
scp -r /本地文件路径/项目文件夹 root@服务器IP:/目标目录/
修改端口和指定密钥登录
服务器为了安全经常会修改默认的22端口,比如改成2222,如下操作:
scp -P 2222 /本地文件路径/文件.txt root@服务器IP:/目标目录/
注意:scp命令中指定端口用的是大写字母P,而ssh登录用的是小写
-p,这两个经常有朋友搞混导致连不上。
如果你配置了SSH密钥免密登录,那就不需要输密码,命令可以简化为:
scp -i /本地密钥路径/密钥文件.pem /本地文件路径/文件.txt root@服务器IP:/目标目录/
使用场景:什么时候首选scp?
业内专家指出,scp适合一次性、文件量少且不需要反复同步的场景,比如你写了个简单的Python脚本要放到服务器上跑,或者要把一个配置文件覆盖到Nginx目录下,这种轻操作没必要上复杂工具。
linux服务器上传大文件用什么工具不中断:rsync是你的救星
传一个2GB的数据库备份文件,或者同步一个包含几万张图片的网站目录,用scp一旦网络闪断就得从头再来,这时候必须请出rsync。
rsync核心用法:断点续传与增量同步
rsync -avzP --progress /本地目录/ root@服务器IP:/目标目录/
-a:归档模式,保留文件权限、时间戳等属性。-v:显示传输详情。-z:传输时压缩,适合文本类文件,明显提升速度。-P:等于--partial --progress,即支持断点续传并显示进度条。
断点续传是rsync的王牌功能。哪怕传到一半断网了,重新执行同一条命令,它会自动跳过已经传完的部分,只传剩下的,这对大文件来说体验极好,不用干等。
提高rsync速度的额外参数
| 参数 | 作用 | 使用场景 |
|---|---|---|
--bwlimit=2000 |
限速2000KB/s | 避免上传占满带宽,影响线上业务 |
--exclude='.log' |
排除特定文件 | 同步代码时跳过日志目录 |
--delete |
删除目标端多余文件 | 实现两端目录完全一致(慎用) |
很多维护生产环境的朋友,会写一个定时任务脚本,用rsync每天凌晨自动把本地备份同步到异地服务器,依赖的就是这个增量能力。
Windows用户怎么用rsync?
Windows原生没有rsync命令,多数情况下建议直接使用图形化工具替代,如果你追求命令行体验,可以安装Git for Windows,在Git Bash里直接调用rsync,语法和Linux完全一致,跨平台的配合很顺畅,这点相当方便。
图形化上传方案:WinSCP和FileZilla的那点事
不想背命令?没问题,这类工具把文件管理器搬到了你的电脑上,左边本地,右边服务器,拖拽即可完成上传。
WinSCP:Windows用户的主流选择
官网下载安装后,填上主机名(服务器IP)、端口(默认22)、用户名和密码,协议选SFTP(基于SSH,比FTP安全),登录成功后找到要传的文件,直接拖到右边窗口即可。
特点是天然支持断点续传,而且可以记住站点会话,下次打开只需双击就能连上,对于经常维护多台服务器的人来说,WinSCP的站点管理器比命令敲IP效率高不少。
FileZilla:跨平台的老牌工具
同样免费开源,支持Windows、macOS、Linux三端,它的传输队列管理比WinSCP更直观,可以同时排队上传多个目录,有一点需要注意:FileZilla默认使用FTP协议(明文传输),必须手动把协议改成SFTP再用,否则账号密码容易被抓包泄露。
图形化方案有没有短板?
- 受本地网络环境影响大,宽带不稳定时速度波动明显。
- 大目录下文件管理器容易卡顿,文件数量超过几万个时,滚动条滑动都会掉帧。
- 不能像rsync那样做增量同步,每次全量覆盖效率偏低。
所以这里再强调一次:日常小操作用图形工具,批量同步请回到rsync。
实际场景:国内linux服务器上传文件速度和稳定性怎么平衡
很多朋友关心“国内linux服务器上传文件速度”的问题,速度的瓶颈通常不在工具,而在本地宽带的上行带宽,家庭宽带普遍上传只有下载的1/5左右,100M下行对应20M上行是常态。
如何压榨出极限上传速度
- 压缩打包:把多个文件先
tar czf打成压缩包再传,能减少IO次数,速度提升相当可观。 - 并行传输:大文件可以用
scp配合split拆分后多开几个进程传,但对于多数人来说没必要,rsync单线程已经够用。 - 避开高峰:晚上8点到11点家庭网络拥塞,上传速度可能掉到白天的60%左右,凌晨传大文件是最佳选择。
云服务器地域对速度的影响
如果你租的机器在境外(比如香港、美国机房),跨海传输必然受国际带宽波动影响,丢包重传是家常便饭,这类场景下rsync的断点续传优势更为突出,毕竟传两天两夜中途断了,没续传真会崩溃。
相关问答:上传文件时最容易踩的坑
为什么scp命令提示“Permission denied”?
大概率是目标目录没有写权限,把文件传到/home/用户名/目录通常没问题,但传到/var/www/这类系统目录,或者属于其他用户的目录时,当前登录用户没有写入权限就会报错,解决办法是把目标目录权限改为当前用户可写(chmod -R 755 /目标目录也只是读权限,真正要写入得改成拥有者),或者直接用root账户登录。
上传一半断开,重新传会不会把之前传的文件弄坏?
如果用scp,之前传了一半的文件会留在服务器上但损坏不可用,重新传会直接覆盖它,如果用rsync的--partial参数(-P自带),它会在基础之上继续传输,已传完的文件块直接跳过,因此不会破坏原有数据,但有一点务必留神:如果传的是压缩包,务必等进度条走到100%后再解压,不然极易出现CRC校验错误。
本地文件上传到linux服务器后中文文件名乱码怎么办?
多数情况下这是因为本地的文件名编码(一般是GBK)和服务器(默认UTF-8)不一致导致的,最稳妥的办法是上传前把文件名改成的拼音或英文,或者先在本地压缩为zip包再上传,到服务器端用unzip -O GBK参数指定编码解压,图形化工具FileZilla可以设置“强制UTF-8”来解决显示乱码,但WinSCP的默认设置一般没有这个问题。
临时租一台linux服务器传文件怎么最省钱?
如果你只是偶尔传文件,租按量付费的按小时计费云服务器即可,国内厂商抢占式实例价格很低,传完文件马上释放,成本不过几毛钱,这类场景下不要买包年包月套餐,用付费制的轻量应用服务器最低配也够用。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/790194.html


