# scp command can be used to copy files from local to remote system in Linux

SCP stands for ‘Secure Copy’. scp is a command-line utility offered by Linux.

Scp can be a very good option to make a secure transfer of the files and directories.

You can heavily rely on the scp command for confidentiality and integrity respectively.

## Getting started with scp command .

You can transfer files using the scp command.

scp [Option] [source_file_name] [user@destination_Host]:destination_folder

The colon (:) symbol is used in syntax. It separates between the local and remote locations.We use the colon (:) with the remote system to specify the directory.In case we do not specify the target directory, then the files will be copied to the home directory.

## Options used with scp oppress.

Some of the most popular options used with the scp command .

## Copying files from local to remote system.

Scp allows you to transfer files from your local system to a remote system .

General Syntax: oppress.

scp [file_name] remote_user@host:[destination_folder]

Let us check the output on the remote system .

root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav# ls
apache-tomcat-9.0.8.tar.gz
root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#

Thus, the file is successfully copied to the remote system.

## Copying files to a remote system.

General Syntax:

scp [file 1] [file 2] [file n] remote_username@remote_host:[specific directory]

Example:

scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb root@143.110.178.221:gaurav

Output:

gaurav@ubuntu:~$scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb root@143.110.178.221:gaurav root@143.110.178.221's password: ath.html 100% 199KB 94.7KB/s 00:02 abc.txt 100% 0 0.0KB/s 00:00 ppa-purge_0.2.8+bzr56_all.deb 100% 4360 42.2KB/s 00:00 gaurav@ubuntu:~$

On remote system:

root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav# ls -l
total 9800
-rw-r--r-- 1 root root       0 Oct  5 08:58 abc.txt
-rw-r--r-- 1 root root 9818695 Oct  5 08:35 apache-tomcat-9.0.8.tar.gz
-rw-r--r-- 1 root root  204057 Oct  5 08:58 ath.html
-rw-r--r-- 1 root root    4360 Oct  5 08:58 ppa-purge_0.2.8+bzr56_all.deb
root@ubuntu-s-1vcpu-1gb-blr1-01:~/gaurav#

## Copying a directory to a remote system.

The -r option is used to copy directories recursively.That means, all the sub-folder will also be copied.

General syntax:

scp -r [directory path] remote_username@remote_host:[target_directory]

Example:

scp -r PycharmProjects root@143.110.178.221:gaurav

Output:

gaurav@ubuntu:~$scp -r PycharmProjects root@143.110.178.221:gaurav root@143.110.178.221's password: __main__.py 100% 623 7.8KB/s 00:00 __init__.py 100% 23 0.4KB/s 00:00 completion.py 100% 2929 28.1KB/s 00:00 search.py 100% 4728 38.7KB/s 00:00 uninstall.py 100% 2963 32.5KB/s 00:00 hash.py 100% 1681 21.3KB/s 00:00 check.py 100% 1430 16.8KB/s 00:00 configuration.py 100% 7125 50.4KB/s 00:00 show.py 100% 6289 49.8KB/s 00:00 download.py 100% 6623 48.2KB/s 00:00 gaurav@ubuntu:~$  

## Displaying detailed information about the .

You can use the -v (lowercase v) option to display the information about the files that are being copied on.

General Syntax:

scp -v [file_name] user_name@user_host:<folder>

Example:

scp -v apache-tomcat-9.0.8.tar.gz root@159.89.170.11:team

Output:

gaurav@ubuntu:~$scp -v apache-tomcat-9.0.8.tar.gz root@159.89.170.11:team Executing: program /usr/bin/ssh host 159.89.170.11, user root, command scp -v -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017 debug1: Reading configuration data /home/gaurav/.ssh/config debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug1: Connecting to 159.89.170.11 [159.89.170.11] port 22. debug1: Connection established. debug1: key_load_public: No such file or directory debug1: identity file /home/gaurav/.ssh/id_rsa type -1 apache-tomcat-9.0.8.tar.gz 100% 9589KB 99.8KB/s 01:36 debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: channel 0: free: client-session, nchannels 1 debug1: fd 0 clearing O_NONBLOCK debug1: fd 1 clearing O_NONBLOCK Transferred: sent 9826736, received 4016 bytes, in 97.2 seconds Bytes per second: sent 101133.9, received 41.3 debug1: Exit status 0 gaurav@ubuntu:~$


