Linux命令之scp详解程序员

在CentOS7中rcp已经不再默认安装,而是使用更加安全的scp。

scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:]file1 … [[user@]host2:]file2

scp在网络中的主机间进行文件复制。它用ssh(1)进行数据传输及身份验证,通过与ssh(1)相同的安全保护。如果需要身份验证,scp会要求输入口令。

文件名可以包含用户名和主机名的格式,以指定要将文件复制到该主机或从该主机复制该文件。可以使用绝对路径或相对路径展示本地文件名,以避免scp将包含”:”的文件名视为主机说明符。也允许在两个远程主机之间相互复制。

(1).选项

-1 强制scp使用协议1 
-2 强制scp使用协议2 
-3 两个远程主机之间的复制通过本地主机传输。如果没有此选项,数据将直接在两个远程主机之间复制。注意:此选项会禁用进度表。 
-4 强制scp仅使用IPv4地址 
-6 强制scp仅使用IPv6地址 
-B 选择批处理模式(防止要求输入口令) 
-C 启用压缩。将-C标志传递给ssh(1)以启用压缩。 
-c cipher 选择用于加密数据传输的密码。此选项直接传递给ssh(1) 
-F ssh_config指定每个用户替代的ssh配置文件。此选项直接传递给ssh(1) 
-i identity_file 选择从公钥认证读取的身份标识(私钥)的文件。此选项直接传递给ssh(1) 
-l limit 限制使用的带宽,以kbit/s为单位 
-o ssh_option 可用ssh_config中使用的格式传递ssh选项。这对于没有单独的scp命令行标志的指定选项很有用。有关下列选项及其可能值的完整信息,见ssh_config(5)。 
AddressFamily、BatchMode、BindAddress、CanonicalDomains、CanonicalizeFallbackLocal、CanonicalizeHostname、CanonicalizeMaxDots、CanonicalizePermittedCNAMEs、
CertificateFile、ChallengeResponseAuthentication、CheckHostIP、Cipher、Ciphers、Compression、CompressionLevel、ConnectionAttempts、ConnectTimeout、ControlMaster、
ControlPath、ControlPersist、GlobalKnownHostsFile、GSSAPIAuthentication、GSSAPIDelegateCredentials、HashKnownHosts、Host、HostbasedAuthentication、HostbasedKeyTypes、
HostKeyAlgorithms、HostKeyAlias、HostName、IdentitiesOnly、IdentityAgent、IdentityFile、IPQoS、KbdInteractiveAuthentication、KbdInteractiveDevices、KexAlgorithms、
LogLevel、MACs、NoHostAuthenticationForLocalhost、NumberOfPasswordPrompts、PasswordAuthentication、PKCS11Provider、Port、PreferredAuthentications、Protocol、
ProxyCommand、ProxyJump、PubkeyAcceptedKeyTypes、PubkeyAuthentication、RekeyLimit、RhostsRSAAuthentication、RSAAuthentication、SendEnv、ServerAliveInterval、
ServerAliveCountMax、StrictHostKeyChecking、TCPKeepAlive、UpdateHostKeys、UsePrivilegedPort、User、UserKnownHostsFile、VerifyHostKeyDNS -P port 指定在远程主机上连接的端口。注意:此选项”P”是大写。 -p 保留原始文件的修改时间、访问时间和模式 -q 静默模式。禁用精度表以及来自ssh(1)的警告和诊断信息 -r 递归复制整个目录。注意:scp遵循树遍历中遇到的符号链接 -S progrom 用于加密连接的program程序名称。该程序必须了解ssh选项 -v 详细模式。令scp和ssh(1)打印有关其进度的调试信息。这有助于调试连接,身份验证和配置问题。

(2).实例

主要就是将远程文件复制到本地,以及将本地文件复制到远程主机。这里我准备了一台本地主机CentOS7和一台远程主机CentOS6.8

 1)将远程文件复制到本地

远程主机CentOS6.8准备被复制的文件

[[email protected] 桌面]# cd / 
[[email protected] /]# ls 
bin dev home lib64 media mnt opt root selinux sys usr 
boot etc lib lost+found misc net proc sbin srv tmp var 
[[email protected] /]# mkdir sw    //创建文件夹 
[[email protected] /]# cd sw 
[[email protected] sw]# cat>text1.txt<<EOF    //创建text1.txt 
>test1's first line.  
> test1's second line. 
> test1's third line. 
> EOF 
[[email protected] sw]# ll 
总用量 4 
-rw-r--r--. 1 root root 61 10月 10 21:51 text1.txt 
[[email protected] sw]# touch text2    //创建text2 
[[email protected] sw]# ll 
总用量 4 
-rw-r--r--. 1 root root 61 10月 10 21:51 text1.txt 
-rw-r--r--. 1 root root 0 10月 10 21:51 text2

本地主机CentIS7复制远程文件

[[email protected] xf]# cd / 
[[email protected] /]# ls 
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var 
boot  etc  lib   media  opt  root  sbin  sys  usr 
[[email protected] /]# scp -r [email protected]:/sw /    //将远程文件夹递归复制到本地根目录下 
The authenticity of host '192.168.128.224 (192.168.128.224)' can't be established. 
RSA key fingerprint is SHA256:1ttWCoSQF5u6ZEARHacvCnJeCHK3dCIbQ2ru+lWyAY8. 
RSA key fingerprint is MD5:1e:32:88:36:4f:7e:0b:3d:8f:13:47:d4:a5:96:a9:4a. 
Are you sure you want to continue connecting (yes/no)? y 
Please type 'yes' or 'no': yes 
Warning: Permanently added '192.168.128.224' (RSA) to the list of known hosts. 
[email protected]'s password:  
text2                                         100%    0     0.0KB/s   00:00     
text1.txt                                     100%   61    43.1KB/s   00:00     
[[email protected] /]# ls    //可以看到根目录下生成了文件夹sw 
bin   dev  home  lib64  mnt  proc  run   srv  sys  usr 
boot  etc  lib   media  opt  root  sbin  sw   tmp  var 
[[email protected] /]# cd /sw 
[[email protected] sw]# ll 
总用量 4 
-rw-r--r--. 1 root root 61 10月 29 10:13 text1.txt 
-rw-r--r--. 1 root root  0 10月 29 10:13 text2 
[[email protected] sw]# cat text1.txt  
test1's first line. 
test1's second line. 
test1's third line. 

2)将本地文件复制到远程主机

本地主机CentOS7准备被复制文件,并复制到远程主机CentOS6.8

[[email protected] xf]# cd /sw 
[[email protected] sw]# ls 
text1.txt  text2 
[[email protected] sw]# cat>text3.txt<<EOF 
> This is the file for CentOS7. 
> EOF 
[[email protected] sw]# scp text3.txt [email protected]:/sw/ 
[email protected]'s password:  
text3.txt                                     100%   30    28.6KB/s   00:00   

在远程主机CentOS6.8中查看

[[email protected] 桌面]# cd /sw 
[[email protected] sw]# ll 
总用量 8 
-rw-r--r--. 1 root root 61 10月 10 21:51 text1.txt 
-rw-r--r--. 1 root root 0 10月 10 21:51 text2 
-rw-r--r--. 1 root root 30 10月 10 22:20 text3.txt 
[[email protected] sw]# cat text3.txt 
This is the file for CentOS7.

注意1:在上面两个实例中我分别复制了一个文件夹和一个文件,复制文件夹时请注意使用-r选项。

注意2:在第一次使用时,请确保ssh远程可以正常使用

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/2888.html

(0)
上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐

发表回复

登录后才能评论