从本地电脑上传文件到Linux服务器,最直接高效的方法是使用SCP或SFTP工具,其中scp命令和WinSCP/FileZilla等图形化客户端是绝大多数场景下的首选方案。无论你是刚入门的新手,还是需要频繁部署的开发者,掌握几种主流的上传方式能让你在不同环境下都能从容应对,下文按照操作习惯和适用场景,梳理一套完整的上传方案。
上传前需要确认的三件事
在敲下命令或打开软件之前,建议先花十几秒检查基础环境,否则很容易白白浪费调试时间。
- 确认服务器IP和登录凭证:你需要知道服务器的公网IP(或内网IP)、SSH端口(默认是22)以及登录用户的密码或密钥文件。
- 确认本地电脑的操作系统:Windows系统自带PowerShell能直接使用SCP命令,但更推荐安装独立客户端;macOS和多数Linux发行版则天然支持
scp和rsync命令。 - 确认目标路径的写入权限:要上传到
/root/或/etc/这类系统目录时,通常需要root权限,如果当前登录的是普通用户,建议先上传到/home/用户名/目录,再用管理员账号移动到目标位置。
用scp命令实现快速上传
这是最经典、覆盖场景最广的命令行方式,你不需要额外安装任何软件,直接在本地终端操作即可。
Windows系统下的操作步骤
Windows 10及以上版本自带OpenSSH客户端,可以直接打开PowerShell或CMD窗口操作:
scp 本地文件完整路径 用户名@服务器IP:/目标路径
你想把D:workbackup.zip传送到服务器的/home/user1/目录下,命令应该写成:
scp D:workbackup.zip user1@192.168.1.100:/home/user1/
系统会提示输入密码,输入时没有任何回显显示,这是正常现象,传输完成后会显示文件大小和耗时信息。
上传整个目录及子文件
如果你需要上传的是包含多个文件或子目录的文件夹,需要加-r参数,表示递归操作:
scp -r 本地文件夹路径 用户名@服务器IP:/目标路径
修改默认SSH端口
如果服务器使用了自定义端口(比如2222),必须使用-P参数(大写P)指定端口:
scp -P 2222 本地文件 用户名@服务器IP:/目标路径
多文件同时上传
一次上传多个散文件,只需把本地文件列举在命令开头,用空格隔开,最后写目标路径:
scp file1.txt file2.jpg user1@服务器IP:/home/user1/
用rsync替代scp的增量同步场景
如果上传的文件比较大,或者你经常需要更新同一个目录下的内容,行业共识认为rsync是比scp更合理的选择,它的核心优势在于增量传输只上传修改过的部分,而不是每次都全量重传。
基础增量上传命令
rsync -avz 本地目录/ 用户名@服务器IP:/目标目录/
注意本地目录末尾的正斜杠,它表示把目录本身的内容同步过去(不包括该目录自身),如果不加斜杠,则会把整个目录套进去。
更安全的干跑模式
在正式执行之前,先用--dry-run参数模拟一遍,确认哪些文件会被上传,能有效避免误操作:
rsync -avz --dry-run 本地目录/ 用户名@服务器IP:/目标目录/
用WinSCP和FileZilla做图形化拖拽上传
命令行的确功能强大,但很多人在实际操作中更愿意用鼠标完成,这一节专门针对想要「看到文件在传输」的用户。
WinSCPWindows用户的首选
WinSCP是一款免费开源的SFTP/SCP图形化客户端,它的优势在于支持双栏视图,左边本地,右边服务器,拖拽即可上传。
操作路径如下:
- 下载并安装WinSCP,打开后在登录界面填写主机名(服务器IP)、端口、用户名和密码。
- 点击「登录」后,你会看到左右两个文件窗格。
- 从左侧本地窗格选中文件,直接拖拽到右侧目标目录,松开鼠标即开始上传。
- 上传过程中会显示实时进度条和传输速度,完成后默认会进入本地文件列表,如果没看到服务器上的新文件,按F5刷新。
FileZilla跨平台方案
FileZilla支持Windows、macOS和Linux,也是不用命令行就能完成上传的工具,界面分为四个区域,最上面是快速连接栏,中间是本地和远程目录,最下面是传输队列。
操作路径如下:
- 在顶部输入主机、用户名、密码和端口,点击「快速连接」。
- 左侧浏览本地目录,右侧浏览服务器目录。
- 拖拽文件到右侧窗口,底部队列会列出每个文件的传输状态。
行业专家指出,对于不习惯终端操作的用户,图形化工具的学习成本不到10分钟,且不容易出现路径或权限错误。
借助宝塔面板和Xshell内置功能上传
很多人在云服务器上安装了宝塔面板,或者习惯用Xshell管理会话,这两个场景存在更省事的上传方式,适合不想记住命令的场景。
宝塔面板的文件管理器
如果你在服务器上安装了宝塔面板,直接通过浏览器就能完成上传,登录面板后点击「文件」菜单,进入对应的网站目录,点击「上传」按钮,选择本地文件,最高可以支持上传几百MB的文件,这种方式在内陆地域访问国内云服务器时非常流畅,不需要额外占用本地端口。
Xshell内置的SFTP窗口
Xshell本身是终端工具,但它的会话管理器内置了一个SFTP协议窗口,在Xshell连接上服务器后,按下快捷键Ctrl+Alt+F,会打开一个独立的SFTP窗格,底部的文本输入框支持标准的scp命令语法,也能直接拖拽文件到窗格内触发上传。
上传慢、传大文件卡顿的实用优化
在覆盖了主流方法后,这里补充几个实际场景下经常踩坑的地方和对应的排查策略。
将压缩传输合并到上传动作中
SCP命令不支持压缩,但SFTP客户端(如FileZilla)可以在设置中开启压缩模式,传输大量文本文档或日志时,建议先用zip或tar.gz打包,一次性传一个包,比逐个传几百个小文件快很多。
大文件和断点续传
断点续传只对支持该特性的协议有效,scp默认不支持断电续传,但rsync天然支持,如果你想传输超过几个GB的文件,建议改用rsync加--partial参数保留未传完的部分,重新执行时能继续传输。
推荐命令:
rsync -avz --partial 本地大文件.tar.gz 用户名@服务器IP:/目标路径/
检查安全组和防火墙
登录失败或连接超时的问题,多数情况下是服务器的安全组策略未放行对应端口,国内服务器(如简米云或酷番云)需要登录云控制台,在安全组规则中添加源端口22(或自定义SSH端口)的入方向放行策略,放行后如果仍然不通,再用telnet IP 22做快速诊断。
常见问题排查清单
遇到上传失败时,按照下面的顺序逐一排查能节省不少时间:
| 异常现象 | 可能原因 | 解决动作 |
|---|---|---|
| 连接超时 | 端口被封或IP受限 | 检查安全组入方向,换用ping测通网络 |
| 密码正确却登录失败 | SSH服务禁用了密码登录 | 在服务器/etc/ssh/sshd_config中开启PasswordAuthentication yes |
| 权限不足无法写入 | 目标目录不属于当前用户 | 改用sudo执行或调整目录属主 |
| 传输速度极低 | 未使用压缩或并发传输 | 打包后传输,或改用rsync压缩模式 |
上传后务必检查完整性
很多人在文件传输完成后立刻关闭窗口,结果后续运行程序时才发现文件损坏或内容不完整,上传完成后,建议在服务器上执行一次校验动作:
- 查看文件大小与本地是否一致:
ls -l 目标文件路径 - 对比md5校验值:本地执行
md5sum 文件,服务器上执行相同的命令,比较输出的字符串是否一致,确保文件传输过程中没有发生数据损坏。
从本地电脑上传文件到Linux服务器,永远不止一条路,命令行用户直接使用scp或是rsync能在几秒内完成任务;偏向图形操作的用户选择WinSCP或FileZilla能把上传变成一次拖拽动作;正在使用宝塔面板的站长则可以完全脱离本地工具,在网页中完成上传。
核心结论依然值得记住:小文件快速上传用scp,大目录增量同步用rsync,日常运维和可视化管理用图形客户端或网页面板,遇到网络和政策类限制时优先检查安全组策略和SSH登录方式,掌握这几条主线,无论面对哪家云服务商或哪种Linux发行版,你都不会再做无用功。
常见问题解答
问:为什么Windows用户上传文件经常遇到「权限被拒绝」?
答:多数情况下是因为目标目录属于root用户或其他用户,而当前SSH登录账号只是普通用户权限,解决办法是把文件先传入自己的home目录,再用管理员账号sudo mv到目标位置,也可以直接检查目标目录的权限属性,执行chmod 755 目录名调整读写权限。
问:小文件和大文件分别用哪种方法上传更合适?
答:单个或少量小文件(小于100MB)直接使用scp命令最快捷,无需额外安装任何工具,大文件或多个文件建议使用rsync配合--partial参数,支持断点续传,且能压缩传输降低带宽消耗,如果服务器安装宝塔面板,使用网页上传接口可以省去本地终端工具的准备过程。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/708081.html





