凌峰创科服务平台

mac上传文件到linux服务器

使用 scp (Secure Copy) - 最简单直接

scp 是基于 SSH 协议的,在几乎所有的 macOS 和 Linux 系统上都预装了,无需任何额外配置,非常适合一次性或偶尔的文件传输。

mac上传文件到linux服务器-图1
(图片来源网络,侵删)

工作原理:通过 SSH 连接,在加密通道中安全地复制文件。

基本语法

scp [选项] <本地文件路径> <用户名@服务器IP:远程路径>
  • 本地文件路径:你 Mac 上的文件或文件夹路径,~/Downloads/myfile.txt/Users/yourname/Documents/
  • 用户名:你在 Linux 服务器上的用户名,rootubuntu
  • 服务器IP:你的 Linux 服务器的公网 IP 地址,168.1.100yourdomain.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 用户的密码。

mac上传文件到linux服务器-图2
(图片来源网络,侵删)

示例 2:上传整个文件夹

需要加上 -r (recursive) 选项来递归地复制目录。

将 Mac 上的整个 ~/Projects/webapp 文件夹上传到服务器的 /opt/ 目录下。

scp -r ~/Projects/webapp user@192.168.1.100:/opt/

示例 3:从指定端口上传

mac上传文件到linux服务器-图3
(图片来源网络,侵删)

如果你的 SSH 服务运行在非标准的 22 端口(2222),需要使用 -P 选项(注意是大写 P)。

scp -P 2222 ~/Downloads/report.pdf user@192.168.1.100:/home/user/

示例 4:避免每次都输入密码(推荐)

如果你需要频繁使用 scp,可以配置 SSH 密钥对来实现免密登录。

  1. 在 Mac 上生成 SSH 密钥(如果还没有的话):

    ssh-keygen -t rsa -b 4096

    一路按回车即可,默认会生成在 ~/.ssh/id_rsa.pub

  2. 将公钥复制到 Linux 服务器

    ssh-copy-id user@192.168.1.100

    这条命令会自动将你的公钥追加到服务器上 ~/.ssh/authorized_keys 文件中,并设置好正确的权限。

  3. 之后使用 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) 的图形化客户端。

推荐工具

  1. ForkLift (macOS 专用,付费,功能强大)
  2. Cyberduck (免费开源,跨平台)
  3. Transmit (macOS 专用,付费,经典好用)
  4. FileZilla (免费开源,跨平台,但界面稍显陈旧)

使用步骤(以 Cyberduck 为例)

  1. 下载并安装 Cyberduck。
  2. 打开 Cyberduck,点击 "Open Connection" 或 "New Connection"。
  3. 协议 选择 SFTP (SSH File Transfer Protocol)。
  4. 服务器 填入你的 Linux 服务器的 IP 地址或域名。
  5. 用户名 填入你的服务器用户名。
  6. 密码 填入你的密码(或者可以设置 SSH 密钥免密)。
  7. 点击 "Connect"。
  8. 连接成功后,左侧会显示你 Mac 的文件系统,右侧显示服务器的文件系统,你可以像在 Finder 里一样,直接拖拽文件或文件夹进行上传和下载。

使用 WebDAV 服务

如果你的 Linux 服务器上配置了 WebDAV 服务(Nginx 或 Apache 都可以轻松配置),你可以将服务器上的一个目录挂载为 Mac 的“磁盘”,然后直接像操作 U 盘一样复制粘贴文件。

使用步骤

  1. 在服务器上配置 WebDAV(略,这是一个服务器端配置)。
  2. 在 Mac 上连接
    • 打开 “访达” (Finder)
    • 点击菜单栏的 “前往” -> “连接服务器” (或使用快捷键 Cmd + K)。
    • 在服务器地址栏输入 davs://<你的服务器IP>:<端口>/<WebDAV路径>davs://192.168.1.100:8080/files
    • 点击连接,输入用户名和密码即可。
  3. 连接成功后,服务器目录会作为一个磁盘出现在访达的侧边栏中,你可以直接拖放文件。

总结与对比

方法 优点 缺点 适用场景
scp 简单、快速、预装 每次都传完整文件,效率低 一次性上传少量文件,快速测试
rsync 高效(增量同步)、保留属性、功能强大 命令参数稍多 强烈推荐,用于同步代码、备份、大文件或频繁更新的目录
图形化工具 直观、易用、支持拖拽 需要额外安装软件,可能需要付费 新手用户,习惯图形界面的开发者
WebDAV 像本地磁盘一样操作,方便 需要在服务器端额外配置服务 需要像访问网络硬盘一样方便地管理服务器文件

给你的建议:

  • 如果你是开发者或系统管理员:强烈建议花点时间学会 rsync,它会成为你日常工作的利器。
  • 如果你只是偶尔传个文件scp 足够用了。
  • 如果你完全不想碰命令行:下载一个 CyberduckForkLift,图形化操作非常方便。
分享:
扫描分享到社交APP
上一篇
下一篇