目录
文章目录
1. 概述
rsync借助ssh通道在不同主机之间传输数据模式,此时类似于scp命令的功能。
2 机器准备
2.1 本地主机
hostname: dscq-122
ip: 192.168.2.122
ssh_port: 22
username: root
password: 略
2.2 远程主机
hostname: dscq-201
ip: 192.168.2.201
ssh_port: 22
username: root
password: 略
3. 借助ssh key密钥实现数据免登陆验证加密传输
说明,如果事先设置了ssh key密钥免登陆验证,即可用rsync通过SSH方式免登陆
验证同步传输数据,这是生产场景常用的方法之一。
4. 配置ssh key密钥实现数据免登陆验证
[root@dscq-122 ~]# ssh-keygen
.
.
.
[root@dscq-122 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub -p22 root@192.168.2.201
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.2.201's password: ###输入主机密码###
Number of key(s) added: 1
Now try logging into the machine, with: "ssh -p '22' 'root@192.168.2.201'"
and check to make sure that only the key(s) you wanted were added.
5. rsync借助ssh通道在不同主机之间传输数据模式的语法
5.1 将本地主机上的数据推送到远端主机指定目录
要求:将本地主机上的 /opt/tuisong.txt 推送到远端主机/tmp(需要保持源文件属性)
[root@dscq-122 ~]# cd /opt/
[root@dscq-122 opt]# ll
总用量 4
-rw-r--r--. 1 root root 36 10月 26 17:43 tuisong.txt
[root@dscq-122 opt]# cat tuisong.txt
wo yuan lai zai 192.168.2.122 shang
[root@dscq-201 ~]# cd /tmp/
[root@dscq-201 tmp]# ll
总用量 0
drwx------. 2 git git 19 10月 9 09:47 gitaly-ruby634802258
命令:rsync [OPTION…] SRC… [USER@HOST:DEST]
rsync -avzP /opt/tuisong.txt -e 'ssh -p22' root@192.168.2.201:/tmp
关键语法说明:
- -avz相当于-vzrtopgDl,表示同步时文件和目录属性不变。参数细节见后文。
- -P显示同步的过程,可以用–progress 替换。
- -e ‘ssh -p22’,表示通过ssh的通道传输数据,当远程主机ssh端口为22时,那麽-p22 可省略。
[root@dscq-122 opt]# rsync -avzP /opt/tuisong.txt -e 'ssh -p22' root@192.168.2.201:/tmp
sending incremental file list
tuisong.txt
36 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/1)
sent 127 bytes received 35 bytes 2.97 bytes/sec
total size is 36 speedup is 0.22
查看远程主机/tmp目录
[root@dscq-201 ~]# cd /tmp/
[root@dscq-201 tmp]# ll
总用量 4
drwx------. 2 git git 19 10月 9 09:47 gitaly-ruby634802258
-rw-r--r--. 1 root root 36 10月 26 17:43 tuisong.txt
5.2 将远端主机指定目录的数据拉取到本地主机上的指定目录
要求:将远程主机上的 /tmp/gitaly-ruby634802258 拉取到本地主机 /opt(需要保持源文件属性)
[root@dscq-201 ~]# cd /tmp/
[root@dscq-201 tmp]# ll
总用量 4
drwx------. 2 git git 19 10月 9 09:47 gitaly-ruby634802258
-rw-r--r--. 1 root root 36 10月 26 17:43 tuisong.txt
[root@dscq-122 ~]# cd /opt/
[root@dscq-122 opt]# ll
总用量 4
-rw-r--r--. 1 root root 36 10月 26 17:43 tuisong.txt
命令:rsync [OPTION…] [USER@HOST:SRC] DEST…
rsync -avzP -e 'ssh -p22' root@192.168.2.201:/tmp/gitaly-ruby634802258 /opt/
关键语法说明:
- -avz相当于-vzrtopgDl,表示同步时文件和目录属性不变。参数细节见后文。
- -P显示同步的过程,可以用–progress 替换。
- -e ‘ssh -p22’,表示通过ssh的通道传输数据,当远程主机ssh端口为22时,那麽-p22 可省略。
[root@dscq-122 opt]# rsync -avzP -e 'ssh -p22' root@192.168.2.201:/tmp/gitaly-ruby634802258 /opt/
receiving incremental file list
gitaly-ruby634802258/
gitaly-ruby634802258/socket
sent 31 bytes received 106 bytes 9.45 bytes/sec
total size is 0 speedup is 0.00
[root@dscq-122 opt]# ll
总用量 4
drwx------. 2 995 992 19 10月 9 09:47 gitaly-ruby634802258
-rw-r--r--. 1 root root 36 10月 26 17:43 tuisong.txt
注意:
1.操作时建立在用户之上的,如果ip地址前面没有用户,默认时当前登录的用户;
2.无论是从本地主机目录向外推送文件还是从远端主机目录拉取文件,都需要用户对此目录有操作权限。两边的用户权限必须同时满足才行。