SCP(SecureCopySecureCopy)是Linux和类Unix系统中的一个命令行工具,用于通过网络跨系统安全地传输文件和目录。当我们使用scp命令将文件和目录从本地系统复制到远程系统时,那么在后端我们就有了一个到远程系统的ssh连接。换句话说,我们可以说scp在后端使用相同的SSH安全机制,需要密码或密钥进行身份验证。在本教程中,我们将讨论Linuxscp命令的14个有用示例。scp命令语法:#scpusername@targethost:/#scpusername@targethost:/filescp命令的第一个语法演示如何从复制文件或目录本地系统到特定文件夹下的目标主机。scp命令的第二种语法演示了如何将文件从目标主机复制到本地系统。下面列出scp命令中使用最广泛的一些选项,-C启用压缩-i指定识别文件或私钥-l复制时限制带宽-P指定目标主机的ssh端口号-p保留文件权限时复制、模式和访问时间-q抑制SSH警告消息-r递归复制文件和目录-v详细输出现在让我们进入示例!示例:1)使用scp从本地系统复制文件到远程系统假设我们要使用scp命令将jdk的rpm包从本地Linux系统复制到远程系统(172.20.10.8),请使用如下命令,[root@linuxtechi~]$scpjdk-linux-x64_bin.rpmroot@linuxtechi:/optroot@linuxtechi的密码:jdk-linux-x64_bin.rpm100%10MB27.1MB/s00:00[root@linuxtechi~]$上面的命令将jdkrpm包文件复制到远程系统的/opt文件夹下。示例:2)使用scp从远程系统拷贝文件到本地系统假设我们要从远程系统拷贝文件到本地系统下的/tmp文件夹,执行如下scp命令,[root@linuxtechi~]$scproot@linuxtechi:/root/Technical-Doc-RHS.odt/tmproot@linuxtechi的密码:Technical-Doc-RHS.odt100%1109KB31.8MB/s00:00[root@linuxtechi~]$ls-l/tmp/技术文档-RHS.odt-rwx------。1pkumarpkumar1135521Oct1911:12/tmp/Technical-Doc-RHS.odt[root@linuxtechi~]$示例:3)使用scp传输文件时的详细信息输出(-v)在scp命令中,我们可以启用使用-v选项的详细输出。使用详细的输出,我们可以很容易地发现后台到底发生了什么。这对于调试连接、身份验证和配置问题很有用。root@linuxtechi~]$scp-vjdk-linux-x64_bin.rpmroot@linuxtechi:/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:下一个认证方式:密码root@linuxtechi的密码:例子:4)传输多个文件到远程系统可以使用scp命令一次复制/传输多个文件到远程系统,在scp命令中指定多个文件,使用空格[root@linuxtechi~]$scpinstall.txtindex.htmljdk-linux-x64_bin.rpmroot@linuxtechi:/mntroot@linuxtechi'spassword:install.txt100%00.0KB/s00:00索引.html100%85KB7.2MB/s00:00jdk-linux-x64_bin.rpm100%10MB25.3MB/s00:00[root@linuxtechi~]$例子:5)使用scp命令在两个远程主机之间传输文件,我们可以在两个远程主机之间复制文件和目录,假设我们有一个本地Linux系统可以连接到两个远程Linux系统,那么从我的本地Linux系统,我可以使用scp命令在两个系统之间复制文件,命令语法:#scp用户名@远程主机1:/<要传输的文件>用户名@远程主机2:/<文件夹>示例如下:#scproot@linuxtechi:~/backup-Oct.ziproot@linuxtechi:/tmp#sshroot@linuxtechi"ls-l/tmp/backup-Oct.zip"-rwx------。1rootroot747438080Oct1912:02/tmp/backup-Oct.zip示例:6)递归复制文件和目录(-r)在scp命令中使用-r选项递归地将整个目录从一个系统复制到另一个系统,示例如下:[root@linuxtechi~]$scp2rootroot75Oct1912:10/opt/Downloads[root@linuxtechi~]$示例:7)通过启用压缩提高传输速度(-C)在scp命令,我们可以通过使用-C选项提高压缩传输速度,它会自动启用源主机上的压缩和目标主机上的解压root@linuxtechi~]$scp-r-CDownloadsroot@linuxtechi:/mnt在上面的示例中,我们正在传输启用压缩的下载目录。示例:8)复制时限制带宽(-l)使用scp命令中的-l选项来设置复制时带宽使用的限制。带宽以Kbit/s为单位指定,示例如下:[root@linuxtechi~]$scp-l500jdk-linux-x64_bin.rpmroot@linuxtechi:/var示例:9)scp(-P)在某些情况下,目标主机上的ssh端口会发生变化,所以我们在使用scp命令时可以使用-P选项指定ssh端口号。[root@linuxtechi~]$scp-P2022jdk-linux-x64_bin.rpmroot@linuxtechi:/var在上面的例子中,远程主机的ssh端口是“2022”。示例:10)复制时保留文件的权限、模式和访问时间(-p)在scp命令中使用-p选项以在从源复制到目标时保留权限、访问时间和模式。[root@linuxtechi~]$scp-pjdk-linux-x64_bin.rpmroot@linuxtechi:/var/tmpjdk-linux-x64_bin.rpm100%10MB13.5MB/s00:00[root@linuxtechi~]$示例:11)在scp中以安静模式传输文件(-q)在scp命令中使用-q选项可以抑制ssh的传输进度、警告和诊断信息的显示。示例如下:[root@linuxtechi~]$scp-q-rDownloadsroot@linuxtechi:/var/tmp[root@linuxtechi~]$示例:12)传输时使用scp(-i)中的标识文件在大多数Linux环境中,首选基于密钥的身份验证。在scp命令中,我们使用-i选项指定标识文件(私钥文件),示例如下:[root@linuxtechi~]$scp-imy_key.pem-rDownloadsroot@linuxtechi:/root在上面的例子中,my_key.pem是标识文件或私钥文件。示例:13)在scp(-F)中使用其他ssh_config文件在某些情况下,您使用不同的网络连接到Linux系统,可能某些网络在代理服务器后面,因此在这种情况下我们必须有不同的ssh_config文件。在scp命令中通过-F选项指定不同的ssh_config文件,示例如下:[root@linuxtechi~]$scp-F/home/pkumar/new_ssh_config-rDownloadsroot@linuxtechi:/rootroot@linuxtechi'spassword:jdk-linux-x64_bin.rpm100%10MB16.6MB/s00:00backup-Oct.zip100%713MB41.9MB/s00:17index.html100%85KB6.6MB/s00:00[root@linuxtechi~]$example:14)在scp命令中使用其他加密方法(-c)默认情况下,scp使用AES-128加密方法来加密文件。如果要对scp命令使用不同的加密方法,请使用-c选项,后跟加密方法名称。假设我们在使用scp命令传输文件时要使用3des-cbc加密方式,请运行以下scp命令:[root@linuxtechi~]#scp-c3des-cbc-rDownloadsroot@linuxtechi:/root使用以下命令列出ssh和scp支持的加密方法:[root@linuxtechi~]#ssh-Qcipherlocalhost|粘贴-d,-s-3des-cbc,aes128-cbc,aes192-cbc,aes256-cbc,root@linuxtechi,aes128-ctr,aes192-ctr,aes256-ctr,root@linuxtechi,root@linuxtechi,root@linuxtechi[root@linuxtechi~]#以上就是本教程的全部内容,更多关于scp命令的详细信息,请参考它的manpage。