FTP転送を手動で行うのをやめたい。MacからサーバーへのアップロードでもサーバーからMacへのダウンロードでも、毎回自分で操作することなく自動で動いてほしい。macOSでこれを実現する方法はいくつかあります。無料のものも、技術的な知識が必要なものも、ただ動いてくれるものも。
これは2026年時点で実際に使えるすべての選択肢を正直に比較したものです。各アプローチが得意なこと、苦手なこと、誰に向いているかを説明します。
選択肢1:シェルスクリプト(lftp/curl + cron または launchd)
cronまたはlaunchdと組み合わせたシェルスクリプト
シェルスクリプトで lftp または curl を使ってFTP操作を行い、cronまたはlaunchdで定期実行します。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以外の依存なし、高い柔軟性——他のシェルコマンドを連鎖させたり、メール送信やスクリプト実行もできます。サーバー上でヘッドレス動作可能。動作を完全にコントロールできます。
デメリット:ターミナルとシェルスクリプト、cron構文の知識が必要。エラーが出ても気づかない——パスワード変更、サーバー移転、ネットワークの問題があると、誰も読まないログファイルにエラーが記録されるだけです。macOS通知なし。競合解決ロジックは自分で書く必要あり。シェルスクリプトでの認証情報の安全な管理には追加の手間が必要。Appleは数年前からcronよりlaunchdを推奨していますが、launchdのplistを正しく設定するのはさらに複雑です。
向いている人:コードを好む開発者、サーバーサイドの自動化、MacがGUIなしでサーバーとして動いている場合。
選択肢2:AutomatorとFolder Actions
Automator / Folder Actions
macOSにはAutomator(ビジュアルなワークフロービルダー)と、ローカルフォルダーにファイルが追加されたときに起動するFolder Actionsが含まれています。一見、FTP自動化に理想的に見えます。
実際には、AutomatorにはFTPアクションがネイティブにありません。AutomatorでFTP自動化をしようとすると「Run Shell Script」アクションが必要になり、結局シェルスクリプトを書くことになります——GUIという複雑さが加わるだけで、機能は増えません。
メリット:すべてのMacにプリインストール、追加ソフト不要、ビジュアルインターフェース。
デメリット:FTPネイティブサポートなし——結局Automator内でシェルスクリプトを書くことになります。Automatorのワークフローは壊れやすく、エラー処理が弱い。AppleはAutomatorを縮小しつつあります(後継はショートカットですが、こちらもFTPサポートなし)。Folder Actionsはローカルフォルダーの変更にしか反応しません——リモートFTPフォルダーの監視には使えません。
向いている人:Macでのシンプルなローカルファイル操作。FTP自動化には実質的に使えません。
選択肢3:汎用同期ツール
汎用同期ツール
市場には、クラウドストレージ、NASデバイス、ローカルフォルダーなど多くのバックエンドと並んでFTPをサポートする同期ツールがあります。双方向同期ジョブを中心に設計されています。
メリット:1つのツールで多くのストレージタイプを扱える、双方向同期、競合解決。
デメリット:軽量なFTP自動化ではなく汎用同期向けに作られています。インターフェースはイベント駆動の監視ではなく同期ジョブを中心に設計されています。リモートフォルダーはポーリングベース——即時ではありません。リソース消費が多い。UIの複雑さはその幅広いスコープを反映しており、「このFTPフォルダーを監視して新しいファイルをダウンロードする」というシンプルなワークフローには過剰です。
選択肢4:Mac専用アプリ(FTPull + FTPush)
FTPull + FTPush——Mac FTP自動化のために作られた専用アプリ
FTPullとFTPushは2つの別々のMacアプリで、それぞれ1つのことに特化しています。FTPullはリモートFTPフォルダーを監視して新しいファイルを自動でダウンロード。FTPushはローカルフォルダーを監視して新しいファイルを自動でアップロードします。
どちらもmacOS専用に作られています——クロスプラットフォームツールの移植ではありません。macOSのネイティブAPIを全面的に使用しています:
- FSEventsによるローカルファイルの即時検出(FTPush)——監視フォルダーにファイルが届いた瞬間、1秒以内に検出
- macOS通知センターによる転送完了・失敗の通知
- Finderタグでファイルの状態を視覚的にマーク(待機、アップロード中、完了、エラー)——アプリを開かなくてもFinderから直接確認可能
- macOS Keychainでの認証情報の安全な保存——設定ファイルやプレーンテキストにパスワードなし
- メニューバー統合——両アプリはメニューバーに常駐し、アイドル時のCPU使用量はほぼゼロ
他の選択肢との主な違い:
- FTPull:接続ごとに設定可能なポーリング間隔(最短1分)、拡張子フィルター、スケジュール、サブフォルダーの再帰監視、転送履歴、複数の同時接続
- FTPush:FSEventsベース(即時検出、ポーリングなし)、ファイル安定性チェッカー(アップロード前にファイルの書き込み完了を確認)、同時アップロード、アップロード後アクション(アーカイブ移動、ローカル削除、スクリプト実行)、帯域幅制限
- 共通:FTP、SFTP、FTPSに対応、macOSサンドボックス対応、14日間無料トライアル
比較表
| アプローチ | 設定の難しさ | 通知 | Macネイティブ UI | FTP/SFTP/FTPS | メンテナンス |
|---|---|---|---|---|---|
| シェルスクリプト + cron | 高い | なし | なし | あり(lftp) | 高い |
| Automator | 中程度 | 基本のみ | 部分的 | なし(スクリプトのみ) | 中程度 |
| 汎用同期ツール | 中程度 | あり | 部分的 | あり | 低い |
| FTPull + FTPush | 低い | あり(充実) | あり(ネイティブ) | あり(ネイティブ) | なし |
MacのFTP自動化で本当に重要なこと
選ぶときのポイント
- 即時検出:FSEventsベースの監視により、FTPushはファイルを1秒以内に検出——次のポーリング間隔まで待つ必要なし
- メンテナンスゼロ:更新するスクリプトなし、修正するcronジョブなし、編集する設定ファイルなし
- ネイティブなフィードバック:macOS通知、Finderタグ、リアルタイムログ——手動で開くテキストファイルではなく
- ただ動き続ける:一度設定すれば、メニューバーで無期限に動き続けます
FTPullとFTPushはMacでのFTP/SFTP/FTPS自動転送という1つのワークフローに特化しており、妥協なく実現しています。設定する同期ロジックなし、クラウドストレージのバックエンドなし、クロスプラットフォームのUXなし。ただ:このフォルダーを監視して、新しいファイルを転送して、完了したら教えてくれる——それだけです。