If you transfer files between your Mac and an FTP server regularly, you've probably had the thought: there has to be a better way than doing this manually every time. There is. But not every approach works equally well: and some create more problems than they solve.
The manual transfer problem
Manual FTP transfers mean opening a client, connecting, navigating to the right folder, selecting files, waiting, closing. Every time. Miss a transfer and files pile up. Do it too early and you catch a half-written file. Do it from memory and you lose track of what's been sent and what hasn't.
For anyone who moves files regularly: photographers delivering to agencies, businesses syncing with partners, teams distributing assets: this adds up to hours of repetitive work every week. Work that produces no value. Work that a machine should be doing.
Why common workarounds fall short
The first instinct is usually to write a script. Shell scripts can automate FTP operations, and they work: until something changes. A credential rotation, a server migration, a network hiccup. Scripts fail silently. There are no notifications when something goes wrong, no log anyone is watching, no retry logic unless you write it yourself. Maintaining scripts takes ongoing developer time. For a non-technical user, it's not an option at all.
General-purpose sync tools take a different approach: they treat FTP as one of many backends alongside cloud storage and local drives. The result is a tool designed around the concept of synchronisation jobs: scheduled, bidirectional, configuration-heavy. That's powerful for complex multi-cloud setups. It's overkill, and often confusing, for a straightforward "watch this FTP folder, download new files" workflow.
macOS built-in tools like Automator have no native FTP support. Any FTP automation via Automator requires shell scripts anyway: it just adds a layer of fragility on top.
What the right solution looks like
Automating FTP transfers on Mac well requires a few things that are harder to get right than they appear:
- Event-driven detection, not polling. Watching a remote FTP folder for new files means polling: the app checks the server every N seconds. That's unavoidable for FTP. But watching a local folder for files to upload should use FSEvents, macOS's native file system notification API, for sub-second detection. Scripts and generic tools don't do this.
- File stability checking. Uploading a file that's still being written produces a corrupted transfer. The right tool waits until a file stops changing before touching it.
- Native Mac feedback. macOS notifications when a transfer completes or fails. A real-time activity log. Visual status in the menu bar. Not a text file you have to dig up.
- Zero ongoing maintenance. Configure it once. It runs in the background indefinitely without intervention.
- Credential security. Passwords stored in the macOS Keychain: not in config files, not in plain text, not in environment variables that leak into process listings.
FTPull + FTPush: built exactly for this
FTPull and FTPush are two separate Mac apps, each handling one direction of FTP automation. FTPull watches a remote FTP, SFTP, or FTPS server and downloads new files automatically. FTPush watches a local folder and uploads new files automatically the moment they appear.
Both live in the menu bar and use near-zero CPU when idle. Both use the macOS Keychain for credentials. Both support FTP, SFTP, and FTPS: the three protocols you'll encounter in practice. Both are configured once and then left alone.
The design philosophy is deliberate: one tool, one job, done properly. Not a Swiss Army knife with an FTP attachment. Not a script you maintain. An app that runs quietly in the background and transfers your files: and tells you when it's done.
What you get with FTPull + FTPush
- FTPull: automatic downloads from any FTP/SFTP/FTPS server, configurable polling interval, extension filters, scheduling, recursive folder monitoring, transfer history
- FTPush: instant local detection via FSEvents, file stability checker, concurrent uploads, post-upload actions (archive, delete, run script), bandwidth limits, Finder tags
- Both: multiple simultaneous connections, macOS notifications, real-time log, 14-day free trial: no credit card required
If you move files between your Mac and FTP servers regularly, this is the setup that removes the work entirely. Configure once, forget forever.
