连接信息
无论使用哪种方法,您都需要准备以下信息:

- 服务器 IP 地址或域名 (
168.1.100或server.com) - 用户名 (
root,ubuntu,ec2-user) - 密码 (或者 SSH 密钥,推荐使用密钥)
- 目标路径 (文件上传到服务器的哪个目录,
/home/ubuntu/uploads/)
使用 scp (Secure Copy) - 最简单直接
scp 是一个基于 SSH 协议的命令行工具,用于在本地和远程主机之间安全地复制文件,它的语法和 cp (复制) 命令很相似,非常容易上手。
上传单个文件
# 语法: scp [本地文件路径] [用户名@服务器IP:服务器目标路径] # 示例: 将本地的 /home/user/docs/report.pdf 上传到服务器的 /home/ubuntu/ 目录下 scp /home/user/docs/report.pdf ubuntu@192.168.1.100:/home/ubuntu/
执行后,系统会提示您输入 ubuntu 用户的密码。
上传整个目录
使用 -r (recursive) 选项来递归地复制整个目录。
# 语法: scp -r [本地目录路径] [用户名@服务器IP:服务器目标路径] # 示例: 将本地的 /home/user/my_project 目录上传到服务器的 /home/ubuntu/ 目录下 scp -r /home/user/my_project ubuntu@192.168.1.100:/home/ubuntu/
指定不同端口
如果服务器的 SSH 端口不是默认的 22,需要使用 -P 选项(注意是大写 P)。

# 示例: 通过 2222 端口上传文件 scp -P 2222 /home/user/docs/report.pdf ubuntu@192.168.1.100:/home/ubuntu/
使用 rsync - 最强大灵活
rsync (Remote Sync) 是一个更高级、更强大的文件同步工具,它不仅像 scp 一样可以复制文件,还可以增量同步,即只同步发生变化的文件,这在处理大文件或频繁同步时效率极高。
基本上传
# 语法: rsync [选项] [本地文件路径] [用户名@服务器IP:服务器目标路径] # 示例: 将本地目录同步到服务器 rsync -avz /home/user/my_project/ ubuntu@192.168.1.100:/home/ubuntu/my_project/
-a(archive): 归档模式,等同于-rlptgoD,保留文件的所有属性(权限、时间戳等),最常用。-v(verbose): 详细模式,显示传输过程。-z(compress): 传输过程中进行压缩,可以加快速度。
rsync vs scp 的核心优势
增量同步:假设你再次运行上面的 rsync 命令,它只会检查本地目录和服务器目录的差异,然后只上传那些被修改或新增的文件,这比 scp 重新复制整个目录要快得多。
删除源服务器上多余的文件:如果你想保持本地和服务器目录完全一致(包括删除服务器上本地已经不存在的文件),可以使用 --delete 选项。(请谨慎使用!)
# 示例: 强制保持服务器目录与本地完全一致 rsync -avz --delete /home/user/my_project/ ubuntu@192.168.1.100:/home/ubuntu/my_project/
这个命令会确保服务器上的 my_project 目录内容和本地的一模一样,如果本地某个文件被删除了,服务器上对应的文件也会被删除。

使用 sftp (SSH File Transfer Protocol) - 最交互式
sftp 是一个交互式的文件传输程序,它提供了一个类似 FTP 的命令行界面,但所有传输都是通过 SSH 加密的,当你需要先浏览服务器目录,或者进行更复杂的文件管理操作(如重命名、删除)时,sftp 非常方便。
连接到服务器
sftp [用户名]@[服务器IP] # 示例 sftp ubuntu@192.168.1.100
连接成功后,你会看到 sftp> 提示符。
常用 sftp 命令
进入 sftp 会话后,可以使用以下命令:
ls或ls [远程目录]: 列出服务器当前目录下的文件。cd [远程目录]: 切换服务器上的目录。get [远程文件]: 从服务器下载文件到本地。put [本地文件]: 从本地上传文件到服务器。mkdir [远程目录名]: 在服务器上创建新目录。rm [远程文件]: 删除服务器上的文件。rmdir [远程目录名]: 删除服务器上的空目录。lcd [本地目录]: 切换本地的目录。lls: 列出本地当前目录下的文件。bye或exit: 退出sftp会话。
上传文件示例
$ sftp ubuntu@192.168.1.100 # 连接后... sftp> cd /home/ubuntu/ # 切换到服务器的目标目录 sftp> put /home/user/docs/report.pdf # 上传指定文件 Uploading /home/user/docs/report.pdf to /home/ubuntu/report.pdf report.pdf 100% 50KB 50.0KB/s 00:00 sftp> bye # 退出
使用图形化工具 (GUI) - 最适合新手
如果你不习惯命令行,可以使用支持 SFTP/SCP 协议的图形化文件管理器。
使用 Nautilus (GNOME 桌面环境)
- 打开文件管理器 (Nautilus)。
- 在地址栏输入
sftp://[用户名]@[服务器IP],然后按回车。-
sftp://ubuntu@192.168.1.100
-
- 系统会提示你输入密码,验证成功后,服务器的文件就会像本地磁盘一样显示在侧边栏或主窗口中,你可以直接拖拽文件进行上传和下载。
使用其他文件管理器 (Dolphin, Thunar 等)
大多数现代 Linux 文件管理器都支持此功能,通常在 "连接到服务器" 或类似的选项中找到。
使用专用客户端 (如 FileZilla)
FileZilla 是一个跨平台的免费 FTP 客户端,也完美支持 SFTP。
- 下载并安装 FileZilla。
- 新建站点,协议选择 "SFTP"。
- 填入主机、用户名、密码。
- 点击 "快速连接"。
- 连接成功后,左侧是你的本地文件,右侧是服务器的文件,直接拖拽即可传输。
总结与对比
| 工具 | 特点 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
scp |
简单、直接、基于SSH | 语法简单,无需额外安装 | 每次都完整复制,无法增量同步 | 快速上传少量文件或整个目录 |
rsync |
强大、灵活、增量同步 | 传输效率高,支持保留属性、删除多余文件 | 语法比 scp 稍复杂 |
频繁同步大目录、备份、部署代码 |
sftp |
交互式、类FTP | 功能全面,可先浏览再操作,可管理文件 | 需要进入交互式会话,不适合脚本自动化 | 需要进行文件管理(重命名、删除等)时 |
| GUI工具 | 可视化、拖拽 | 直观易用,适合新手 | 依赖图形界面,效率不如命令行 | 不熟悉命令行的用户,或需要直观操作时 |
推荐选择:
- 日常快速上传:用
scp。 - 开发/部署/频繁同步:强烈推荐
rsync,它是专业运维和开发者的首选。 - 需要浏览服务器再上传:用
sftp。 - 不习惯命令行:用文件管理器或 FileZilla。
