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准备被复制的文件

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

[root@xuexi xf]# cd /
[root@xuexi /]# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
[root@xuexi /]# scp -r root@192.168.128.224:/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.
root@192.168.128.224's password: 
text2                                         100%    0     0.0KB/s   00:00    
text1.txt                                     100%   61    43.1KB/s   00:00    
[root@xuexi /]# ls    //可以看到根目录下生成了文件夹sw
bin   dev  home  lib64  mnt  proc  run   srv  sys  usr
boot  etc  lib   media  opt  root  sbin  sw   tmp  var
[root@xuexi /]# cd /sw
[root@xuexi 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
[root@xuexi sw]# cat text1.txt 
test1's first line.
test1's second line.
test1's third line.

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

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

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

在远程主机CentOS6.8中查看

[root@CentOS6 桌面]# cd /sw
[root@CentOS6 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
[root@CentOS6 sw]# cat text3.txt
This is the file for CentOS7.

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

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

原文地址:https://www.cnblogs.com/diantong/p/9856111.html