Wiki > Multi-threaded and Segmented FTP
Downloading many files simultaneously can often increase FTP speeds because each file requires its own connection to be established.
For example, without segmented FTP you could download a single file at 100 KB/s, but your network connection should be able to achieve speeds of 1000 KB/s. If you download 10 files simultaneously, each should be able to reach their 100 KB/s peak, resulting in a total download speed of 1000 KB/s.
Note: This method only works with the simultaneous transfer of many files. If you are wanting to increase speed when downloading a single file, read the next section about segmented downloading.
If you are having poor speeds when downloading from your slot, you may want to try "segmented downloading."
Essentially, what it does is break up a single file into many smaller pieces.
For example, let us say that you only get 100 KB/s when downloading a single file from your slot via FTP, but you should be able to achieve speeds of 1 MB/s. If you can break that single file into ten pieces, each requiring their own connection to be established, then you can theoretically achieve ten times the speed.
There are not many FTP clients that support segmented downloading, but a few of those that can are mentioned below.
- Windows: CuteFTP Pro, SmartFTP Pro, iGetter, lftp via Cygwin
- macOS: Progressive Downloader, Captain FTP, iGetter, lftp (via Homebrew or MacPorts)
- Linux: lftp
Multi-threading vs Segmented
A common misconception is that multithreading = segmented downloading. This is not the case. GoFTP is a client that claims to support multi-threading, but in truth doesn’t offer segmented. Segmentation allows an FTP client to split a single large file into multiple parts and use multiple transfers to download those parts simultaneously (ie - separate segmented parallel FTP connections). These parts are then recombined into a single file upon completion.
During the active download you’ll notice multiple (temporary) parts of the same file: