Use the scp command to transfer files from the remote operating system server to the local operating system, or copy from the local operating system to the remote operating system. This command uses the SSH service for authentication and encrypts the transmitted data, so it can use the username and password for authentication, or the key for authentication.
Basic format
scp source target
Copy local files to remote server
[student@servera ~]$ scp log.tar root@serverb:/logbackup
The authenticity of host 'serverb (172.25.250.11)' can't be established.
ECDSA key fingerprint is SHA256:BCd8VCfEpGbUo3zb1De0hd1Q5nOMEzYNpMFu5o7j4Fg.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'serverb,172.25.250.11' (ECDSA) to the list of known hosts.
root@serverb's password:
log.tar 100% 11MB 20.8MB/s 00:00
[student@servera ~]$ ssh root@serverb "ls /logbackup"
root@serverb's password:
log.tar
-
root@ is optional, if not specified, your current local user will be used. The user you are using must have corresponding permissions to the corresponding directory on the remote host.
- Like ssh, when you connect for the first time, there will be a security prompt. The option yse is fine, because scp is part of OpenSSH.
Copy files from remote to local
[student@servera ~]$ scp root@serverb:/logbackup/log.tar backup/
root@serverb's password:
log.tar 100% 11MB 25.5MB/s 00:00
[student@servera ~]$ ls backup/
log.tar
If it is a directory, we can use the -r option to recursively copy the entire directory content
[student@servera ~]$ scp -r root@serverb:/var/log/ backup/
root@serverb's password:
lastlog 100% 285KB 5.9MB/s 00:00
README 100% 1040 260.8KB/s 00:00
wtmp 100% 6912 2.6MB/s 00:00
btmp 100% 0 0.0KB/s 00:00
audit.log 100% 208KB 8.0MB/s 00:00
sssd.log 100% 0 0.0KB/s 00:00
sssd_implicit_files.log 100% 109 32.9KB/s 00:00
sssd_nss.log 100% 94 8.6KB/s 00:00
rhsm.log 100% 3642 1.0MB/s 00:00
tuned.log 100% 2434 904.9KB/s 00:00
messages 100% 1459KB 18.1MB/s 00:00
secure 100% 8298 3.4MB/s 00:00
maillog 100% 0 0.0KB/s 00:00
spooler 100% 0 0.0KB/s 00:00
dnf.log 100% 107KB 3.4MB/s 00:00
dnf.librepo.log 100% 245KB 8.4MB/s 00:00
dnf.rpm.log 100% 21KB 2.3MB/s 00:00
hawkey.log 100% 18KB 3.8MB/s 00:00
cron 100% 7166 706.4KB/s 00:00
boot.log 100% 0 0.0KB/s 00:00
We can also use scp to copy a file from a remote host to another host
[student@workstation ~]$ scp student@servera:/home/student/log.tar student@serverb:/home/student/
student@serverb's password:
log.tar 100% 670KB 19.6MB/s 00:00
Connection to servera closed.
[student@workstation ~]$ ssh student@serverb "ls -l"
total 672
-rw-rw-r--. 1 student student 686080 Nov 6 20:54 log.tar