场景
主服务器: 192.168.1.1
站群服务器A: 192.168.1.2
站群服务器B: 192.168.1.3
要将 主服务器的 /home/wwwroot 目录同步到 站群服务器A /home/wwwroot 下
要将 主服务器的 /home/www 目录同步到 站群服务器B /home/www 下
执行环境
主服务操作系统: centos 7.X
站群服务器AB: Ubuntu 14.x/16.x
配置
我们将使用 rsync 的 daemon 方式来完成任务
登录到 A 服务器,执行
vi /etc/rsyncd.conf
添加
uid = root
gid = root
max connections = 4
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[wwwroot]
path = /home/wwwroot
ignore errors
read only = true
list = true
auth users = backup
secrets file = /etc/rsyncd.pwd
[www]
path = /home/www
ignore errors
read only = true
list = true
auth users = backup
secrets file = /etc/rsyncd.pwd
保存文件 :wq!
执行
vi /etc/rsyncd.pwd
添加
backup:sandyliao
backup为用户和rsyncd.conf里面的用户要一致,sandyliao为密码
保存退出,执行
chmod 600 /etc/rsyncd.pwd
启动 rsync 服务 执行
rsync --daemon
登录 站群服务器 ,执行
vi /etc/rsyncd.pwd
添加
sandyliao #这为主服务器密码
保存退出,执行
chmod 600 /etc/rsyncd.pwd
好了,配置已经完成了,现在 主 服务器为服务端 ,站群服务器AB为客户端,现在就可以在 AB 服务器上执行同步操作了
配置说明
uid = root #设置执行rsync的本地用户
gid = root #设置执行rsync的本地组
max connections = 4 #最大同时连接数
pid file = /var/run/rsyncd.pid #指定rsync服务进程的pid file
lock file = /var/run/rsync.lock #指定rsync服务端锁定文件log file = /var/log/rsyncd.log #指定rsync的log输出路径
[wwwroot] #模块设定,可设置多个模块
path = /home/wwwroot #同步文件的真实路径
ignore errors
read only = true #是否只读
list = true
auth users = backup #身份验证用户。这不是系统用户,而是rsync服务自定的
secrets file = /etc/rsyncd.pwd #当前模块的密码文件
开始同步
登录 站群A 服务器,执行
rsync -avzP --password-file=/etc/rsyncd.pwd backup@192.168.1.1::wwwroot /home/wwwroot
登录 站群B服务器,执行
rsync -avzP --password-file=/etc/rsyncd.pwd backup@192.168.1.1::www /home/www
注意
1.如果 /home/下 wwwroot 目录不存在将会创建,如果已经存在了, 会将 主服务器机器上的 /home/wwwroot 目录下的内容同步到 站群服务器A机器上的 /home/wwwroot/ 下
2.假如 A 机器上有一个文件/home/wwwroot/1.txt , 在第二次执行同步时没有修改,则不会同步
3.假如 B 机器上有一个文件/home/wwwroot/2.txt , A 上没有,同步时不会被删除
4.如果 B 机器上有一个文件/home/wwwroot/1.txt 被修改了,同步时会被 A 上对应的文件覆盖
扩展
如果要同步别的目录,只需要修改 A 服务器上的 /etc/rsyncd.conf
将 logs 部分修改或者复制一份,改成你想同步的目录就可以了,
One more thing
下面是 rsync 的语法说明:
rsync [-avrlptgoD] [-e ssh] [user@host:/dir] [/local/path]
-v :观察模式,可以列出更多的信息;
-q :与 -v 相反,安静模式,输出的信息比较少;
-r :递归复制!可以针对『目录』来处理!很重要!
-u :仅更新 (update),不会覆盖目标的新档案;
-l :复制连结文件的属性,而非连结的目标源文件内容;
-p :复制时,连同属性 (permission) 也保存不变!
-g :保存源文件的拥有群组;
-o :保存源文件的拥有人;
-D :保存源文件的装置属性 (device)
-t :保存源文件的时间参数;
-I :忽略更新时间 (mtime) 的属性,档案比对上会比较快速;
-z :加上压缩的参数!
-e :使用的信道协议,例如使用 ssh 通道,则 -e ssh
-a :相当于 -rlptgoD ,所以这个 -a 是最常用的参数了!
最后为了让他每个小时同步一次我们还需要用到crontab
crontab -e
1 */1 * * * rsync -avzP --password-file=/etc/rsyncd.pwd backup@192.168.1.1::wwwroot /home/wwwroot
1 */1 * * * rsync -avzP --password-file=/etc/rsyncd.pwd backup@192.168.1.1::www /home/www
每隔1小时的第一分钟执行一次任务
评论
发表评论