scp Command in Linux

Introduction

In this tutorial, delve into using the Linux scp (secure copy) command for secure file and directory transfers between local and remote systems. As a key component of the SSH (Secure Shell) suite, scp offers a robust method for data transfer over networks. This guide covers scp command syntax, secure file copying between systems, and recursive directory copying. Master vital networking and communication skills for any Linux systemadmin.

Introduction to scp Command

This section introduces the scp (secure copy) command, a crucial tool for systemadmin tasks. Use it to securely copy files and directories between your local Linux system and remote servers.

The scp command, integral to the SSH (Secure Shell) suite, ensures secure data transmission over networks. Employing the SSH protocol, scp encrypts data, safeguarding the confidentiality and integrity of files during transfer.

Let's begin with the fundamental syntax of the scp command:

scp [options] source_file_or_directory destination_file_or_directory

Here, the source_file_or_directory can be a file or directory on your local machine, or a remote file or directory specified as user@host:path. Similarly, the destination_file_or_directory defines the local or remote destination.

For example, to securely transfer a file from your local host to a remote server, use this command:

scp ~/project/file.txt labex@remote_host:/home/labex/project/

This command securely copies file.txt from the local ~/project directory to /home/labex/project/ on the remote host.

Example output:

file.txt                                    100%  123     0.1KB/s   00:00

The output confirms successful file transfer to the remote system.

Conversely, to copy a file from a remote host to your local machine, use:

scp labex@remote_host:/home/labex/project/file.txt ~/project/

This command securely retrieves file.txt from /home/labex/project/ on the remote host and saves it to your local ~/project/ directory.

Example output:

file.txt                                    100%  123     0.1KB/s   00:00

The following steps will guide you in using scp with advanced options to copy files and directories between local and remote hosts effectively.

Copying Files Between Local and Remote Hosts

This section guides you through using the scp command to copy files back and forth between your local system and remote hosts.

First, let's transfer a file from the local system to the remote host. Ensure you're in the ~/project directory locally:

scp file.txt labex@remote_host:/home/labex/project/

This command securely copies the file.txt file from the local ~/project directory to the /home/labex/project/ directory on the remote host.

Example output:

file.txt                                    100%  123     0.1KB/s   00:00

Next, let's copy a file from the remote host to the local system:

scp labex@remote_host:/home/labex/project/file.txt ~/project/

This command securely copies the file.txt file from the /home/labex/project/ directory on the remote host to the local ~/project/ directory.

Example output:

file.txt                                    100%  123     0.1KB/s   00:00

scp also supports copying multiple files simultaneously. To copy two files from the local host to the remote host:

scp file1.txt file2.txt labex@remote_host:/home/labex/project/

This command copies both file1.txt and file2.txt from the local ~/project directory to the /home/labex/project/ directory on the remote host securely.

Example output:

file1.txt                                   100%  123     0.1KB/s   00:00
file2.txt                                   100%  456     0.4KB/s   00:00

The next step demonstrates using scp to recursively copy entire directories between your local and remote systems.

Recursive Copying of Directories with scp

This section focuses on using the scp command to recursively copy directories between local and remote hosts, a common task for any systemadmin.

To copy a directory recursively, utilize the -r (recursive) option with scp. Start by creating a directory locally and adding files:

mkdir ~/project/directory1
touch ~/project/directory1/file1.txt
touch ~/project/directory1/file2.txt

Now, copy the entire directory1 from the local host to the remote host:

scp -r ~/project/directory1 labex@remote_host:/home/labex/project/

This command securely transfers the entire directory1, including all files and subdirectories, from the local ~/project directory to the /home/labex/project/ directory on the remote host.

Example output:

directory1/                                 100%    0     0.0KB/s   00:00
directory1/file1.txt                         100%  123     0.1KB/s   00:00
directory1/file2.txt                         100%  123     0.1KB/s   00:00

To copy the directory1 from the remote host back to the local system:

scp -r labex@remote_host:/home/labex/project/directory1 ~/project/

This command securely replicates directory1, along with its contents, from the /home/labex/project/ directory on the remote host to the local ~/project/ directory.

Example output:

directory1/                                 100%    0     0.0KB/s   00:00
directory1/file1.txt                         100%  123     0.1KB/s   00:00
directory1/file2.txt                         100%  123     0.1KB/s   00:00

You now know how to leverage scp to recursively copy directories between local and remote hosts.

Summary

This tutorial provided a comprehensive guide to the scp (secure copy) command, a fundamental tool for secure file and directory transfers between local and remote Linux systems. It covered scp syntax, secure file copying between systems, and advanced options for efficient data management. Mastering scp is crucial for any systemadmin working with Linux environments. You learned how to copy files from your local host to a remote host, and vice-versa. You also mastered the ability to use advanced scp features for more flexible and efficient file and directory management.

Key topics covered in this lab:

  1. Introduction to the scp command and its practical applications.
  2. Securely copying files between local and remote hosts using scp.
  3. Recursive copying of directories with scp for efficient data transfer.

400+ Linux Commands