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远程可以正常使用