Newbies What Next ? News Forums Calendar


News Sections
General News (3987/0)
Reviews (637/0)
Press Releases (465/0)
Distributions (197/0)
Software (911/0)
Hardware (537/0)
Security (192/0)
Tutorials (356/0)
Off Topic (181/0)

User Functions


Don't have an account yet? Sign up as a New User

There are no upcoming events

Powerful Command-line File Transfer Programs

by Frazer Kline

The desktop environment with its bundle of programs sharing a common graphical user interface (GUI) remains a firm favorite with users. Not surprising really given that a good desktop environment makes computing fun and simple. The graphical desktop environment has become so ingrained in almost everyone's computer activities that it might seem the command line will wither away. Yet, there is still an important role to play for the humble command-line interface (CLI).

The CLI provides a way of interacting with a computer program where the user (or client) issues commands to the program in the form of successive lines of text (command lines). This way, the user gains full control over the operating system. There are many advantages in using a CLI application. They are generally frugal in using system resources, they are fast in operation, offer great scripting opportunities, and can be extremely powerful and flexible. Typing commands into a terminal or the console may appear mundane, but with the right tools, the command line can be incredibly powerful. A CLI app may also save your bacon one day; it has mine!

File Transfer Protocol (FTP) used to be a popular and time-honored method of transferring files to and from a remote network site. The need for FTP has declined significantly; many consider FTP to be an unfriendly protocol when it comes to accessing data. Further, it is an insecure protocol as it sends your credentials in plain text to the server. However, there are still occasions where transferring files via this protocol has been useful; the time to put FTP to bed has not yet come.

This article provides my pick of the best open source command line file transfer programs. The software featured here supports a number of different protocols, not just FTP. They offer shell-like command syntax, and are great for scripting purposes.


LFTP in action

LFTP is a mature open source file retrieving tool. Besides FTP, it supports a large number of protocols including FTPS, HTTP, HTTPS, FISH, SFTP and BitTorrent protocols under both IPv4 and IPv6. LFTP has an excellent array of features, while preserving its interface as simple and easy as possible.

LFTP's main two advantages over other ftp clients are reliability and the ability to perform tasks in background. It will reconnect and reget the file being transferred if the connection is dropped. Users can start a transfer in the background and continue browsing the ftp site. It does this all in one process. When you have started background jobs and feel you are done, you can exit LFTP and it automatically moves to nohup mode and completes the transfers. It also has handy features as reput and mirror. This application can also download a file as quickly as possible by using several connections at the same time, maximising the bandwidth of the connection.

LFTP is scriptable, it can be used to mirror sites, it lets you copy files among remote servers (even between FTP and HTTP). It has an extensive online help. It supports bookmarks, and connecting to several ftp/http sites at the same time.

