rsync攻略

im线上服务,一直自己运维,运维不允许root账号在机器之间建立信任关系,难道要开7,8个终端分 别操作?又麻烦,又容易出错,不方便。
rsync彻底解决了这个问题。

一、rsync介绍
1.1 概念
一个多机同步(备份)工具,remote sync。
1.2 优点
(1)可同步目录;
(2)无需root账号在各台机器之间建立信任关系;
(3)可压缩同步,减少带宽;
(4)… =>请自行跳转至wiki http://zh.wikipedia.org/zh-cn/Rsync
=> (1)(2)两点,就让我们有了使用的理由,今后一台操作重启ok后,按目录同步至其他机器。

二、rsync部署
2.1 前言
(1)rsync分server与client,是一个binary;
(2)所有机器都需要部署server;
2.2 部署
在184和185部署了一份,把它拷贝到其他机器上即可(rsync安装也容易);
2.3 目录结构及文件说明
[root@immonitor01 rsync]# tree
|– bin
| |– rsync # server/client的二进制
| `– start.sh # server启动用这个
|– etc
| |– rsyncd.conf  # 配置文件
| |– rsyncd.passwd   # 密码
| `– rsyncd.secrets   # 授权文件
|– log
| `– rsync.log # 日志文件
2.4 配置修改
(1)ip修改:在rsyncd.conf中修改
# This line is required by the /etc/init.d/rsyncd script
address = 192.168.11.184 请改成server的ip,本机
(2)tag修改:在rsyncd.conf中修改,tag是在操作时,制定要同步哪些目录
# This is tag configure
[shenjian] # tagname
path = /opt/soft/shenjian/         # tag对应的目录
list = yes
[zhuwei] # 这个配置有2个tag
path = /opt/soft/zhuwei/         # zhuwei这个tag对应的目录
list = yes
2.5 启动服务
(1)所有操作都是用root进行;
(2)将密码和授权文件进行权限设置
chmod 600 rsyncd.passwd
chmod 600 rsyncd.secrets
(3)启动server
bash start.sh

三、rsync同步
3.1 前言
配置完成(各机器根据自己上面部署的服务,修改tag配置,还有ip),
server启动后,就可以实施同步了(同步是目录级别的)。
以上面184和185的配置为例,184和185上有两套服务:
一套的目录是/opt/soft/shenjian/
一套的目录是/opt/soft/zhuwei/
这两套服务在184和185上都有冗余;
在配置文件里指定了tag=shenjian/zhuwei和相应的路径。
3.2 同步服务shenjian
假设首先更新了184上的服务,要同步要185上,执行:
rsync -avzP –delete /opt/soft/shenjian/ XXX@192.168.11.185::shenjian
^      ^ ^ ^                 ^          ^
命令 参数 本地文件夹          rsync用户 远端ip 同步这个tag(配 置文件中指定了这个tag的目录)

注意:由于此处只同步一台远端机器,故一个命令可以搞定,
如果要同步7,8台机器,建议搞个shell脚本,for一把,一台台同步。
3.3 同步服务zhuwei
原理同上,不同的服务,由于目录,ip,机器个数都不一样,故理论上一个服务由一个这样的同步脚本。
#!/bin/sh
src=/opt/soft/zhuwei/
ip=192.168.11.185
tag=zhuwei
# this always be a for loop
/opt/soft/rsync/bin/rsync -avzP –delete $src XXX@$ip::$tag

四、总结
再次强调下需要注意的几点:
(1)各个机器的ip和tag配置不一样;
(2)rsyncd.passwd 和 rsyncd.secrets 都需要 chmod 600,否则会报错;
(3)同步机器(发起命令的机器)和被同步机器(一般是N台),目录结构务必一样,否则会报错;
(4)一个模块有一个同步脚本;

五、样例
所有样例,请参见184的/opt/soft/rsync/目录,里面的脚本都是仿照运维写的=_=。

评论关闭。