你想停止手动做 FTP 传输。无论是从 Mac 上传到服务器,还是从服务器下载到 Mac,都应该自动完成,不需要每次亲自操作。在 macOS 上实现这一点有几种方式——有的免费,有的需要技术背景,有的直接就能用。
以下是 2026 年所有可用方案的诚实对比。我们会分析每种方案的优势、局限,以及适合哪类用户。
方案一:Shell 脚本(lftp/curl + cron 或 launchd)
Shell 脚本配合 cron 或 launchd
用 lftp 或 curl 在脚本里处理 FTP 操作,然后通过 cron(简单)或 launchd(更可靠,macOS 原生)定时运行。用 lftp 做镜像同步的基本写法:
#!/bin/bash
# 将远程 FTP 文件夹同步到本地 — 通过 cron 每 5 分钟运行一次
lftp -u "$FTP_USER","$FTP_PASS" sftp://ftp.example.com << EOF
mirror --only-newer /remote/incoming/ /Users/you/Downloads/incoming/
quit
EOF
优点:免费,除 lftp 外无其他依赖,灵活性高——可以串联其他命令、发邮件、触发脚本。可在服务器上无界面运行。对行为有完全控制权。
缺点:需要熟悉终端、Shell 脚本和 cron 语法。出错不提醒——密码改了、服务器迁移了、网络抖动,脚本只是把错误写进没人看的日志。没有 macOS 通知。冲突处理逻辑需要自己写。在脚本里安全存储凭据需要额外工作。Apple 多年前已推荐用 launchd 替代 cron,但正确配置 launchd plist 更复杂。
适合:偏好命令行的开发者、服务器端自动化、Mac 作为无界面服务器运行的场景。
方案二:Automator 和文件夹操作
Automator / 文件夹操作
macOS 自带 Automator(可视化工作流构建器)和文件夹操作(本地文件夹有文件加入时触发)。乍看很适合 FTP 自动化。
实际上,Automator 没有内置的 FTP 动作。用 Automator 做 FTP 自动化必须用"运行 Shell 脚本"动作——绕了一圈还是要写脚本,只是加了一层 GUI 的复杂度,没有增加任何能力。
优点:所有 Mac 预装,无需额外软件,有可视化界面。
缺点:没有原生 FTP 支持——最终还是要在 Automator 里写脚本。Automator 工作流脆弱,错误处理很差。Apple 多年来一直在弱化 Automator(快捷指令是继任者,但同样没有 FTP 支持)。文件夹操作只响应本地文件夹变化,无法监控远程 FTP 文件夹。
适合:Mac 上的简单本地文件操作。对 FTP 自动化实际上没有用武之地。
方案三:通用同步工具
通用同步工具
市面上一些同步工具支持 FTP 作为众多后端之一,同时还支持云存储、NAS 等。它们围绕双向同步任务的概念设计。
优点:一个工具处理多种存储类型,支持双向同步和冲突解决。
缺点:为通用同步而生,不是轻量 FTP 自动化工具。界面围绕同步任务设计,而非事件驱动的监控。远程文件夹仍是轮询方式,不是即时响应。资源占用较多。UI 复杂度反映了其广泛定位,对"监控这个 FTP 文件夹、有新文件就下载"这个简单需求来说过于臃肿。
方案四:Mac 专用应用(FTPull + FTPush)
FTPull + FTPush——专为 Mac FTP 自动化打造
FTPull 和 FTPush 是两个独立的 Mac 应用,各自专注一件事:FTPull 监控远程 FTP 文件夹并自动下载新文件;FTPush 监控本地文件夹并自动上传新文件。
两者都是专为 macOS 开发,不是跨平台工具的移植版。全面使用 macOS 原生 API:
- FSEvents 实现本地文件即时检测(FTPush)——文件出现在监控文件夹的瞬间,不到一秒即可检测到
- macOS 通知中心在传输完成或失败时推送提醒
- Finder 标签用颜色标记文件状态(等待、上传中、完成、错误)——不用打开应用,直接在 Finder 里查看
- macOS Keychain安全存储凭据——密码不写入配置文件或明文
- 菜单栏集成——两个应用都常驻菜单栏,空闲时 CPU 占用接近零
与其他方案的主要区别:
- FTPull:每个连接可单独配置轮询间隔(最短 1 分钟)、扩展名过滤、定时计划、递归子目录监控、传输历史、多连接并行
- FTPush:基于 FSEvents(即时检测,非轮询)、文件稳定性检测(等文件写完再上传)、并发上传、上传后操作(移至归档、本地删除、执行脚本)、带宽限速
- 共同特性:支持 FTP、SFTP、FTPS;macOS 沙盒兼容;14 天免费试用
横向对比
| 方案 | 配置难度 | 通知 | Mac 原生界面 | FTP/SFTP/FTPS | 维护成本 |
|---|---|---|---|---|---|
| Shell 脚本 + cron | 高 | 无 | 无 | 有(lftp) | 高 |
| Automator | 中 | 基础 | 部分 | 无(仅脚本) | 中 |
| 通用同步工具 | 中 | 有 | 部分 | 有 | 低 |
| FTPull + FTPush | 低 | 有(完整) | 有(原生) | 有(原生) | 无 |
Mac FTP 自动化真正重要的是什么
选择时的核心考量
- 即时检测:FSEvents 监控让 FTPush 在不到一秒内检测到新文件——不需要等下一个轮询周期
- 零维护:没有要更新的脚本,没有要修的 cron 任务,没有要编辑的配置文件
- 原生反馈:macOS 通知、Finder 标签、实时日志——而不是需要手动打开的文本文件
- 持续运行:配置一次,在菜单栏永久运行
FTPull 和 FTPush 专注于一个工作流——在 Mac 上自动化 FTP/SFTP/FTPS 传输——并把它做到位。没有要配置的同步逻辑,没有云存储后端,没有跨平台妥协。就是:监控这个文件夹,传输新文件,完成后告诉我。