How to Use SFTP Command to Transfer Files

Introduction

Before we begin talking on how to use sftp command to transfer files. Let’s briefly understand - What is an SFTP command?

SFTP (Secure File Transfer Protocol), is a command-line tool used for secure file transfers between a local host and a remote server. It operates over the SSH (Secure Shell) protocol, providing encrypted and authenticated connections.

When using the SFTP command, you can perform various operations, including uploading and downloading files, navigating directories, creating directories, deleting files, and modifying file permissions.

In this tutorial, we will provide an overview of how to use the SFTP command to transfer files securely between your local system and a remote server. We will also address a few FAQs on how to use sftp command to transfer files.

Before you Begin

You need to write permission on the remote system in order to transfer files through SFTP.

The sftp command should always be used inside a screen or tmux session when transferring large files.

The directory from which you run the sftp command is called the local working directory.

💡
Do not mix up SFTP and FTPS. Both protocols serve the same function. But FTPS, which stands for FTP Secure, is an addition to the standard FTP protocol that supports TLS.

Establishing an SFTP connection

SFTP is a client-server protocol. It is a component of SSH and is compatible with all of its authentication mechanisms.

Use the sftp command along with the username for the remote server, the IP address, or the domain name to establish an SFTP connection to a remote system:

sftp remote_username@server_ip_or_hostname

You will be prompted to enter the user password if you are connecting to the host using password authentication.

Once connected, the sftp prompt will show up, allowing you to interact with the remote server:

Output

Connected to remote_username@server_ip_or_hostname.
sftp>

If the remote SSH server is not listening on the standard port 22, use the -P option to set the SFTP port:

Output

sftp -P custom_port remote_username@server_ip_or_hostname

SFTP Commands

The majority of SFTP commands are similar to or equivalent to Linux shell commands.

Type help or ? to view a list of all the SFTP commands that are available.

help

This will produce a lengthy list of all commands that are accessible, along with a brief description of each command:

Output

Available commands:
bye                                Quit sftp
cd path                            Change remote directory to 'path'
...
...
version                            Show SFTP version
!command                           Execute 'command' in local shell
!                                  Escape to local shell
?                                  Synonym for help

The remote user's home directory is your current working directory when you are logged into the remote server. You can verify that by typing:

pwd
Output

Remote working directory: /home/remote_username

Use the ls command to list the files and directories:

ls

Use the cd command to go to another directory. For instance, you would enter the following to navigate to the /tmp directory:

cd /tmp

The commands listed above are used to navigate and work on the remote location.

The SFTP shell also includes commands for managing files, information, and local navigation. Local commands begin with the letter l.

lpwd
Output

Local working directory: /home/local_username

Transferring Files with SFTP

You would type the following, for instance, to print the local working directory:

You can send files between two machines safely using SFTP.

When working on a desktop system, you can connect to the remote server and download or upload files using a GUI SFTP client like WinSCP or FileZilla.

When working on a server without a GUI and wanting to transfer files or carry out other operations on remote files, the sftp command is helpful.

Downloading Files with the SFTP Command

Use the get command to download a single file from the remote server:

get filename.zip

The output would appear as follows:

Output

Fetching /home/remote_username/filename.zip to filename.zip
/home/remote_username/filename.zip                           100%   24MB   1.8MB/s   00:13

When using sftp to download files, the files are downloaded to the directory from which the sftp command was typed.

If you want to save the downloaded file under a different name, specify the new name as the second argument:

get filename.zip local-filename.zip 

Use the recursive -r option to download a directory from the remote system:

If a file transfer fails or is interrupted, use the reget command to resume it.

get -r remote_directory

The syntax for both get and reget is the same:

reget filename.zip

Uploading Files with the SFTP Command

Use the put command to upload a file from the local system to the remote SFTP server:

put filename.zip

The output should resemble this:

Output

Uploading filename.zip to /home/remote_username/filename.zip
filename.zip                          100%   12MB   1.7MB/s   00:06

Use the absolute path of the file you want to upload if it is not located in your current working directory.

You can use the same options provided with the get command when working with put.

Type the following to upload a local directory:

put -r locale_directory

To continue an interrupted upload:

reput filename.zip

File Manipulations with SFTP

Normally, you would connect to a remote server through SSH and carry out your tasks using the shell terminal. However, in other cases, the user may only have SFTP access to the remote server.

You can run a few simple file manipulation commands using SFTP. Here are a few examples of how to use the SFTP shell:

  • Obtain information about the disk usage by the remote system:
  • Make a new directory on the remote server:
  • Change the name of a file on a distant server:
  • Remove a file from the remote server:
  • Remove a directory from the remote server:
  • Changing a file's permissions on a remote system:
  • Changing a file's owner on a remote system:
df
Output

        Size         Used        Avail       (root)    %Capacity
    20616252      1548776     18002580     19067476           7%
mkdir directory_name
rename file_name new_file_name
rm file_name
rmdir directory_name
chmod 644 file_name
chown user_id file_name

The user ID is required when using the chown and chgrp commands.

  • Change a remote file's group owner by using:
chgrp group_id file_name

Type bye or quit to end the connection when you are done.

FAQs to Install FFmpeg on CentOS 7

How does SFTP ensure security during file transfers? 

SFTP uses SSH encryption and authentication protocols to secure the connections and protect file transfers from unauthorized access or interception.

How do I access SFTP on my local system? 

Open a terminal or command prompt and type sftp [user@]host where "user" is your username and "host" is the remote server's hostname or IP address.

How do I navigate directories using SFTP?

Once connected, you can use commands like cd to change directories, ls to list files, and pwd to show the current directory on the remote server.

Can I transfer multiple files at once using SFTP? 

Yes, you can transfer multiple files by specifying their names after the put or get command, separated by spaces.

How do I delete files from the remote server using SFTP?

Within the SFTP session, use the rm command followed by the file's name or path to delete files from the remote server.

Is it possible to automate file transfers with SFTP? 

Yes, you can create script files using the SFTP commands and automate file transfers by running the script.

Can I use SFTP to transfer files between remote servers without involving my local system? 

Yes, if you have SSH access to both remote servers, you can use SFTP to transfer files directly between them without involving your local system.

Conclusion

In this tutorial, you have learned how to use the sftp command to download and upload files to your remote SFTP server.

You may also want to configure SSH key-based authentication so that you can login to your Linux servers without typing a password. When connecting to the same systems frequently, you can streamline your workflow by listing all of your connections in the SSH config file.

If you have any queries, feel free to drop a comment below, and we'll be happy to help.