## Transferring files between two remote hosts wirelessly.

You can transfer files and directories between two remotes hosts.

General Syntax:

scp remote_user_1@host_1:/[file_name] remote_user_2@host_2:[folder_to_save]

The syntax seems a bit wider but is pretty simple.

Example:

scp -r root@68.183.82.183:gaurav root@159.89.170.11:/team

Output:

gaurav@ubuntu:~$scp -r root@68.183.82.183:/gaurav root@159.89.170.11:/team root@68.183.82.183's password: 1.py 100% 134 261.3KB/s 00:00 variables.py 100% 377 949.2KB/s 00:00 abc.txt 100% 0 0.0KB/s 00:00 ath.html 100% 199KB 41.8MB/s 00:00 gaurav@ubuntu:~$

## Transfer files from the remote system to the local system.

You can easily transfer the files or directories from the remote system to your local system .

General Syntax:

scp remote_username@user_host:/files/file.txt /[folder_of_local_system]

Output:

gaurav@ubuntu:~$scp root@159.89.170.11:how.txt . root@159.89.170.11's password: how.txt 100% 11 0.1KB/s 00:00 gaurav@ubuntu:~$

Output:

gaurav@ubuntu:~$ls -l how.txt -rw-r--r-- 1 gaurav gaurav 11 Oct 6 09:49 how.txt gaurav@ubuntu:~$ 

## Compressing files to make quicker transfers.

Using the -Coption compress the larger size files facilitates a faster transfer.

General Syntax:

scp -C [file_name] user_name@user_host:[target_folder]

Transfer without -C option:

gaurav@ubuntu:~$scp -rv dlink root@68.183.82.183:team Executing: program /usr/bin/ssh host 68.183.82.183, user root, command scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017 debug1: Reading configuration data /home/trinity/.ssh/config debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug1: Connecting to 68.183.82.183 [68.183.82.183] port 22. debug1: Connection established. debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: channel 0: free: client-session, nchannels 1 debug1: fd 0 clearing O_NONBLOCK debug1: fd 1 clearing O_NONBLOCK Transferred: sent 7516504, received 4008 bytes, in 74.6 seconds Bytes per second: sent 100693.7, received 53.7 debug1: Exit status 0 gaurav@ubuntu:~$ 

Transfer with -C option:

gaurav@ubuntu:~$scp -Crv dlink root@68.183.82.183:team Executing: program /usr/bin/ssh host 68.183.82.183, user root, command scp -v -r -t team OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017 debug1: Reading configuration data /home/trinity/.ssh/config debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug1: Connecting to 68.183.82.183 [68.183.82.183] port 22. debug1: Connection established. . . webupload.img 100% 1834KB 98.7KB/s 00:18 Sending file modes: C0664 1877552 router.img Sink: C0664 1877552 router.img router.img 100% 1834KB 100.3KB/s 00:18 Sink: E Sending file modes: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip Sink: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip DSL-2750U-Release-IN-T-01.00.07.zip 100% 3666KB 218.5KB/s 00:16 Sink: E debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: channel 0: free: client-session, nchannels 1 debug1: fd 0 clearing O_NONBLOCK debug1: fd 1 clearing O_NONBLOCK Transferred: sent 7518864, received 3828 bytes, in 51.0 seconds Bytes per second: sent 100245.4, received 51.0 debug1: Exit status 0 debug1: compress outgoing: raw data 7511925, compressed 7513136, factor 1.00 debug1: compress incoming: raw data 1467, compressed 999, factor 0.68 gaurav@ubuntu:~$

Here, we can easily observe that using the -C option with the scp command has allowed us to compress the file over the network thus proving to be a time-saver option.

## Using a different SSH port for file transfer .

While using the scp command the default port deployed is port 22.Scp command to use the port of your choice.

General Syntax:

cp -P [new_port_number] [file_name/directory_name] remote_user@host:[destination_folder]

Example:

scp -P 4248 dlink root@68.183.82.183:team