Why it's usually two steps
Most Mac file transfer apps treat your Mac as one end of every transfer. To move a folder from a staging server to an S3 bucket, you download it to your Mac, find it again, and upload it to the bucket. That's twice the waiting, a copy on your disk to clean up afterwards, and room for mistakes when you pick the wrong folder.
In Terminal you can skip the Mac for SSH servers, with scp between two hosts or rsync run on one of them. That works when both ends speak SSH and you know the commands. It doesn't help with S3, WebDAV or FTP.
Copy from one server to another, step by step
- Open AnyBucket and press ⌘T for a new tab.
- Press ⇧⌘K and connect to the first server, or press ⌘K and type a few letters of its bookmark.
- Press ⌘\ to open a second pane, then pick the other server from the pane's source menu.
- Press ⇥ to go back to the source pane and find the files.
- Mark them with Space, or press + and type a pattern such as
*.jpgto mark every match. - Press F5 to copy them to the other pane, or F6 to move them.
The transfer joins the queue under the panes, and you can keep working. Prefer to pick the destination without opening it first? ⌘G copies the marked files to any bookmark or folder you choose in the palette, and ⌥⌘G moves them.
What happens to the files
AnyBucket picks the route for each transfer:
| Source and destination | How the files travel |
|---|---|
| Same S3 account or store | On the server, with CopyObject |
| Same WebDAV server | On the server, with COPY and MOVE |
| Same SFTP server, account with a shell | On the server, with cp over SSH |
| Two different servers | Streamed through a small, bounded spool on your Mac |
| This Mac and a server | Uploaded or downloaded directly |
A move copies the files, verifies the copy, then deletes the originals. Nothing is removed before the copy is there.
Mix any two protocols
Every protocol works with every other, in both directions: SFTP, FTP, FTPS, Amazon S3 and S3-compatible stores (Cloudflare R2, Backblaze B2, Wasabi, DigitalOcean Spaces, Google Cloud Storage, MinIO), WebDAV over HTTP and HTTPS, and This Mac. Some common jobs:
- Publish assets: from an SFTP web server to an S3 or R2 bucket.
- Change providers: from Amazon S3 to Cloudflare R2 or Backblaze B2, bucket by bucket.
- Retire an old host: from an FTP server to a WebDAV share or a new SFTP server.
Every ordered pair of protocols is copied and moved end to end against real servers in AnyBucket's tests, with every byte checked.
When a file is already there
If the destination already has a file with the same name, AnyBucket asks before it overwrites anything. You can replace it, replace it only if yours is newer, keep both (the copy becomes name 2.ext), skip it or resume a partly copied file, and apply the answer to the rest of the transfer. More in conflicts.
Large copies and dropped connections
Big jobs between servers can take a while, so the queue is built to finish them:
- A dropped connection or a server restart retries on a fresh connection after 1, 3 and 8 seconds.
- The queue is saved. Quit AnyBucket and interrupted transfers come back at the next launch.
- Checksums are verified wherever the protocol allows.
- Closing the last window keeps AnyBucket running in the menu bar, so transfers carry on.
Anything that still fails waits under Needs attention in the Transfers window (⌥⌘T) with its error. See a transfer stopped.