一. 背景
通过使用scp,可以直接将一台linux服务器上的文件或目录拷贝到另外一个linux服务器上。
前提条件是:
(1) 两台 linux 服务器在网络上可通;
(2) 两台 linux 服务器 都安装了 ssh,可以使用 ssh 连接;
二. 知识
完整的知识说明可见 :https://www.runoob.com/linux/linux-comm-scp.html
scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:]file1 [...] [[user@]host2:]file2
- user:表示远程服务器账号
- host:表示远程服务器的IP或域名
三.示例
1、指定远程服务器端口进行拷贝(远程服务器的ssh端口不是默认端口)
注意:这里指定端口必须使用 -P ,是大P,不是小P
2、将文件拷贝到远程服务器
在 1 示例中就展示了 将文件拷贝到远程服务器上。
一般情况下,我们只要输入:
scp 文件名 远程服务器账号:远程服务器IP:目标目录
这样就可以把文件拷贝到目标服务器的目标目录(绝对地址)下。
3、将目录及其子目录/文件拷贝到远程服务器(包括目录本身)
打开目标服务器的 /opt 目录,可以看到其下有刚刚拷贝过来的 consul 目录。
4、将指定目录中的子目录极其文件拷贝到远程服务器(不包括目录本身)
从上图可以看到相较于 3 中, 要拷贝的目录后面 就加了个 /
打开目标服务器的 /opt/test,可以看到 consul 目录下的子目录极其文件都被拷贝过来了,包含 consul 这个根目录。
注意:若目标服务器上没有这个 test目录在 /opt 下,执行这个命令的时候,test 目录会被自动创建
四. 问题
(1) 提示 “list connection”
此时需要按照 1 处理,首先通过以下方式查找接收端 的使用端口,因为它的 ssh 可能没有使用默认的端口 22
在接收端服务器上输入以下命令:
通过命令可以看到上面 sshd 有 2 个进程,分别使用了 8442 端口 和 55555 端口,我们这里使用 55555 端口。然后用第三章节中的 1 中指定接收端来拷贝文件到远程服务器上。