使用 scp (Secure Copy) - 最简单直接
scp 是基于 SSH 协议的,在几乎所有的 macOS 和 Linux 系统上都预装了,无需任何额外配置,非常适合一次性或偶尔的文件传输。

工作原理:通过 SSH 连接,在加密通道中安全地复制文件。
基本语法
scp [选项] <本地文件路径> <用户名@服务器IP:远程路径>
- 本地文件路径:你 Mac 上的文件或文件夹路径,
~/Downloads/myfile.txt或/Users/yourname/Documents/。 - 用户名:你在 Linux 服务器上的用户名,
root或ubuntu。 - 服务器IP:你的 Linux 服务器的公网 IP 地址,
168.1.100或yourdomain.com。 - 远程路径:文件在服务器上要存放的目录,
/home/username/或/var/www/html/。
常用示例
示例 1:上传单个文件
将 Mac 上的 ~/Downloads/report.pdf 上传到服务器 user@192.168.1.100 的家目录 /home/user/ 下。
scp ~/Downloads/report.pdf user@192.168.1.100:/home/user/
执行后会提示你输入 user 用户的密码。

示例 2:上传整个文件夹
需要加上 -r (recursive) 选项来递归地复制目录。
将 Mac 上的整个 ~/Projects/webapp 文件夹上传到服务器的 /opt/ 目录下。
scp -r ~/Projects/webapp user@192.168.1.100:/opt/
示例 3:从指定端口上传

如果你的 SSH 服务运行在非标准的 22 端口(2222),需要使用 -P 选项(注意是大写 P)。
scp -P 2222 ~/Downloads/report.pdf user@192.168.1.100:/home/user/
示例 4:避免每次都输入密码(推荐)
如果你需要频繁使用 scp,可以配置 SSH 密钥对来实现免密登录。
-
在 Mac 上生成 SSH 密钥(如果还没有的话):
ssh-keygen -t rsa -b 4096
一路按回车即可,默认会生成在
~/.ssh/id_rsa.pub。 -
将公钥复制到 Linux 服务器:
ssh-copy-id user@192.168.1.100
这条命令会自动将你的公钥追加到服务器上
~/.ssh/authorized_keys文件中,并设置好正确的权限。 -
之后使用
scp就无需输入密码了:scp -r ~/Projects/webapp user@192.168.1.100:/opt/
使用 rsync - 更强大、更高效
rsync 是一个文件同步工具,它通过只传输文件变化的部分来工作,因此对于大文件或频繁同步的目录,它的效率远高于 scp,macOS 也默认包含了 rsync。
工作原理:比较本地和远程文件的差异,只传输有变化的部分。
基本语法
rsync [选项] <本地路径> <用户名@服务器IP:远程路径>
常用选项
-a, --archive:归档模式,相当于-rlptgoD的集合,它保留了文件的所有属性(权限、时间戳等),非常适合用来同步整个目录。强烈推荐使用此选项。-v, --verbose:详细模式,显示传输过程的文件列表。-z, --compress:在传输过程中压缩文件,可以节省带宽。--progress:显示每个文件的传输进度。-h, --human-readable:以人类可读的格式显示文件大小(如 K, M, G)。
常用示例
示例 1:同步本地文件夹到服务器(常用)
将 ~/Projects/webapp 文件夹同步到服务器的 /opt/webapp_backup,如果目标文件夹已存在,rsync 会保留它,并在其内部进行同步。
rsync -avz --progress ~/Projects/webapp user@192.168.1.100:/opt/webapp_backup/
示例 2:删除服务器上多余的文件
如果你想确保本地和服务器上的目录内容完全一致(包括删除服务器上已不存在的本地文件),可以加上 --delete 选项。请谨慎使用!
# 将本地 ~/Projects/webapp 完全同步到服务器的 /opt/webapp/,服务器上多出来的文件会被删除 rsync -avz --delete ~/Projects/webapp/ user@192.168.1.100:/opt/webapp/
注意:本地路径的末尾加 表示同步目录内的内容,不加 表示同步整个目录本身。
使用图形化工具 - 最适合新手
如果你不习惯命令行,可以使用支持 SFTP (SSH File Transfer Protocol) 的图形化客户端。
推荐工具
- ForkLift (macOS 专用,付费,功能强大)
- Cyberduck (免费开源,跨平台)
- Transmit (macOS 专用,付费,经典好用)
- FileZilla (免费开源,跨平台,但界面稍显陈旧)
使用步骤(以 Cyberduck 为例)
- 下载并安装 Cyberduck。
- 打开 Cyberduck,点击 "Open Connection" 或 "New Connection"。
- 协议 选择 SFTP (SSH File Transfer Protocol)。
- 服务器 填入你的 Linux 服务器的 IP 地址或域名。
- 用户名 填入你的服务器用户名。
- 密码 填入你的密码(或者可以设置 SSH 密钥免密)。
- 点击 "Connect"。
- 连接成功后,左侧会显示你 Mac 的文件系统,右侧显示服务器的文件系统,你可以像在 Finder 里一样,直接拖拽文件或文件夹进行上传和下载。
使用 WebDAV 服务
如果你的 Linux 服务器上配置了 WebDAV 服务(Nginx 或 Apache 都可以轻松配置),你可以将服务器上的一个目录挂载为 Mac 的“磁盘”,然后直接像操作 U 盘一样复制粘贴文件。
使用步骤
- 在服务器上配置 WebDAV(略,这是一个服务器端配置)。
- 在 Mac 上连接:
- 打开 “访达” (Finder)。
- 点击菜单栏的 “前往” -> “连接服务器” (或使用快捷键
Cmd + K)。 - 在服务器地址栏输入
davs://<你的服务器IP>:<端口>/<WebDAV路径>,davs://192.168.1.100:8080/files。 - 点击连接,输入用户名和密码即可。
- 连接成功后,服务器目录会作为一个磁盘出现在访达的侧边栏中,你可以直接拖放文件。
总结与对比
| 方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
scp |
简单、快速、预装 | 每次都传完整文件,效率低 | 一次性上传少量文件,快速测试 |
rsync |
高效(增量同步)、保留属性、功能强大 | 命令参数稍多 | 强烈推荐,用于同步代码、备份、大文件或频繁更新的目录 |
| 图形化工具 | 直观、易用、支持拖拽 | 需要额外安装软件,可能需要付费 | 新手用户,习惯图形界面的开发者 |
| WebDAV | 像本地磁盘一样操作,方便 | 需要在服务器端额外配置服务 | 需要像访问网络硬盘一样方便地管理服务器文件 |
给你的建议:
- 如果你是开发者或系统管理员:强烈建议花点时间学会
rsync,它会成为你日常工作的利器。 - 如果你只是偶尔传个文件:
scp足够用了。 - 如果你完全不想碰命令行:下载一个 Cyberduck 或 ForkLift,图形化操作非常方便。
