使用 scp (Secure Copy) - 推荐,最常用
scp 是基于 SSH 协议的,它可以在本地主机和远程服务器之间安全地复制文件,如果你的服务器已经开启了 SSH 服务(这是最常见的情况),scp 是最简单、最直接的选择。

准备工作
- 确保服务器开启了 SSH 服务:绝大多数 Linux 服务器默认都开启。
- 知道服务器的 IP 地址或域名:
168.1.100或server.com。 - 知道你的用户名和密码(或 SSH 密钥)。
基本语法
# 从本地上传到服务器 scp /path/to/local/file username@remote_server:/path/to/remote/directory/ # 从服务器下载到本地 scp username@remote_server:/path/to/remote/file /path/to/local/directory/
操作示例
场景1:上传单个文件
将你本地的 report.txt 文件上传到服务器的 /home/username/ 目录下。
scp report.txt myuser@192.168.1.100:/home/myuser/
系统会提示你输入 myuser 用户的密码,输入后文件就开始传输。
场景2:上传整个目录
加上 -r (recursive) 参数可以递归地复制整个目录。
scp -r my_project_folder/ myuser@192.168.1.100:/home/myuser/
场景3:指定服务器端口
如果你的 SSH 服务运行在非标准的端口(2222),需要使用 -P 参数(注意是大写)。

scp -P 2222 report.txt myuser@192.168.1.100:/home/myuser/
场景4:使用 SSH 密钥进行免密登录
如果你已经配置了 SSH 密钥对,scp 会自动使用它,无需输入密码。
scp report.txt myuser@192.168.1.100:/home/myuser/
优缺点
- 优点:
- 简单、直接,几乎所有 Linux/macOS 系统都预装。
- 基于 SSH,传输过程是加密的,很安全。
- 可以轻松地集成到 Shell 脚本中实现自动化。
- 缺点:
- 没有传输进度条(在较新的系统上可能已经有了)。
- 交互性差,无法中途暂停或恢复传输。
使用 rsync (Remote Sync) - 功能强大的进阶选择
rsync 也是一个基于 SSH 的工具,但它比 scp 更加强大,它最大的特点是增量同步,即只传输源文件和目标文件之间有差异的部分,非常适合大文件和目录的同步。
基本语法
# 从本地上传到服务器 rsync [options] /path/to/local/source username@remote_server:/path/to/remote/destination/
常用选项
-a, --archive:归档模式,相当于-rlptgoD的集合,保留文件的所有属性(权限、时间戳等),通常推荐使用。-v, --verbose:显示详细的输出。-z, --compress:在传输过程中进行压缩,可以节省带宽。-P:等同于--partial --progress,显示传输进度,并且可以支持断点续传。-r, --recursive:递归复制目录(-a选项已经包含此功能)。
操作示例
场景1:同步本地目录到服务器
将本地的 my_project_folder 目录同步到服务器的 /home/myuser/projects/ 目录,如果目标目录已存在同名文件,rsync 会根据文件差异进行更新。
rsync -avz my_project_folder/ myuser@192.168.1.100:/home/myuser/projects/
注意:源目录末尾的 很重要。my_project_folder/ 表示同步目录 ,而 my_project_folder 表示同步目录 本身(即会在目标服务器上创建一个 my_project_folder 子目录)。

