FTP (File Transfer Protocol) is a standard network protocol used to transfer files to and from a remote network.

In this tutorial, we will show you how to use the Linux ftp command through practical examples.

In most cases, you will use a desktop FTP client to connect to the remote server and download or upload files. However, the ftp command is useful when you work on a server without GUI and you want to transfer files over FTP to or from a remote server.

Before you Begin

When transferring data over ftp the connection is not encrypted. For a secure data transfer, use SCP.

To be able to transfer files you must have at least read permissions on the source file and write permission on the target system.

When transferring large files it is recommended to run the ftp command inside a screen or tmux session.

The directory from where you run the ftp command is the local working directory.

Establishing an FTP connection

  1. To open an ftp connection to a remote system use the ftp command followed by the remote server IP address or domain name:

    ftp 192.168.42.77
  2. If the connection is established, a confirmation message will be displayed and you will be prompted to enter your FTP username, in this example the FTP username is linuxize:

    220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
    220-You are user number 1 of 50 allowed.
    220-Local time is now 21:35. Server port: 21.
    220-This is a private system - No anonymous login
    220-IPv6 connections are also welcome on this server.
    220 You will be disconnected after 15 minutes of inactivity.
    Name (192.168.42.77:localuser): linuxize

    You may see a different confirmation message depending on the FTP service running on the remote server.

  3. Once you enter the username you will be prompted to type your password:

    Password:
  4. If the password is correct, the remote server will display a confirmation message and the ftp> prompt.

    230 OK. Current restricted directory is /
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp>

If the FTP server you are accessing accepts anonymous ftp accounts, and you want to log in as an anonymous user, use anonymous as username and your email address as a password.

Common FTP Commands

Many FTP commands are similar or identical to the commands you would type in Linux shell prompt.

Below are some of the most common FTP commands

  • help or ? – list all available FTP commands.
  • cd – change directory on the remote machine.
  • lcd – change directory on the local machine.
  • ls – list the names of the files and directories in the current remote directory.
  • mkdir – create a new directory within the current remote directory.
  • pwd – print the current working directory on the remote machine.
  • delete – remove a file in the current remote directory.
  • rmdir– remove a directory in the current remote directory.
  • get – copy one file from the remote to the local machine.
  • mget – copy multiple files from the remote to the local machine.
  • put – copy one file from the local to the remote machine.
  • mput – copy one file from the local to the remote machine.

Downloading Files with the FTP Command

Once you are logged in, your current working directory is the remote user home directory.

When downloading files with the ftp command, the files will be downloaded to the directory from which you typed the ftp command.

If you want to download the files to another local directory, switch to it by using the lcd command.

Let’s say we want to download the files to the ~/ftp_downloads directory:

lcd ~/ftp_downloads

To download a single file from the remote server, use the get command. For example to download a file named backup.zip use the following command:

get backup.zip

The output should look something like this:

200 PORT command successful
150-Connecting to port 60609
150 6516.9 kbytes to download
226-File successfully transferred
226 2.356 seconds (measured here), 2.70 Mbytes per second
6673256 bytes received in 2.55 seconds (2.49 Mbytes/s)

To download multiple files at once, use the mget command. You can provide a list of individual file names or use wildcard characters.

mget backup1.zip backup2.zip

When downloading multiple files you will be prompted for confirmation for each file.

mget backup1.zip? y
200 PORT command successful
150 Connecting to port 52231
226-File successfully transferred
226 0.000 seconds (measured here), 31.51 Kbytes per second
14 bytes received in 0.00058 seconds (23.6 kbytes/s)
mget backup2.zip? y
200 PORT command successful
150-Connecting to port 59179
150 7.2 kbytes to download
226-File successfully transferred
226 0.000 seconds (measured here), 16.68 Mbytes per second
7415 bytes received in 0.011 seconds (661 kbytes/s)

Once you are done downloading files from your remote FTP server close the connection with bye or quit.

quit
221-Goodbye. You uploaded 0 and downloaded 6544 kbytes.
221 Logout.

Uploading Files with the FTP Command

To upload a file from a local directory to a remote FTP server use the put command:

put image.jpg

The output should look something like this:

200 PORT command successful
150 Connecting to port 34583
226-File successfully transferred
226 0.849 seconds (measured here), 111.48 Kbytes per second
96936 bytes sent in 0.421 seconds (225 kbytes/s)

If you want to upload a file that is not in your current working directory use the absolute path to the file.

To upload multiple files from a local directory to a remote FTP server use the mput command:

mput image1.jpg image2.jpg
mput image1.jpg? y
200 PORT command successful
150 Connecting to port 41075
226-File successfully transferred
226 1.439 seconds (measured here), 102.89 Kbytes per second
151586 bytes sent in 1.07 seconds (138 kbytes/s)
mput image2.jpg? y
200 PORT command successful
150 Connecting to port 40759
226-File successfully transferred
226 1.727 seconds (measured here), 111.75 Kbytes per second
197565 bytes sent in 1.39 seconds (138 kbytes/s)

When uploading multiple files you will be prompted for confirmation for each file you want to upload.

Once you are done uploading files to your remote FTP server close the connection with bye or quit.

Conclusion

In this tutorial, you learned how to use the ftp command to download and upload files to your remote FTP server.