SCP 是 linux 发行版中的命令行工具,用于通过网络安全地跨零碎复制文件和目录。SCP 代表平安复制,因为它应用 ssh 协定复制文件。
拷贝时,scp 命令建设 ssh 连贯到近程零碎。换句话说,咱们能够说 scp 在后端应用雷同的 SSH 平安机制,它须要明码或密钥进行身份验证。
SCP 命令语法
从本地零碎复制到近程主机
scp <options> <files_or_directories> user@target_host:/<folder>
从近程主机复制到本地零碎
scp <options> user@target_host:/files <folder_local_system>
上面列出了 scp 命令中应用最宽泛的一些选项
- -C 启用压缩
- -i 身份文件或私钥
- -l 复制时限度带宽
- -P 指标主机 SSH 端口号
- -p 在复制时保留文件的权限、模式和拜访工夫
- -q 禁止显示 SSH 的正告音讯
- -r 递归复制文件和目录
- -v 具体输入
1) 从本地复制文件到近程
假如咱们要将 jdk rpm 包从本地 Linux 零碎复制到近程零碎 (172.20.10.8) /opt 目录下
$ scp jdk-linux-x64_bin.rpm root@172.20.10.8:/opt
root@172.20.10.8's password:
jdk-linux-x64_bin.rpm 100% 10MB 27.1MB/s 00:00
$
2) 从近程复制文件到本地
Suppose we want to copy a file from remote system to our local system under the /tmp folder, execute the following,
假如咱们要将文件从近程复制到本地 /tmp 目录下
$ scp root@172.20.10.8:/root/Technical-Doc-RHS.odt /tmp
root@172.20.10.8's password:
Technical-Doc-RHS.odt 100% 1109KB 31.8MB/s 00:00
$ ls -l /tmp/Technical-Doc-RHS.odt
-rwx------. 1 pkumar pkumar 1135521 Oct 19 11:12 /tmp/Technical-Doc-RHS.odt
$
3) 复制文件时具体输入
咱们能够在复制文件时应用 -v 选项启用具体输入。应用具体输入,咱们能够很容易地发现后盾到底产生了什么。这在调试连贯、身份验证和配置问题时十分有用。
$ scp -v jdk-linux-x64_bin.rpm root@172.20.10.8:/opt
Executing: program /usr/bin/ssh host 172.20.10.8, user root, command scp -v -t /opt
OpenSSH_7.8p1, OpenSSL 1.1.1 FIPS 11 Sep 2018
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf
debug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config
debug1: /etc/ssh/ssh_config.d/05-redhat.conf line 8: Applying options for *
debug1: Connecting to 172.20.10.8 [172.20.10.8] port 22.
debug1: Connection established.
…………
debug1: Next authentication method: password
root@172.20.10.8's password:
4) 复制多个文件到近程
应用 scp 命令能够一次性拷贝多个文件到近程。指定以空格分隔多个文件,示例如下
$ scp install.txt index.html jdk-linux-x64_bin.rpm root@172.20.10.8:/mnt
root@172.20.10.8's password:
install.txt 100% 0 0.0KB/s 00:00
index.html 100% 85KB 7.2MB/s 00:00
jdk-linux-x64_bin.rpm 100% 10MB 25.3MB/s 00:00
[pkumar@linuxtechi ~]$
5) 跨两个近程零碎复制文件
应用 scp 命令,咱们能够在两个近程主机之间复制文件和目录,假如咱们有一个本地 Linux 零碎,它能够连贯到两个近程 Linux 零碎,那么从我的本地零碎,我能够应用 scp 命令在这两个零碎之间复制文件,语法如下:
$scp user@remote_hosts1:/<files_to_transfer> user@remote_host2:/<folder>
示例如下所示:
$ scp pkumar@172.20.10.9:~/backup-Oct.zip root@172.20.10.8:/tmp
$ ssh root@172.20.10.8 "ls -l /tmp/backup-Oct.zip"
-rwx------. 1 root root 747438080 Oct 19 12:02 /tmp/backup-Oct.zip
6) 递归复制文件和目录
在 scp 命令中应用 -r 选项递归地将整个目录从一个零碎复制到另一个零碎,示例如下
$ scp -r Downloads root@172.20.10.8:/opt
应用以下命令验证下载文件夹是否复制到近程零碎
$ ssh root@172.20.10.8 "ls -ld /opt/Downloads"
drwxr-xr-x. 2 root root 75 Oct 19 12:10 /opt/Downloads
$
7) 通过启用压缩来减少拷贝速度
咱们能够通过应用 -C 选项启用压缩来减少传输或复制速度,它将主动在源处启用压缩并在指标处解压缩。
假如咱们须要递归传输 Downlod 目录时启用压缩
$ scp -r -C Downloads root@172.20.10.8:/mnt
8) 复制时限度带宽
Use‘-l’option in scp command to put limit on bandwidth usage while copying. Bandwidth is specified in Kbit/s, example is shown below,
应用 SCP 命令中的 -l 选项对带宽应用限度。单位 Kbit/s,示例如下
$ scp -l 500 jdk-linux-x64_bin.rpm root@172.20.10.8:/var
9) 应用不同的 SSH 端口
在某些状况下,指标主机上的 ssh 端口会被更改,咱们能够应用 -P 选项指定 ssh 端口号。
$ scp -P 2022 jdk-linux-x64_bin.rpm root@172.20.10.8:/var
10) 复制时保留权限、模式和拜访工夫
在 scp 命令中应用 -p 选项保留从源复制到指标时的权限、拜访工夫和模式
$ scp -p jdk-linux-x64_bin.rpm root@172.20.10.8:/var/tmp
jdk-linux-x64_bin.rpm 100% 10MB 13.5MB/s 00:00
$
11) 以宁静模式复制文件
在 scp 命令中应用 -q 选项禁止 ssh 的传输进度、正告和诊断音讯。示例如下
$ scp -q -r Downloads root@172.20.10.8:/var/tmp
12) 应用标识文件
在大多数 Linux 环境中,首选基于密钥的身份验证。在 scp 命令中,咱们能够应用 -i 选项指定标识文件或私钥文件,示例如下
$ scp -i my_key.pem -r Downloads root@172.20.10.8:/root
13) 应用不同的 ssh 配置文件
在某些状况下,您应用不同的网络连接到 Linux 零碎,可能是某些网络背地是代理服务器,所以在这种状况下,咱们必须有不同的 ssh_conig 文件。
scp 命令中不同的 ssh 配置文件通过 -F 选项指定,示例如下
$ scp -F /home/pkumar/new_ssh_config -r Downloads \
root@172.20.10.8:/root
root@172.20.10.8's password:
jdk-linux-x64_bin.rpm 100% 10MB 16.6MB/s 00:00
backup-Oct.zip 100% 713MB 41.9MB/s 00:17
index.html 100% 85KB 6.6MB/s 00:00
$
14) 应用不同的明码
缺省状况下,scp 应用 AES-128 算法对文件进行加密。如果您想应用另一个算法,则应用 -c 选项后跟算法名称,示例如下
$ scp -c 3des-cbc -r Downloads root@172.20.10.8:/root
应用上面的命令能够查看 ssh 和 scp 反对的加密算法
$ ssh -Q cipher localhost | paste -d , -s -
3des-cbc,aes128-cbc,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,\
aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,\
chacha20-poly1305@openssh.com
$
我的开源我的项目
- course-tencent-cloud(酷瓜云课堂 – gitee 仓库)
- course-tencent-cloud(酷瓜云课堂 – github 仓库)