Copy, move, delete — including folders
Cut and paste moves a folder server-side in one step. Copying whole directory trees works across every protocol.
FileFerry speaks FTP, FTPS, SFTP, WebDAV, SMB and S3, and it opens a real SSH terminal on the same connection. Native macOS, no Electron, no cloud account, nothing phoning home.
macOS 14.6 or later · free while in beta · requires the TestFlight app
220 (vsFTPd 3.0.5)USER kjm331 Please specify the password.PASS ******230 Login successful.PWD257 "/home/kjm"PASV227 Entering Passive Mode (192,168,0,72,201,44)LIST150 Here comes the directory listing.226 Directory send OK.— every line, every session. Nothing hidden.
Group your servers, keep several connections per server, and move files between the two panes the way you already do in Finder.
S3 has no directories. An object is called photos/2026/house.jpg —
that is one single name, and the slashes are ordinary characters. FileFerry
still shows you a tree you can click through, exactly as everywhere else.
The endpoint is yours to set. That covers Amazon, but equally Cloudflare R2, Backblaze, MinIO, or a Garage instance you run yourself. Credentials are an access key and a secret key; the secret lives in the Keychain, not in a configuration file.
Files above 5 GB are sent in parts, because S3 requires it. If the connection drops, FileFerry remembers which parts already arrived and picks up there on the next attempt instead of starting over. And because unfinished transfers stay on the server, appear in no listing and still take up space, FileFerry checks after connecting and asks whether they should go.
Cut and paste moves a folder server-side in one step. Copying whole directory trees works across every protocol.
Open a remote file in the built-in editor, or hand it to any app on your Mac. Saving writes it straight back.
Replace, skip or stop — and apply that choice to the whole transfer if you want to.
Set file modes with checkboxes or octal, on FTP, FTPS, SFTP and SSH.
Watch a remote directory while a build or an upload is running.
Each connection reopens its last local and remote directory. Recent directories are one click away.
Syncing a folder starts with looking. FileFerry compares the local directory with the remote one and hands you a list — both sizes, both timestamps and the proposal, line by line. Nothing is transferred until you tick it.
Only the safe rows are ticked. If the copy on the other side is the newer one, it is shown but left unticked. Deletions are never preselected, and there is a confirmation before anything is removed.
Across protocols they are unreliable — time zone, minute granularity, the server’s own clock. On SFTP a checksum decides instead. And FileFerry remembers the state after each run, so a file you just uploaded is not treated as the newer one next time.
Config files that belong on your machine only: exclude them by pattern, by extension or by name. A right-click in the list takes the pattern over instead of you typing it. Excluded entries stop appearing altogether.
The direction is switchable, subfolders can be included, and anything deleted is deleted for good — locally too, not moved to the Trash. A delete that ends up in the bin on one disk and gone forever on another would be worse than one that always means the same thing. Only what you ticked and then confirmed is deleted. While a run is active, the actions in the browser that would get in its way are disabled — looking and navigating stay open. Sync is new in this beta and accordingly little tested; feedback on it is especially welcome.
Copy 500 files, lose the connection after 200, and the hard part begins: working out where it stopped. FileFerry keeps that list for you — and it survives quitting the app.
Most failures are brief — a connection that blinked, a server that was busy. Each file is retried three times before it counts as failed.
After an upload the file size on the server is compared with the local one. A server answering "226 Transfer complete" is its opinion, not proof.
On the next start FileFerry tells you what is still open. Retry it or drop it from the list — either way, no file on the server is touched.
One detail that matters: before a retry, the local file is checked against its size and date from the moment it failed. If you have edited it since, FileFerry stops and says so instead of quietly sending a different version.
Most transfer apps stop at the file list. FileFerry opens a real SSH session on the server you are already connected to — no second app, no retyping the host.
Keep the commands you always retype, sorted into categories. Click one to insert it, or to run it right away.
Terminal type, character set, carriage return mode and an optional command to run after login — per connection.
Pick a theme per connection so you can tell production from staging at a glance.
On first contact FileFerry shows you the fingerprint and asks. After that it checks silently. If it changes, the connection is refused — there is no "connect anyway" button.
SHA-256 fingerprint on first connect, stored in the keychain, verified on every session for SSH and SFTP.
Self-signed certificate on your NAS? Confirm the fingerprint once. It is
checked against openssl x509 -fingerprint -sha256.
Stored in the macOS keychain, removed with the connection. Encrypted SSH keys are unlocked with a passphrase prompt.
App sandbox with four entitlements, no temporary exceptions. Nothing listens on a port.
The live session log for the wire dialogue, and an optional rotating log file on disk for diagnosis.
No sign-up, no analytics, no crash reports to me. Your servers are yours.
Follows macOS, or pin it. Thirteen accent colours, including "Automatic" for the system accent.
English, German, Danish and French — switching takes effect immediately, no restart.
Feedback goes through the TestFlight app — screenshot, a few words, send. It reaches me directly. Note that testers who join through the public link are anonymous to me: I see the report, not who you are. If you would rather write, there is a contact form.
TestFlight builds expire 90 days after upload. When one runs out, install the next from the same link.