如何用 scp 在本地和远程主机之间复制文件
2024年06月30日
40
使用 scp 命令可以将文件从远程操作系统服务器传输到本地操作系统,或从本地操作系统复制到远程操作系统。此命令使用 SSH 服务进行身份验证,并对传输的数据进行加密,所以它即可以使用用户名密码的方式进行身份验证,也可以使用密钥的方式进行身份验证。

image.png

基本格式
scp source target
将本地文件复制到远端服务器上
[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@ 是可选项,如果不指定,则使用你当前的本地用户。你所使用的用户必须要对远端主机上的对应目录有相应的权限。

  • 和 ssh 一样,第一次连接的时候,会有一个安全性的提示,选项 yse 就可以了,因为 scp 就是 OpenSSH 的一部分。

从远端就复制文件到本地
[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

如果是目录,我们可以通过 -r 选项进行递归的方式,复制整个目录内容

[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

我们还可以使用 scp 把一个文件从远端的一台主机,复制到另外一台主机上

[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