Features include:

  • FTP and HTTP protocol support
  • FTP (e.g. TIS FWTK) and HTTP proxy support
  • FTP over HTTP proxy support (hftp and CONNECT method)
  • HTTPS and FTPS protocols support using GNU TLS or OpenSSL library
  • Automatic OPIE/SKEY support in FTP protocol
  • FXP transfers support (between two FTP servers, bypassing client machine)
  • FTP listings support: unix-style, NT, EPLF, OS/2, AS400, MacWebStar, MLSD
  • Automatic reconnect and retry of an operation on retriable errors or timeout
  • IPv6 support in both FTP and HTTP
  • FISH protocol support. It uses ssh with no special program on server side
  • SFTP protocol v3-v6 support
  • HTTP/1.1 keep-alive support
  • Partial WebDAV support
  • BitTorrent protocol support
  • Experimental support for SRV DNS records
  • SOCKS support
  • Modification time preservation (if server can report it)
  • 'reget' and `reput' support
  • Built-in mirror and reverse mirror (mirror -R)
  • Transfer rate throttling for each connection and for all connections
  • Limit for number of connections to the same site. Interruption of background transfer to do a foreground operation when the limit is reached
  • Socket options tuning: buffer size and maximum segment size
  • Job queueing
  • Job execution at specified time
  • Comprehensive scripting support
  • URL recognition in most operations
  • Readline library is used for input
  • Context sensitive completion
  • Bash-like prompt extensions
  • Launching of local shell commands
  • Suspend support
  • Bookmarks
  • Aliases - for example, this feature lets the user edit remote files
  • Saving of last directory on each site. `cd -' to go there
  • Copying of files between two servers, e.g. between FTP and HTTP
  • Numerous settings which can be associated with a specific server or a group
  • Paging of remote files using external program
  • 'zcat' and `zmore' support
  • Help for commands
  • Command history saved in a file
  • Transfer status includes rate and ETA
  • File listing cache
  • Background jobs (bash-like)
  • Job output redirection to a file or to a program via pipe
  • Conditional commands depending on exit status of previous one
  • Loading of binary modules at run time
  • Segmented file transfer - 'pget' to download a file using several connections 'pget' download can be continued as it saves a status file periodically
  • 'mirror' can download several files in parallel (--parallel option) and a single file with `pget'
  • Slots. Each slot is a separate session, switch using Meta-{1-9} or `slot' command. Refer to a slot site using pseudo URL slot:name
  • Website:
  • Developer: Alexander V. Lukyanov
  • License: GNU GPL v3
  • Version Number: 4.6.2


NcFTP in action

NcFTP is a console based user interface File Transfer Protocol (FTP) client program.

The purpose of NcFTP is to provide a powerful and flexible interface. It is intended to replace the stock ftp program that comes with the system.

NcFTP has a wealth of valuable performance and usage features. The program was designed with an emphasis on usability, and it does as much as it can for you automatically so you can do what you expect to do with a file transfer program, which is transfer files between two interconnected systems.

Features include:

  • Progress meters
  • Filename completion
  • Command-line editing
  • Background processing
  • Auto-resume downloads
  • Cached directory listing
  • Bookmarking
  • Host redialing
  • Download entire directory trees
  • Host redialing
  • Useful additional utility programs (ncftpget, ncftpput and ncftpbatch)
  • Website:
  • Developer: NcFTP Software Inc.
  • License: Clarified Artistic License
  • Version Number: 3.2.5


Yafc in action

Yafc is an FTP client intended to be a replacement for the standard ftp program. Features include directory cache, remote filename completion, aliases, colored ls, recursive get/put/ls/rm, nohup mode transfers, tagging (queueing), background downloading, and more.

Features include:

  • Cached directory listings
  • Extensive tab completion
  • Multiple connections open
  • Automatic reconnect on timed out connections
  • Aliases
  • Colored ls
  • Autologin and bookmarks
  • Kerberos support (version 4 and 5, heimdal, kth-krb or MIT)
  • SFTP support (SSH2, supports .ssh/config)
  • Recursive get/put/fxp/rm/ls
  • Stats after large get or put
  • Nohup mode get and put
  • Tagging (queueing) of files for later transferring
  • Automatically enters nohup-mode when SIGHUP received (in get and put)
  • Redirection to local command or file ('>', '>>' and '|')
  • Proxy support
  • Variable substitution for shell commands
  • Ignore masks for uploads
  • IPv6 support
  • Website:
  • Developer: Martin Hedenfalk
  • License: GNU GPL v2
  • Version Number: 1.3.5


cURL in action

cURL is a command line tool for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP.

curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate, kerberos...), file transfer resume, proxy tunneling and a busload of other useful tricks.

curl is powered by libcurl for all transfer-related features.

Features include:

  • Config file support
  • Multiple URLs in a single command line
  • Range "globbing" support: [0-13], {one,two,three}
  • Multiple file upload on a single command line
  • Custom maximum transfer rate
  • Redirectable stderr
  • Metalink support
  • Website:
  • Developer: Daniel Stenberg
  • License: MIT/X derivate license
  • Version Number: 7.41.0

Last Updated Sunday, April 19 2015 @ 05:36 AM EDT

We have written a range of guides highlighting excellent free books for popular programming languages. Check out the following guides: C, C++, C#, Java, JavaScript, CoffeeScript, HTML, Python, Ruby, Perl, Haskell, PHP, Lisp, R, Prolog, Scala, Scheme, Forth, SQL, Node.js (new), Fortran (new), Erlang (new), Pascal (new), and Ada (new).

Group Tests
100 Essential Apps
All Group Tests

Top Free Software
5 Office Suites
3 Lean Desktops
7 Document Processors
4 Distraction Free Tools
9 Project Management
4 Business Solutions
9 Groupware Apps
14 File Managers
10 Databases
21 Backup Tools
21 Productivity Tools
5 Note Taking Apps
9 Terminal Emulators
21 Financial Tools
5 Bitcoin Clients
21 Text Editors
21 Video Emulators
21 Home Emulators
42 Graphics Apps
6 CAD Apps
42 Scientific Apps
10 Web Browsers
42 Email Apps
12 Instant Messaging
10 IRC Clients
7 Twitter Clients
12 News Aggregators
11 VoIP Apps
42 Best Games
9 Steam Games
42 Audio Apps
5 Music Streaming
42 Video Apps
5 YouTube Tools
80 Security Apps
9 System Monitoring
8 Geometry Apps
Free Console Apps
14 Multimedia
4 Audio Grabbers
9 Internet Apps
3 HTTP Clients
5 File Managers
8 Compilers
9 IDEs
9 Debuggers
7 Revision Control Apps
6 Doc Generators
Free Web Software
21 Web CMS
14 Wiki Engines
8 Blog Apps
6 eCommerce Apps
5 Human Resource Apps
10 ERP
10 CRM
6 Data Warehouse Apps
8 Business Intelligence
6 Point-of-Sale

Other Articles
Migrating from Windows
Back up your data
20 Free Linux Books
24 Beginner Books
12 Shell Scripting Books

Older Stories
Sunday 04/12
  • First Peek at XBian on the Raspberry Pi 2 (0)

  • Saturday 04/04
  • First Look at OSMC RC on the Raspberry Pi 2 (0)

  • Sunday 03/29
  • First Steps with OpenELEC on the Raspberry Pi 2 (0)
  • Ubuntu MATE 15.04 for Raspberry Pi 2 (0)

  • Monday 03/16
  • MIPS Creator CI20 v Raspberry Pi 2 (0)
  • Raspberry Pi 2: Raspbian (ARMv6) v Linaro (ARMv7) (0)

  • Friday 03/06
  • Raspberry Pi 2 review (0)

  • Sunday 02/22
  • Chess in a Few Bytes (0)
  • Learn the Art of Computer Programming With These Great Free Beginner Books (2)
  • CD Audio Grabbers (0)

  • Vote

    What Linux distribution do you run on your main computer?

    821 votes | 3 comments

    Built with GeekLog and phpBB
    Comments to the webmaster are welcome
    Copyright 2009 - All rights reserved