FTP (File Transfer Protocol) is a network protocol used for transferring files between a client and a server on a computer network.
In the early days, FTP applications were initially designed for the command line, predating the widespread adoption of GUI (Graphical User Interface) Operating Systems.
Although numerous GUI-based FTP clients have emerged over time, developers continue to create CLI-based (Command-Line Interface) FTP clients to cater to users who favor the traditional method.”
Here’s a list of the best command-line-based FTP clients for Linux.
1. FTP
Linux Operating Systems ships with built-in FTP clients that you can easily access by entering the ftp
command in your terminal.
With FTP you can connect to servers anonymously (if this feature is enabled on the server) or use your user credentials, download/upload files between your local machine and connected servers, use aliases, etc.
Also, when using FTP for transferring files between computers, the connection is not secure and the data is not encrypted. For a secure data transfer, use sFTP (Secure File Transfer Protocol) or SCP (Secure Copy).
2. LFTP
LFTP is a free and open-source command-line utility designed for several file transfer protocols (e.g. sftp, fish, torrent) on Unix and like Operating Systems.
It features bookmarks, job control, support for the readline library, a built-in mirror command, and support for multiple file transfers in parallel.
lftp is available to install from the default repositories using the package manager as shown.
$ sudo apt install lftp [On Debian, Ubuntu and Mint] $ sudo yum install lftp [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] $ sudo emerge -a sys-apps/lftp [On Gentoo Linux] $ sudo apk add lftp [On Alpine Linux] $ sudo pacman -S lftp [On Arch Linux] $ sudo zypper install lftp [On OpenSUSE]
3. NcFTP
NcFTP is a free, cross-platform FTP client and the first-ever alternative to the standard FTP program developed to boast ease of use and several feature and performance enhancements to FTP.
Its features include host redialing, background processing, auto-resume downloads, filename completion, progress meters, and support for other utility programs such as ncftpput and ncftpget.
NcFTP is available to install from the default repositories using the package manager as shown.
$ sudo apt install ncftp [On Debian, Ubuntu and Mint] $ sudo yum install ncftp [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] $ sudo emerge -a sys-apps/ncftp [On Gentoo Linux] $ sudo apk add ncftp [On Alpine Linux] $ sudo pacman -S ncftp [On Arch Linux] $ sudo zypper install ncftp [On OpenSUSE]
4. cbftp
cbftp is a flexible FTP/FXP client that enables users to transfer large files securely and efficiently without using emails. It typically works in the command line but you can run it in a semi-GUI using ncurses.
Its features include an internal viewer that supports multiple encodings, skip-listing, remote commands for UDP call commands such as race, download, fxp, raw, idle, etc., and data encryption with AES-256, among others.
5. Yafc
Yafc is an open-source FTP client designed as a replacement for the standard FTP program on Linux systems with support for POSIX-compliant systems.
It is completely free with a rich features list that includes recursive get/put/fxp/ls/rm, queuing, tab completion, aliases, and support for SSH2 and proxy.
Yafc is available to install from the default repositories using the package manager as shown.
$ sudo apt install yafc [On Debian, Ubuntu and Mint] $ sudo yum install yafc [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] $ sudo emerge -a sys-apps/yafc [On Gentoo Linux] $ sudo apk add yafc [On Alpine Linux] $ sudo pacman -S yafc [On Arch Linux] $ sudo zypper install yafc [On OpenSUSE]
6. Wget
wget is primarily designed for downloading files but also supports FTP and FTPS. It is known for its simplicity and ability to download recursively.
To use wget to download files from an FTP server, you can simply specify the username, password, and FTP URL of the file you want to download.
$ wget ftp://username:password@ftp_server_address/path/to/file
Do you have any experience with these command-line FTP clients? Or do you know alternatives that should be on this list? Feel free to drop your comments below.
midnight commander, F9 -> FTP, SFTP, SSH
I highly recommend to consider reviewing and adding Wget and cURL to your list .They are multi platform good tools that can run on both Linux, MAC and also Windows.
I covered them in this article.
Those both stuck and can’t mirror a directory tree like LFTP can do.
for wget, you can use its partner “wput“, but wget can’t itself upload.