scp
scp
scp 命令是用于通过 SSH 协议安全地将文件复制到远程系统和从远程系统复制文件到本地的命令。使用 SSH 意味着它享有与 SSH 相同级别的数据加密,因此被认为是跨两个远程主机传输文件的安全方式。
Linux SCP 命令是一种在两个远程节点之间传输文件的便捷且安全的方式,而无需担心攻击者窥探你的数据。
目录
[toc]
1、基本语法
下面提供了 SCP 命令的基本语法:
$scp[option] /path/to/source/file user@server-ip:/path/to/destination/directory
/path/to/source/file
– 这是打算复制到远程主机的源文件。
user@server-IP:
– 这是远程系统的用户名和 IP 地址。请注意 IP 地址后面加冒号。
/path/to/destination/directory
– 这是文件将复制到的远程系统上的目标目录。
以下是scp命令常用的几个选项:
-C
- 这会在复制过程中压缩文件或目录。-P
- 如果默认 SSH 端口不是 22,则使用此选项指定 SSH 端口。-r
- 此选项递归复制目录及其内容。-p
- 保留文件的访问和修改时间。
2、案例演示
1️⃣ 案例1:将文件复制到远程 Linux 服务器
在下面的示例中,我将logs.tar.gz 复制到远程主机的/root目录下。远程主机IP为172.29.9.33,用户名为root。(本地主机ip为172.29.9.32)
1.scp传输文件
我们先用dd命令在本地生成一个大文件logs.tar.gz用于测试:
[root@k8s-node1 ~]#dd if=/dev/zeroof=logs.tar.gzbs=1Mcount=10001000+0recordsin1000+0recordsout1048576000bytes(1.0 GB) copied,4.53084 s,231 MB/s[root@k8s-node1 ~]#ll -h logs.tar.gz -rw-r--r--1rootroot1000MFeb2610:02logs.tar.gz
开始使用scp命令将文件复制到远程 Linux 服务器:
[root@k8s-node1 ~]#scp logs.tar.gz root@172.29.9.33:/root/Theauthenticityofhost'172.29.9.33 (172.29.9.33)'can't be established.ECDSA key fingerprint is SHA256:XfMhwZeoqC6kPHaF1uPzLdY9t2ZgNoNvyEd0kJd24eY.ECDSA key fingerprint is MD5:ec:5e:37:9d:fc:e7:af:e1:9e:3a:ac:21:81:92:b5:91.Are you sure you want to continue connecting (yes/no)?yesWarning:Permanently added '172.29.9.33'(ECDSA) to the list of known hosts.root@172.29.9.33'spassword:logs.tar.gz100%1000MB50.9MB/s00:19
到远程主机查看传输过去的文件是否存在:
[root@k8s-node2 ~]#ll -h logs.tar.gz #可以看到,传输过去的文件存在-rw-r--r--1rootroot1000MFeb2610:05logs.tar.gz
2.如果要复制目录,请使用-r
选项
如果要复制目录,请使用-r
选项,如下所示。在这里,我们将 /root/tmp目录复制到远程节点的/root目录中。
#传输目录到远程机器[root@k8s-node1 ~]#scp -r /tmp/ root@172.29.9.33:/root/root@172.29.9.33's password:#在远程机器上验证[root@k8s-node2 ~]#ls tmp/ #被传输过来的目录存在vmware-root_5586-3133158215 vmware-root_5593-4155813653
如果不添加-r
选项复制目录,会提示如下错误。
[root@k8s-node1 ~]#scp /tmp/ root@172.29.9.33:/root/root@172.29.9.33's password:/tmp: not a regular file
3.如果远程主机端口不是22的话,要用-p
参数
#传输文件[root@k8s-node1 ~]#scp wget-1.14-18.el7_6.1.x86_64.rpm root@172.29.9.33:/tmpssh:connecttohost172.29.9.33port22:Connectionrefusedlostconnection[root@k8s-node1 ~]#scp -P 5151 wget-1.14-18.el7_6.1.x86_64.rpm root@172.29.9.33:/tmproot@172.29.9.33's password:wget-1.14-18.el7_6.1.x86_64.rpm 100% 547KB 29.6MB/s 00:00 #验证[root@k8s-node2 ~]#ll /tmp/wget-1.14-18.el7_6.1.x86_64.rpm -rw-r--r-- 1 root root 560272 Feb 26 10:12 /tmp/wget-1.14-18.el7_6.1.x86_64.rpm
2️⃣ 案例2:将文件从远程系统复制到本地系统
可以将文件从远程节点复制到本地系统,如下所示:
$scp[option] user@server-ip:/path/to/source/file /path/to/local/directory
1.scp传输文件
在下面的示例中,我们将文件 /root/passwd
从远程系统复制到本地系统:
#传输[root@k8s-node1 ~]#scp -P 5151 root@172.29.9.33:/etc/passwd /root/root@172.29.9.33's password:passwd 100% 1184 538.9KB/s 00:00 #验证[root@k8s-node1 ~]#ll passwd -rw-r--r-- 1 root root 1184 Feb 26 10:30 passwd
2.如果要复制目录,请使用-r
选项
同样,你可以使用-r
标志将目录从远程主机复制到本地系统,如图所示。
#传输[root@k8s-node1 ~]#scp -P 5151 -r root@172.29.9.33:/tmp /root/root@172.29.9.33's password:wget-1.14-18.el7_6.1.x86_64.rpm 100% 547KB 24.9MB/s 00:00 #验证[root@k8s-node1 ~]#ls tmp/vmware-root_5460-2864841600 vmware-root_5461-3845494878 wget-1.14-18.el7_6.1.x86_64.rpm
FAQ
有关使用 scp
命令的更多选项,可以查看手册,命令是:man scp
关于我
我的博客主旨:
- 排版美观,语言精炼;
- 文档即手册,步骤明细,拒绝埋坑,提供源码;
- 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!
🍀 微信二维码 x2675263825 (舍得), qq:2675263825。
🍀 微信公众号 《云原生架构师实战》
🍀 语雀
上次更新时间: