As a programmer, you may have come across Unix-based operating systems at some point. While such traditional systems may seem slightly complex at first, in reality, they are quite interesting to work with once you get the hang of them. Moreover, they’re quite helpful for developers since they’re supported by powerful terminal commands and a modular design.
Thanks to technical advancements though, modern-day Unix-based systems have become much more user-friendly. They can now be used even by the non-programmer community, thanks to versions like Ubuntu, macOS, etc. Such systems are equipped with graphical user interfaces (UIs) that can help even a layman to operate them in an efficient manner.
Speaking of commands, there are different types you can work with on your Linux or Unix-based operating systems. These commands can help you perform a range of functions to control and manage diverse system resources, networks, and drivers, in addition to achieving several other purposes.
In this post, we will highlight one such command group and its functionality – the SCP commands.
What is SCP?
SCP stands for Secure Copy Protocol. It is a network standard that’s used to transfer files between computers connected to a network with a high degree of security. You can use SCP commands on the command line of your Unix-based operating system to transfer, copy, and download files and folders. SCP includes AES-128 bit file encryption over an SSH (Secure Shell) connection, which means that the files transferred can’t be meddled with.
The SCP commands serve these use cases:
- Copying files within the machine
- Copying files from a local host to a remote host
- Copying files from a remote host to a local host
- Copying files between two different remote server hosts
What are SCP Commands?
If you have a Linux or Unix system, you don’t need to learn about enabling SCP commands. This is so because SCP commands are available by default in Linux distributions and other Unix systems as well.
Note: You can learn about all the keywords used with SCP by typing “man scp” on your system’s terminal. This command will give you a manual of all the available parameters and functions taken by SCP and what each one does.
The common syntax for the SCP command is:
scp [options] <file or folder name with extension> <username details and port number> <parameters regarding path>
Let us discuss the options that can be used with SCP:
- -C: C stands for compression. When you use the -C option with SCP, it enables compression on the files that are about to be transferred. After the transfer is completed, the file(s) are decompressed and stored at the destination. This option can be used when you want to achieve greater transfer speeds (smaller file size = better transfer speed).
- -c <cipher>: Here ‘c’ stands for cipher and this option lets you change the cipher name for the encryption. To do this type -c followed by the cipher name that you wish to use. By default, SCP uses the AES-128 encryption method for transferring files securely.
- -i <identity_file>: ‘i’ here stands for identity file. This means that you can mention an identity file or private key for authentication using the -i option.
- -l <limit>: l stands for limit bandwidth. You can use this option to set a threshold bandwidth (in kilobits/second) for network usage.
- -B: This option is used to enable batch mode during a file copy process.
- -F <ssh_config>: This option is used to assign a different ssh_client file while copying in scenarios where you need to use multiple networks. You can assign per-user SSH configuration files using this option’s parameter.
- -P <port>: Using this option, you can specify the SSH port number depending on your requirement.
- -p: This option allows you to preserve file permissions and modify permissions while copying files.
- -q: This option will run the SCP command in quiet mode, which means that all the progress meter, warnings, and diagnostics messages will not appear during the copy or transfer.
- -r: This option is used to copy files or folders recursively. If you want to copy all the files from a folder, then you must use the -r recursion option.
- -S <program>: This option is used to specify the program that is used for connecting to the networks.
- -v: v stands for verbose. This option will enable the step-by-step progress of the SCP command executed. This might help with debugging.
Now that we took a glance at these options, let’s take a look at using these options in various SCP commands.
How to Use SCP commands?
Here are some common scenarios where you can use SCP commands for transferring and copying files:
1. Copying from local Host to the remote host
In this scenario, we must copy files from the localhost (your computer) to a remote host (other computer in the same network). We can achieve this by using the following SCP command:
scp -v <filename with extension> <username@sourcehost>: <source file path>
- -v option helps with getting a verbose output. This will help you debug the process.
- Enter your filename with an extension, for example; hello.txt or number.csv.
- Type in your username which is the name of the account that you are logged into on your computer.
- Source host is your IP address in the network, you can get this by using the “ifconfig -a” command in the terminal.
- Specify the source file’s path to finish the command and then click enter to execute.
Running this command will output a string of lines that show the progress of the copying and transferring phase (thanks to the verbose option used). After the process is completed, it will show a few lines confirming the file transfer. This way you can safely copy files from your localhost to a remote host using a simple SCP command.
2. Copying from Remote Host to Local Host
In this scenario, we must copy files from a remote host to a local host. We can achieve this by using the SCP command mentioned below:
scp -v <filename with extension> <username@sourcehost>: <source file path> <target file path>
3. Copying Multiple Files to a Remote Host
In this scenario, we must copy multiple files to any remote host. We can achieve this by using the following SCP command:
scp <filename 1> <filename 2> <username@sourcehost>: <source directory path>
4. Copying Files Across Two Remote Systems
In this scenario, we must copy files across two remote hosts. We can achieve this by using the following SCP command:
scp <username@sourcehost>: <source file path> <username@targethost>: <target file path>
These are some of the most common scenarios where you can use SCP commands to copy and transfer files across the network in a simple and secure way.
So that was all about SCP and how you can use SCP commands to simplify the process of file transfer amongst work or home networks. Unix-based systems always focus on security and functionality over anything else, and SCP commands fulfill both these purposes extremely well. We hope you could learn some of the basics about SCP commands through this post, and you will be able to use them in your personal or professional work.
If you’ve found a liking to working on the terminal, we suggest you take a look at other similar commands that can help you be more productive.
People are also reading: