ftp Command in Linux
The ftp command in Linux transfers and receives files from the remote server. FTP is a File Transfer Protocol that is widely used to transfer or receive files from a remote system over the Internet.
Table of Contents
Here is a comprehensive guide to the options available with the ftp command −
- Prerequisites to Use ftp Command
- Configuring FTP Server
- Syntax of ftp Command
- Options of ftp Command
- FTP Interface Commands
- Examples of ftp Command in Linux
Note − FTP is not a secure protocol. Its traffic is unencrypted and vulnerable to sniffing. It is recommended to use FTP only on trusted networks.
Prerequisites to Use ftp Command
Various FTP servers can be used to transfer files over the Internet, one of them is vsftpd. vsftpd stands for Very Secure FTP Daemon. It is a lightweight and secure FTP server that allows both anonymous and non-anonymous FTP access.
To install vsftpd on Ubuntu, Kali Linux, Raspberry Pi OS, Debian, and other Debian-based distributions, use the command given below −
sudo apt install vsftpd
To install it on Arch Linux, use the following command −
sudo pacman -S vsftpd
To install it on CentOS, use −
sudo yum install vsftpd
On Fedora, use the command given below −
sudo dnf install vsftpd
After the installation, start the service using the systemctl command −
sudo systemctl start vsftpd.service
To verify, check the status −
sudo systemctl status vsftpd.service

Syntax of ftp Command
The syntax of the Linux ftp command is as follows −
ftp [options] [IP]
The [options] field is used to specify the various ftp command options. The [IP] field is used to specify the remote system IP address that is to be accessed.
Configuring FTP Server
After the installation, the FTP needs to be configured using the configuration file. The file can be accessed using any text editor.
sudo nano /etc/vsftpd.conf
Open the file and ensure anonymous_enable is set to NO and local_enable is YES. To enable modifications of remote system files, set write_enable to YES. Save the changes and exit the editor.

Now restart the service to apply the changes −
sudo systemctl restart vsftpd.service
Enable the ports 20 and 21 from the firewall.
sudo ufw allow 20/tcp sudo ufw allow 21/tcp
Options of ftp Command
The options of ftp command are listed below −
Options | Description |
---|---|
-A | To use active mode for transfer |
-4 | To use only IPv4 |
-6 | To use only IPv6 |
-p | To use passive mode for transfer (default) |
-i | To disable interactive prompts for batch transfer |
-e | To disable command editing |
-g | To disable file globbing |
-m | To disable binding for same interface for passive transfer |
-v | To enable verbose mode |
-d | To enable debugging mode |
FTP Interface Commands
The ftp command initiates a separate interface after connecting to the remote system. In the remote system, there is another set of sub-commands that are used for further operations. The sub-commands are listed below −
Commands | Description |
---|---|
! [command [args]] | To invoke the interactive shell on the local system |
$ [macro-name [args]] | To execute a defined macro |
account [passwd] | To supply a password for the remote system |
append | To append a local file on a file on the remote system |
ascii | To set the file transfer type to network ASCII (default) |
binary | To set the file transfer type to binary image |
bye/quit | To end the ftp session |
cd [remote-directory] | To change the directory on the remote system |
chmod [mode] [file-name] | To change the permissions on the remote system |
close/disconnect | To close the ftp session |
delete [remote-file] | To delete a file on the remote system |
dir [remote-directory] [local-file] | To list the directory content on the remote system |
get [remote-file] [local-file] | To retrieve or download files from the remote system |
hash | To print the # sign for each transferred data |
help | To display help |
lcd [directory] | To change the working directory on the local machine. |
ls [remote-directory] [local-file] | To list directory contents on the remote system |
mls [remote-directory] [local-file] | To list the content of multiple directories |
mkdir [directory-name] | To create a directory on the remote system |
mdelete [remote-files] | To delete multiple remote files |
mget [remote-files] | To retrieve multiple files from the remote machine |
mput [local-files] | To send multiple files to the remote machine |
open [host] [port] | To connect to an FTP server at a specified host and port |
put [local-file] [remote-file] | To send or upload a file to the remote system |
pwd | To print the current working directory on the remote system |
rename [from] [to] | To rename a file on the remote system |
rmdir [directory-name] | To remove the directory on the remote system |
status | To show the status ofthe FTP session |
user [user-name] [password] [account] | To login to a FTP server |
Examples of ftp Command in Linux
This section demonstrates the usage of the ftp command in Linux with examples −
Setting Up FTP Connection
Before transferring files, an FTP connection must be established with the remote system. To connect to a remote system, use the ftp command with the IP address of the remote system −
ftp 192.168.0.144
Before setting up the FTP interface, it will prompt for the username and password of the remote system. Once the credentials are added, the FTP connection will be established.

Listing Directories
To list the content of the remote system, use the ls command. To list the contents of the current directory, use the following command −
ls

To list the content of a specific directory, specify the path of the directory −
ls myDirectory
To list the content of multiple directories, use the mls command −
mls mydir1 mydir2
Changing Directory
To change the directory on the remote system, use the cd command with the directory name or path,
cd myDirectory

To go back to the previous directory, use −
cd ..
Creating Directories
To create directories on the remote system, use the mkdir command with the directory name.
mkdir sampleDir

Downloading a File
To download a file from the remote system, use the get command. For example, to download a file test.txt file from the remote machine, use the get command in the following way −
get test.txt
To download the file and save it with a different name on the local system, use the get command in the following way −
get test.txt sample.txt
The above command will download the test.txt file as a sample.txt file on the local system.
To download multiple files, use the mget command in the FTP session −
mget test1.txt test2.txt
Before downloading multiple files, the command will prompt with the [anpqy] option. Here is the breakdown of these options −
a | All | Apply the action to all subsequent files without prompting |
n | No | Skip the current action |
p | Prompt | Ask for confirmation on each action |
q | Quit | Cancel the operation |
y | Yes | Proceed with the current action |
Uploading a File
To upload a file from the local system to a remote system, use the put command −
put test.txt
To upload with a different name, use −
put test.txt sample.txt
The above command will upload the test.txt file as a sample.txt file on the remote system.
To upload multiple files, use the mput command −
mput test1.txt test2.txt
Before uploading multiple files, the command will prompt with the [anpqy] options.
Renaming a File
To rename a file on the remote system, use the rename command. For example, to rename the test.txt file to sample.txt, use the rename command as follows −
rename test.txt sample.txt

Deleting a File
To delete a file on the remote system, use the delete command with the file name.
delete test.txt

To delete multiple files, use the mdelete command −
mdelete test1.txt test2.txt

Before deleting multiple files, the command will prompt with the [anpqy] options.
Closing the FTP Connection
To close the FTP connection, type the exit command and press Enter.
exit

Conclusion
The ftp command in Linux is used to upload and download files from and to a remote system. The FTP is a widely used file transfer protocol that allows the transfer of files over the internet. The FTP traffic is not encrypted, it is always recommended to use it in a secure network.
In this tutorial, we explained the ftp command, its installation, syntax, options, and usage in Linux with examples.