6.5 scp:远程文件复制
scp命令
用于在不同的主机之间复制文件,它采用SSH协议来保证复制的安全性。scp命令每次都是全量完整复制,因此效率不高,适合第一次复制时使用,增量复制建议使用rsync命令替代。
scp [option] [[user@]host1:]file [[user@]host2:]file2
scp [选项] [用户@主机1:文件1] [用户@主机2;文件2]
scp命令的参数选项及说明
-C 压缩传输
-l 指定传输占用的带宽,单位Kbit/s
-P port 大写的P,指定传输的端口号
-p 小写的p,传输后保留文件原始属性
-q 不显示传输进度条
-r 递归复制整个目录
[root@cs6 ~]# ll -h /etc/services #<==这是将要复制的文件。 -rw-r--r--. 1 root root 626K Mar 22 2017 /etc/services [root@cs6 ~]# scp /etc/services 10.0.0.55:/tmp #<==scp 传送的文件名目标主机IP地址:想要传到的目录。 The authenticity of host '10.0.0.55 (10.0.0.55)' can't be established. RSA key fingerprint is 29:a1:b8:14:6d:10:4c:c4:34:d3:8b:06:4b:a5:27:46. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '10.0.0.55' (RSA) to the list of known hosts. root@10.0.0.55's password: services 100% 626KB 626.0KB/s 00:00 [root@cs7-mini ~]# ll /tmp/services #<==远程主机 -rw-r--r--. 1 root root 641020 May 14 13:00 /tmp/services #<==可以看到赋值后的文件时间有变化,更新为现在了。 [root@cs6 ~]# scp -p /etc/services 10.0.0.55:/tmp #<==使用-p选项保持文件属性传输。 root@10.0.0.55's password: services [root@cs7-mini ~]# ll -h /tmp/services -rw-r--r--. 1 root root 626K Mar 22 2017 /tmp/services 100% 626KB 626.0KB/s 00:00 [root@cs6 ~]# scp -p /tmp 10.0.0.55:/tmp #<==不能直接复制目录。 root@10.0.0.55's password: /tmp: not a regular file [root@cs6 ~]# scp -pr /tmp 10.0.0.55:/tmp #<==使用—r选项复制目录,选项记忆方法:人品rp。 root@10.0.0.55's password: anaconda-ks.cfg 100% 1092 1.1KB/s 00:00 install.log 100% 8081 7.9KB/s 00:00 yum.log 100% 0 0.0KB/s 00:00 ....... 5.html 100% 0 0.0KB/s 00:00 3.html 100% 0 0.0KB/s 00:00 6.html 100% 0 0.0KB/s 00:00 10.html 100% 0 0.0KB/s 00:00 1.html 100% 0 0.0KB/s 00:00 8.html 100% 0 0.0KB/s 00:00 services.zip 100% 124KB 124.4KB/s 00:00 services 100% 626KB 626.0KB/s 00:00
推送(从本地服务器复制到远程服务器)文件或目录
从远程服务器将数据复制到本地服务器(拉取)。 [root@cs6 tmp]# scp 10.0.0.55:/etc/services . root@10.0.0.55's password: services
从上面的实验中还可以看到,本地服务器本身即使有这些文件,但是还会再消耗带宽来复制文件,因此也证明了scp是全量复制。