-
Notifications
You must be signed in to change notification settings - Fork 0
FTP FTPS and SFTP
When adding a destination, pick FTP or SFTP:
| Field | Notes |
|---|---|
| Host | IP address or hostname. |
| Port | Default 21 for FTP/FTPS, 22 for SFTP. |
| Username / Password | Leave both blank for anonymous FTP login (the app fills in anonymous / anonymous@ automatically — common for embedded FTP servers like homebrew/game-console ftpd's that don't require real credentials). |
| Use TLS | FTP only — enables FTPS (explicit TLS). Not applicable to SFTP, which is always encrypted (it runs over SSH). |
| Remote folder | The path on the server to send files into (created automatically if it doesn't exist, including any subfolders needed — see Folder Sources). |
You can save a server's connection details as a named saved server to reuse across destinations — see Tasks and Destinations.
- FTP/FTPS uses FluentFTP.
- SFTP uses SSH.NET.
- Before sending, if the task's overwrite mode is anything other than Replace, the app opens one connection per destination, lists the relevant remote folder(s) once, and answers every file's "does it exist / when was it modified" question from that single listing — it does not open a new connection per file. See Overwrite Modes for why this matters and what changed in v3.3.2.
- Uploads for multiple destinations run in parallel, up to the Max parallel destinations limit in Settings — each concurrent upload naturally uses its own connection, which is normal and expected.
Some embedded/lightweight FTP servers (notably Luma3DS's built-in ftpd used on 3DS homebrew setups) don't fully match what they advertise:
- They may list
MDTM(get-modified-time) in theirFEATresponse as if supported, but reply502 Command not implementedwhen it's actually issued. The app automatically falls back to reading the modified time from the directory listing (MLSD) instead, so Replace if newer still works correctly on these servers — you don't need to do anything. - Recursive directory listing (
LIST -R/FtpListOption.Recursive) is intentionally not used anywhere in this app, specifically because of servers like this one — support for it is inconsistent across FTP server implementations, so the app always lists one folder at a time instead. - Reported file timestamps from these servers are compared using UTC normalization on both sides (the source file's local timestamp and the server's reported timestamp), so Replace if newer gives correct results regardless of the time zone your computer is set to.
If you hit an FTP server that behaves unexpectedly, these two behaviors (MDTM fallback, no recursive LIST) are usually why other, more permissive clients "just work" while a very strict implementation might not — 1-Click Transfer already accounts for both.
If a transfer feels slow to start (a visible pause before the destination shows any activity), that's almost always the pre-transfer "does this file already exist" check for Replace if newer or Don't replace mode — see Overwrite Modes for how that works and how to avoid it entirely (switch the task to Replace, which skips the check completely).
1-Click Transfer — MIT licensed · Website · Support on Ko-fi