Linux服务器上传文件,最通用的路径是走SSH协议:命令行用scp或sftp,图形化操作用WinSCP、FileZilla这类SFTP客户端,遇到大文件、断点续传或目录同步就交给rsync。 下面按实际动手的顺序,把这些方式拆开讲清楚。
先弄明白一件事:上传文件到底在跟谁打交道
很多人卡住,不是不会敲命令,而是没搞清楚”上传”这个动作在服务器端对应什么。
SSH协议是大部分上传方式的地基
无论是scp、sftp还是WinSCP,本质都是通过SSH通道把本地文件写到服务器某个目录里,因此有三个前提条件必须同时成立:
- 服务器SSH服务在跑,默认端口22,也可能被改成其他端口
- 你有一个能登录的系统账号,密码或密钥可用
- 你的账号对目标目录有写权限
这三条任何一条不满足,工具再花哨也白搭,业内专家指出,运维排查上传失败的顺序,基本就是”网络通不通、账号对不对、权限够不够”这三步。
上传方向与流量计费的常识
从本地传到服务器,属于服务器的”入方向”流量,据国内主流云厂商的计费文档说明,入方向流量通常不单独计费,出方向才按带宽或流量结算,所以正常上传资料到服务器,一般不会产生额外流量账单。
linux服务器上传文件用什么工具比较好:五类方案横向对比
先把选项摆出来,再决定用哪个,比一上来就背命令高效得多。
| 方式 | 典型工具 | 适合场景 | 断点续传 | 是否需要装软件 |
|---|---|---|---|---|
| scp命令 | OpenSSH自带 | 单文件、少量文件快速传输 | 不支持 | 不用 |
| sftp命令 | OpenSSH自带 | 需要浏览目录、交互式上传 | 部分支持 | 不用 |
| rsync | rsync | 大文件、目录同步、增量传输 | 支持 | 需安装 |
| 图形客户端 | WinSCP、FileZilla、MobaXterm | 日常运维、拖拽上传 | 多数支持 | 需要 |
| 云控制台/临时HTTP | 云厂商VNC、python临时服务 | 没有SSH权限的应急场景 | 不支持 | 不用 |
命令行派:scp与sftp的具体用法
scp适合一条命令解决战斗,注意端口参数是大写 -P:
scp -P 22 ./app.tar.gz root@192.168.1.10:/opt/ scp -P 22 -r ./static/ root@192.168.1.10:/opt/www/
sftp更适合边看目录边传:
sftp -P 22 root@192.168.1.10 sftp> lcd /Users/me/Downloads sftp> cd /opt sftp> put app.tar.gz sftp> ls -lh
第一次连接会提示确认指纹,输入yes即可,配好密钥后,用 ssh-copy-id root@192.168.1.10 可以免密码,后续上传会顺畅很多。
图形化派:客户端连接参数怎么填
WinSCP、FileZilla、MobaXterm的连接信息是同一套:
- 协议选 SFTP(不是FTP)
- 主机填服务器公网IP
- 端口填SSH端口,默认22
- 用户名填系统账号,密码或密钥二选一
连上之后左侧是本机目录,右侧是服务器目录,直接把文件拖到右侧窗口就完成上传。
从Windows本地把文件上传到Linux服务器的完整操作路径
年轻人第一次上手,按下面三步走基本不会翻车。
第一步:确认网络与端口是通的
在本地命令行执行:
ping 服务器IP nc -vz 服务器IP 22
第二条能返回succeeded,说明22端口可达,如果ping通但端口不通,大概率是云服务器安全组或本机防火墙没放行SSH端口。
第二步:确认账号与目录权限
登录服务器后执行:
whoami ls -ld /opt df -h
ls -ld 看目标目录的属主和权限位,df -h 看剩余空间,上传大文件前不看空间,传一半报”No space left on device”,属于典型的自找麻烦。
第三步:上传后做一次校验
大文件传完别急着用,比对一下哈希值最稳妥:
# 服务器端 md5sum /opt/app.tar.gz # 本地(Linux/macOS) md5sum ./app.tar.gz
两个值一致,说明文件完整落地。
linux服务器上传文件提示权限不足怎么解决
Permission denied 是上传环节出现频率最高的报错,原因基本跑不出三类。
三类常见原因
- 目录写权限不够:普通账号往
/opt、/var/www这类属于root的目录写,必然被拒 - 父目录缺执行权限:路径上任何一层目录没有x权限,都进不去
- SELinux或挂载属性限制:部分发行版开启了强制策略,或者目录被
chattr加了不可变属性
正确做法:别动辄上chmod 777
临时图省事把目录改成777,等于给所有账号开了写权限,是安全隐患,更规范的处理是改属主:
chown -R www:www /var/www/html chmod -R 755 /var/www/html
如果确实需要普通账号上传,就把文件传到自己的家目录,再用有权限的账号移动到位,行业共识认为,上传失败的根因定位,八成能在权限位和属主这两列信息里找到答案。
大文件与自动化场景:rsync才是主力
单文件几百兆以上,或者要定期同步目录,scp就不太够用了。
断点续传与限速参数
rsync -avzP --partial ./data/ root@192.168.1.10:/opt/data/ rsync -avz --bwlimit=2000 ./data/ root@192.168.1.10:/opt/data/
-P 等于进度显示加断点续传,--partial 保留半截文件,--bwlimit 按KB/s限速,避免把生产带宽吃满。
上传慢的时候先查哪里
上传速度上不去,按这个顺序排查:
- 本地出口带宽是否被占满
- 云服务器公网带宽规格多大,小带宽机型本来就是瓶颈
- 是否在传大量小文件,此时压缩打包再传比逐个传快得多
- 加密算法开销,老版本SSH在千兆内网下确实会拖慢速度
简米云、酷番云服务器上传文件的带宽计费与地域线路差异
用云服务器时有两个容易被忽略的点,一是带宽计费方式:固定带宽和按使用流量计费,前者适合长期稳定业务,后者适合偶尔传大文件的场景,二是地域与线路:本地和服务器机房跨省甚至跨国时,物理链路延迟会直接体现在上传速度上,选择离自己近的地域节点,体感差别很明显。
几个补充手段,应急时用得上
- Xshell、SecureCRT里的rz命令:装了lrzsz后,服务器端敲
rz -y就能从本地选文件上传,走的是终端通道,适合小文件 - 云控制台的文件上传功能:部分厂商控制台提供网页端上传,没有SSH权限时可用
- 临时HTTP方式:在服务器上开一个临时HTTP服务接收文件,传完立刻关掉,仅限内网或临时排查
linux服务器怎么把文件上传上去:常见疑问解答
没有SSH登录权限,还能上传文件吗
不能走标准SSH通道,可行的替代是云厂商控制台自带的文件管理或VNC功能,或者让管理员开通一个专用账号并限定目录,临时FTP方案也能用,但不建议长期开启。
上传后文件属主变成了root怎么办
scp和sftp以哪个账号登录,文件属主就是谁,用root登录上传,文件自然是root所有,Web服务可能读不了,改用业务账号上传,或者传完后执行 chown 修正。
上传中途断了,需要从头再来吗
scp不支持续传,断了只能重传,改用rsync加 -P --partial,或者用支持断点续传的图形客户端,都能从断点继续,不用浪费已经传完的部分。选对传输工具,比反复重试更省时间。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/771009.html


