在Linux服务器管理中,本地文件上传是一项基础且频繁的操作,无论是部署网站应用、传输数据备份还是共享开发文档,都离不开高效可靠的文件传输方式,本文将详细介绍本地文件上传到Linux服务器的多种方法、操作步骤及注意事项,帮助用户根据实际场景选择最合适的传输方案。

常见文件上传方式及适用场景
本地文件上传到Linux服务器的主要方式包括SSH文件传输(SCP/SFTP)、FTP/SFTP客户端工具、Rsync同步工具以及基于Web的文件管理器等,每种方式在传输协议、安全性、操作复杂度和适用场景上各有特点,用户需结合文件大小、网络环境及安全需求进行选择。
| 传输方式 | 协议/工具 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| SCP(安全拷贝) | SSH协议 | 基于SSH加密,简单易用,无需安装额外服务 | 仅支持文件传输,无目录管理功能 | 小文件、快速传输,对安全性要求高的场景 |
| SFTP(安全文件传输) | SSH协议 | 支持目录操作、断点续传,交互式友好 | 需要服务器开启SFTP服务,配置稍复杂 | 需要频繁管理文件、传输大文件或目录 |
| FTP(文件传输协议) | FTP协议 | 兼容性好,支持主流客户端工具 | 明文传输,安全性低(需搭配TLS使用) | 内网传输、对安全性要求不高的传统场景 |
| Rsync(远程同步) | Rsync协议 | 增量传输,节省带宽,支持实时同步 | 需要两端安装rsync,命令参数相对复杂 | 大文件同步、定期备份、增量更新场景 |
| Web文件管理器 | HTTP/HTTPS(如cPanel) | 图形化界面,操作直观,无需命令行 | 依赖服务器Web环境,传输效率较低 | 服务器已配置面板、不熟悉命令行的用户 |
SCP:基于SSH的快速文件传输
SCP(Secure Copy)是利用SSH协议进行文件传输的命令行工具,因其简单高效且无需额外配置,成为Linux用户上传小文件的首选方法,使用SCP前,需确保服务器已开启SSH服务(默认22端口),且本地用户具有服务器的写入权限。
上传单个文件
基本语法为:scp [本地文件路径] [用户名@服务器IP:目标路径]
将本地/home/user/docs/report.txt上传到服务器的/var/www/html/目录:
scp /home/user/docs/report.txt root@192.168.1.100:/var/www/html/
执行后会提示输入服务器密码,上传成功后可通过ls命令在服务器目标路径查看文件。
上传整个目录
添加-r参数递归传输目录:

scp -r /home/user/project/ root@192.168.1.100:/opt/
优化传输参数
-P:指定非默认SSH端口(如-P 2222);-p:保留文件权限、时间戳等属性;-C:启用压缩,适合传输大文件。
SFTP:交互式安全文件传输
SFTP(SSH File Transfer Protocol)基于SSH协议构建,提供了类似FTP的交互式命令行界面,支持文件上传、下载、删除、重命名及目录操作,适合需要频繁管理文件的用户,使用SFTP前,需确保服务器已启用SSH的SFTP子系统(通常默认开启)。
连接服务器
sftp username@server_ip
连接成功后,会显示sftp>提示符,进入交互式环境。
常用SFTP命令
| 命令 | 功能 | 示例 |
|---|---|---|
put [本地文件] |
上传本地文件到服务器 | put report.txt |
put -r [本地目录] |
上传本地目录到服务器 | put -r project/ |
get [服务器文件] |
下载服务器文件到本地 | get data.csv |
ls |
列出服务器当前目录文件 | ls /var/www/html/ |
cd [目录路径] |
切换服务器目录 | cd /backup/ |
mkdir [目录名] |
在服务器创建目录 | mkdir logs/ |
exit或bye |
退出SFTP会话 | exit |
断点续传
若传输中断,可重新执行put或get命令,SFTP会自动从断点继续传输(需服务器和客户端支持)。
Rsync:高效增量文件同步
Rsync(Remote Sync)是一款快速、 versatile的文件同步工具,通过增量传输算法,仅同步文件差异部分,大幅节省带宽和时间,特别适合大文件或定期备份场景,使用Rsync需本地和服务器均安装该工具(Linux系统默认预装或可通过apt/yum install rsync安装)。
基本上传语法
rsync [选项] [本地路径] [用户名@服务器IP:目标路径]
常用选项及示例
-
同步目录并保留权限:

rsync -avz /home/user/src/ root@192.168.1.100:/dst/
-a:归档模式,保留权限、时间戳等属性;-v:显示详细传输过程;-z:压缩传输数据。
-
排除特定文件:
rsync -avz --exclude='*.log' /src/ root@server:/dst/
-
删除目标目录多余文件(谨慎使用):
rsync -avz --delete /src/ root@server:/dst/
安全与权限注意事项
- SSH密钥认证:为避免频繁输入密码,建议配置SSH免密登录(通过
ssh-keygen生成密钥,并将公钥添加到服务器~/.ssh/authorized_keys)。 - 文件权限设置:上传后需检查文件/目录权限,例如Web服务文件通常需设置为
644(文件)和755(目录),可通过chmod命令调整。 - 防火墙与端口:确保服务器防火墙允许SSH(22端口)、SFTP及自定义传输端口(如使用
-P指定的端口)。 - 敏感文件保护:避免通过不安全的网络传输明文文件,建议使用SCP/SFTP等加密协议,或对文件进行加密后再上传。
相关问答FAQs
Q1:上传文件时提示“Permission denied”如何解决?
A:该错误通常是由于权限不足导致,可从以下方面排查:
- 检查服务器目标目录的写权限,当前用户需有
w权限(如chmod 755 /var/www/html/); - 确认文件所有者是否为当前用户,可通过
chown username:group filename修改所有者; - 若上传到系统目录(如
/root),需使用sudo或切换到root用户操作。
Q2:传输大文件时速度很慢,如何优化?
A:可尝试以下方法提升传输速度:
- 使用
rsync -avz启用压缩传输,减少网络数据量; - 调整SSH加密算法(如服务器配置中修改
Ciphers参数为aes128-ctr等高效算法); - 检查网络带宽是否饱和,避免与其他高带宽任务并行;
- 对于超大文件(如GB级),可考虑分割传输后合并(如使用
split和cat命令)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/78667.html