scp是secure copy的简写,用于在linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。当你的服务器变为只读read only system时,用scp可以帮助你把文件移动出来。另外,scp不会额外占用资源,不会提高多少系统负荷,在这一点上rsync就远远不及它了。虽然rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统使用。
【命令格式】
scp [参数] [原路径] [目标路径]
【命令功能】
scp是linux系统下基于ssh登录进行安全的远程文件拷贝命令;可理解为scp命令可以在linux服务器之间复制文件或目录。
【命令参数】
-1 强制scp命令使用协议ssh1
-2 强制scp命令使用协议ssh2
-4 强制scp命令只使用IPv4寻址
-6 强制scp命令只使用IPv6寻址
-B 使用批处理模式(传输过程中不询问传输口令或短语)
-C 允许压缩(将-C标志传递给ssh,从而打开压缩功能)
-p 保留源文件的修改时间,访问时间和权限。
-q 不显示传输进度条
-r 递归复制整个目录
-v 详细方式显示传输(scp和ssh(1)会显示整个过程的调试信息,这些信息用于调试连接,验证和配置问题。
-c cipher 以cipher将数据传输进行加密,这个选项将直接传递给ssh
-F ssh_config 指定一个替换的ssh配置文件,此参数直接传递给ssh
-i identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
-l limit 限定用户所能使用的带宽,以kb/s为单位。
-P port 注意是大写的P,port是指定数据传输用到的端口号
-S program 指定加密传输时所使用的程序,此程序必须能够理解ssh(1)的选项
【使用案例】
从本地主机到远程主机:
1
2
3
4
5
6
|
[root@node ~]
# scp puppet-server-2.7.23-1.el6.noarch.rpm 172.16.18.7:/root
root@172.16.18.7's password:
puppet-server-2.7.23-1.el6.noarch.rpm 100% 25KB 25.0KB
/s
00:00
[root@node1 ~]
# ls
anaconda-ks.cfg
install
.log.syslog
install
.log puppet-server-2.7.23-1.el6.noarch.rpm
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
[root@node ~]
# scp -r puppets 172.16.18.7:/root
root@172.16.18.7's password:
user.pp 100% 146 0.1KB
/s
00:00
notify.pp 100% 50 0.1KB
/s
00:00
exec
.pp 100% 145 0.1KB
/s
00:00
group.pp 100% 288 0.3KB
/s
00:00
class2.pp 100% 492 0.5KB
/s
00:00
class.pp 100% 424 0.4KB
/s
00:00
package.pp 100% 118 0.1KB
/s
00:00
file
.pp 100% 301 0.3KB
/s
00:00
case
.pp 100% 186 0.2KB
/s
00:00
class3.pp 100% 799 0.8KB
/s
00:00
if
.pp 100% 279 0.3KB
/s
00:00
[root@node1 ~]
# ls
anaconda-ks.cfg puppets
install
.log puppet-server-2.7.23-1.el6.noarch.rpm
install
.log.syslog
|
从远程主机到本地主机:
1
2
3
4
5
|
[root@node ~]
# scp 172.16.18.7:/etc/my.cnf /root
root@172.16.18.7's password:
my.cnf 100% 251 0.3KB
/s
00:00
[root@node ~]
# ls
anaconda-ks.cfg my.cnf
|
复制过程不使用密码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
#######主机一###########
[root@node ~]
# ssh-keygen -t rsa -P ''
Generating public
/private
rsa key pair.
Enter
file
in
which
to save the key (
/root/
.
ssh
/id_rsa
):
Your identification has been saved
in
/root/
.
ssh
/id_rsa
.
Your public key has been saved
in
/root/
.
ssh
/id_rsa
.pub.
The key fingerprint is:
d7:7b:32:0a:7c:d9:42:2b:fd:ea:3f:8f:66:77:44:d7 root@node.magedu.com
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| .|
| . E|
| S o . ..|
| . + + . .|
| + * = .. |
| + ++=. .|
| .+=++.. |
+-----------------+
[root@node ~]
# ssh-copy-id -i .ssh/id_rsa.pub root@172.16.18.7
root@172.16.18.7's password:
Now try logging into the machine, with
"ssh 'root@172.16.18.7'"
, and check
in
:
.
ssh
/authorized_keys
to
make
sure we haven
't added extra keys that you weren'
t expecting.
#######主机二#######
[root@node1 ~]
# ssh-keygen -t rsa -P ''
Generating public
/private
rsa key pair.
Enter
file
in
which
to save the key (
/root/
.
ssh
/id_rsa
):
Your identification has been saved
in
/root/
.
ssh
/id_rsa
.
Your public key has been saved
in
/root/
.
ssh
/id_rsa
.pub.
The key fingerprint is:
83:09:ad:d0:cc:39:f4:88:6c:89:87:fe:04:6f:e6:20 root@node1.magedu.com
The key's randomart image is:
+--[ RSA 2048]----+
| . |
| + B = |
|o.B O o |
|.oo. + o |
|Eo =. o S |
|. B . |
| o |
| |
| |
+-----------------+
[root@node1 ~]
# ssh-copy-id -i .ssh/id_rsa.pub root@172.16.18.6
The authenticity of host
'172.16.18.6 (172.16.18.6)'
can't be established.
RSA key fingerprint is 34:31:7a:4d:20:c9:c7:40:4b:80:
cd
:d2:9c:27:12:27.
Are you sure you want to
continue
connecting (
yes
/no
)?
yes
Warning: Permanently added
'172.16.18.6'
(RSA) to the list of known hosts.
root@172.16.18.6's password:
Now try logging into the machine, with
"ssh 'root@172.16.18.6'"
, and check
in
:
.
ssh
/authorized_keys
to
make
sure we haven
't added extra keys that you weren'
t expecting.
#######复制########
[root@node ~]
# scp my.cnf 172.16.18.7:/root
my.cnf 100% 251 0.3KB
/s
00:00
|
不同用户之间的远程复制:
1
2
3
4
5
|
[root@node ~]
# scp my.cnf zhao@172.16.18.7:/home/zhao/ #指定用户zhao
zhao@172.16.18.7's password:
my.cnf 100% 251 0.3KB
/s
00:00
[zhao@node1 ~]$
ls
#登陆zhao用户上
my.cnf
|
更多关于scp的知识接触到时将后续更新!!