SCP是Linux发行版中的一个命令行工具,用于通过网络跨系统安全地复制文件和目录。SCP代表安全复制,因为它使用ssh协议复制文件。复制时,scp命令建立到远程系统的ssh连接。换句话说,我们可以说scp在后端使用相同的SSH安全机制,需要密码或密钥进行身份验证。SCP命令语法Copyfromlocalsystemtoremotehostscpuser@target_host:/Copyfromremotehosttolocalsystemscpuser@target_host:/files下面列出了一些scp命令中使用最广泛的选项-C启用压缩-i身份文件或私钥-l复制时限制带宽-P目标主机SSH端口号-p复制时保留文件权限、模式和访问时间-q抑制显示SSH警告信息-r递归复制文件和目录-vverboseoutput1)从本地复制文件到远程假设我们要将本地Linux系统的jdkrpm包复制到远程系统(172.20.10.8)/opt目录下$scpjdk-linux-x64_bin.rpmroot@172.20.10.8:/optroot@172.20.10.8'spassword:jdk-linux-x64_bin.rpm100%10MB27.1MB/s00:00$2)从远程复制文件到本地假设我们想从远程系统复制一个文件到我们本地系统的/tmp文件夹下,执行以下命令,假设我们想从远程复制文件到本地/tmp目录$scproot@172.20.10.8:/root/Technical-Doc-RHS.odt/tmproot@172.20.10.8的密码:Technical-Doc-RHS.odt100%1109KB31.8MB/s00:00$ls-l/tmp/Technical-Doc-RHS.odt-rwx--------。1pkumarpkumar1135521Oct1911:12/tmp/Technical-Doc-RHS.odt$3)复制文件时的详细输出我们可以在使用-v选项复制文件时启用详细输出。使用详细的输出,我们可以很容易地发现后台发生了什么。这在调试连接、身份验证和配置问题时很有用。$scp-vjdk-linux-x64_bin.rpmroot@172.20.10.8:/optExecuting:program/usr/bin/sshhost172.20.10.8,用户root,命令scp-v-t/optOpenSSH_7.8p1,OpenSSL1.1.1FIPS11Sep2018debug1:读取配置数据/etc/ssh/ssh_configdebug1:读取配置数据/etc/ssh/ssh_config.d/05-redhat.confdebug1:读取配置数据/etc/crypto-policies/back-ends/openssh.configdebug1:/etc/ssh/ssh_config.d/05-redhat.confline8:Applyingoptionsfor*debug1:Connectingto172.20.10.8[172.20.10.8]port22.debug1:Connectionestablished.…………debug1:下一个身份验证方法:passwordroot@172.20.10.8'spassword:4)复制多个文件到远程使用scp命令一次复制多个文件到远程。指定多个文件用空格分隔,例子如下$scpinstall.txtindex.htmljdk-linux-x64_bin.rpmroot@172.20.10.8:/mntroot@172.20.10.8'spassword:install.txt100%00.0KB/s00:00index.html100%85KB7.2MB/s00:00jdk-linux-x64_bin.rpm100%10MB25.3MB/s00:00[pkumar@linuxtechi~]$5)使用scp命令,我们可以在两个远程主机之间复制文件和目录,假设我们有一个本地Linux系统,可以连接到两个远程Linux系统,那么从我的本地系统,我可以使用scp命令在两个系统之间复制文件,语法如下:$scpuser@remote_hosts1:/user@remote_host2:/示例如下:$scppkumar@172.20.10.9:~/backup-Oct.ziproot@172.20。10.8:/tmp$sshroot@172.20.10.8"ls-l/tmp/backup-Oct.zip"-rwx------。1rootroot747438080Oct1912:02/tmp/backup-Oct.zip6)以递归方式复制文件和目录在scp命令中使用-r选项以递归方式将整个目录从一个系统复制到另一个系统,例如$scp-rDownloadsroot@172.20.10.8:/opt使用以下命令验证下载文件夹是否复制到远程系统$sshroot@172.20.10.8"ls-ld/opt/Downloads"drwxr-xr-x。2rootroot75Oct1912:10/opt/Downloads$7)要通过启用压缩来提高复制速度,我们可以通过使用-C选项启用压缩来增加传输或者复制速度,它会自动在源端启用压缩,在目标端自动解压假设我们需要递归传输下载目录以启用压缩$scp-r-CDownloadsroot@172.20.10.8:/mnt8)复制时限制带宽在scp命令中使用“-l”选项来限制复制时的带宽使用。带宽以Kbit/s为单位指定,示例如下所示,使用SCP命令中的-l选项来限制带宽使用。单位为Kbit/s,示例如下$scp-l500jdk-linux-x64_bin.rpmroot@172.20.10.8:/var9)使用不同的SSH端口在某些情况下,目标主机上的ssh端口会要改变,我们可以用-P选项指定ssh端口号。$scp-P2022jdk-linux-x64_bin.rpmroot@172.20.10.8:/var10)Preservepermissions,modeandaccesstimewhencopying使用scp命令中的-p选项保存权限,从源复制到时的访问时间目标和模式$scp-pjdk-linux-x64_bin.rpmroot@172.20.10.8:/var/tmpjdk-linux-x64_bin.rpm100%10MB13.5MB/s00:00$11)在scp中以安静模式复制文件命令使用-q选项来抑制ssh的传输进度、警告和诊断消息。示例如下$scp-q-rDownloadsroot@172.20.10.8:/var/tmp12)使用身份文件在大多数Linux环境中首选基于密钥的身份验证。在scp命令中,我们可以使用-i选项指定标识文件或私钥文件,示例如下$scp-imy_key.pem-rDownloadsroot@172.20.10.8:/root13)使用不同的ssh配置某些情况下的文件如果您使用不同的网络连接到Linux系统,可能某些网络在代理服务器后面,所以在这种情况下我们必须有一个不同的ssh_conig文件。scp命令中不同的ssh配置文件是通过-F选项指定的,例如$scp-F/home/pkumar/new_ssh_config-rDownloads\root@172.20.10.8:/rootroot@172.20.10.8的密码:jdk-linux-x64_bin.rpm100%10MB16.6MB/s00:00backup-Oct.zip100%713MB41.9MB/s00:17index.html100%85KB6.6MB/s00:00$14)使用不同的密码默认情况下,scp使用AES-128算法加密文件。如果要使用其他算法,使用-c选项后跟算法名,例如$scp-c3des-cbc-rDownloadsroot@172.20.10.8:/root使用如下命令查看支持的加密算法ssh和scp$ssh-Qcipherlocalhost|粘贴-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仓库)