场景2:使用 SSH 密钥
和 scp 一样,如果配置了 SSH 密钥,会自动使用。
rsync -avzP my_project_folder/ myuser@192.168.1.100:/home/myuser/projects/
这里的 -P 会显示进度条并支持断点续传。
优缺点
- 优点:
- 增量同步:非常高效,尤其适合大文件和频繁备份。
- 保留文件属性:
-a选项能完美保留文件权限、时间戳等。 - 支持断点续传:传输中断后可以继续。
- 压缩传输:可以节省网络带宽。
- 缺点:
- 语法比
scp稍微复杂一点。 - 首次传输时,因为要比较文件,可能比
scp稍慢。
- 语法比
使用 SFTP (SSH File Transfer Protocol)
SFTP 是一个交互式的文件传输协议,它也运行在 SSH 之上,你可以把它想象成一个“安全的 FTP”,它提供了一个命令行界面,让你像在本地操作文件一样浏览、上传、下载、删除服务器上的文件。
基本语法
sftp username@remote_server
操作示例
连接到服务器后,你会进入一个 sftp> 命令提示符。
$ sftp myuser@192.168.1.100 myuser@192.168.1.100's password: # 输入密码 Connected to 192.168.1.100. sftp>
常用 SFTP 命令:
ls:列出当前远程目录下的文件。cd path:切换远程服务器的目录。lcd path:切换本地机器的目录。put /local/path/file:上传文件。get /remote/path/file:下载文件。mkdir dirname:在远程服务器创建目录。rmdir dirname:删除远程目录。rm file:删除远程文件。bye或exit:退出 SFTP 会话。
示例:上传文件
sftp> put report.txt Uploading report.txt to /home/myuser/report.txt report.txt 100% 256 0.3KB/s 00:00 sftp> bye
优缺点
- 优点:
- 交互式操作:可以方便地浏览服务器文件系统,非常灵活。
- 安全,基于 SSH。
- 功能丰富,支持文件和目录的增删改查。
- 缺点:
- 不适合自动化脚本,因为它是交互式的。
- 对于简单的单次上传,步骤比
scp多。
使用图形化工具 (FileZilla, Cyberduck)
如果你不习惯命令行,或者正在使用 Windows 系统,图形化 SFTP/FTP 客户端是最好的选择。
推荐工具
- FileZilla:免费、开源、跨平台(Windows, macOS, Linux),功能非常强大。
- Cyberduck:免费、开源、跨平台,界面更现代化。
操作步骤 (以 FileZilla 为例)
- 下载并安装 FileZilla。
- 连接服务器:
- 主机:输入你的服务器 IP 地址或域名。
- 用户名:输入你的服务器用户名。
- 密码:输入你的服务器密码。
- 端口:SSH/SFTP 端口是
22,如果不是,请填写正确的端口号。
- 点击“快速连接”。
- 连接成功后,界面会分为两部分:
- 左侧:是你本地的文件和目录。
- 右侧:是远程服务器上的文件和目录。
- 上传文件:在左侧找到你想要上传的文件或文件夹,直接拖拽到右侧的服务器目录中即可,你也可以右键点击文件,选择“上传”。
优缺点
- 优点:
- 图形界面:直观易用,无需记忆命令。
- 支持拖拽操作,非常方便。
- 提供传输进度条。
- 缺点:
- 需要额外安装软件。
- 对于服务器管理员来说,效率不如命令行。
搭建 Web 服务器上传 (如 Nginx/Apache)
如果你需要让用户通过浏览器直接上传文件到服务器,可以配置一个 Web 服务器(如 Nginx 或 Apache)来接收文件。
这通常用于构建网盘、表单上传等功能,配置相对复杂,不适用于简单的个人文件传输。
基本思路
- 在服务器上安装并配置 Nginx/Apache。
- 创建一个 HTML 表单,表单的
method设为POST,enctype设为multipart/form-data。 - 编写一个后端处理脚本(如 PHP, Python, Node.js)来接收、验证并保存上传的文件。
- 将这个 HTML 和脚本放到 Web 服务器的根目录下。
优缺点
- 优点:
- 任何有浏览器的人都可以上传,无需 SSH 客户端。
- 可以与 Web 应用无缝集成。
- 缺点:
- 配置最复杂,需要服务器管理知识。
- 安全性需要特别注意,容易受到上传漏洞攻击。
- 依赖 Web 服务器环境。
总结与对比
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
scp |
简单、快速、安全、预装 | 无进度条、不支持断点续传 | 日常使用、脚本自动化,首选方法。 |
rsync |
增量同步、高效、保留属性、支持断点续传 | 语法稍复杂 | 大文件/目录同步、频繁备份,功能更强大。 |
sftp |
交互式、灵活、功能丰富 | 不适合自动化脚本 | 需要浏览服务器文件、进行复杂文件管理时。 |
| FileZilla | 图形界面、直观、易用 | 需要安装软件、效率低于命令行 | 不熟悉命令行的用户、Windows 用户。 |
| Web 上传 | 通过浏览器访问,无需专用客户端 | 配置复杂、安全风险高 | 构建网盘、表单上传等 Web 应用功能。 |
如何选择?
- 如果你是开发者或系统管理员,需要频繁上传文件:首选
scp,简单高效,如果涉及大项目同步,用rsync。 - 如果你只是偶尔上传一两个文件:
scp或sftp都可以。 - 如果你是 Windows 用户或不习惯命令行:FileZilla 是你的不二之选。
- 如果你需要通过网页让用户上传:那么你需要配置 Web 服务器,但这超出了简单文件上传的范畴。
对于绝大多数情况,scp 是最万能、最应该掌握的工具。
