使用rsync与inotify实现网站程序的主从同步

发布时间:2020-04-19编辑:脚本学堂
rsync是Linux系统下文件同步可数据传输的工具,采用rsync算法使客户机与服务器,主服务器与备份服务器数据同步。

一、rsync
rsync是linux系统下文件同步可数据传输的工具,采用rsync算法使客户机与服务器,主服务器与备份服务器数据同步。
rsync也能实现中断后恢复传输。
rsync支持增量备份。

三、rsync有4种模式
1.本地模式。
2.远程shell模式
3.查询模式
4.C/S模式

安装rsync测试一下。
 

复制代码 代码如下:
tar xvf rsync-3.0.9.tar.gz
cd rsync-3.0.9
./configure
make && make install

rsync --help 查看选项
-v, --verbose ##详细模式
-r, --recursive ##递归
-u, --update ##更新
-t, --times ##保持时间
-z, --compress ##启用压缩
-o, --owner ##保持属主
-g, --group ##保持属组
-p, --perms ##保持权限
--delete ##以前边目录为准,同步
--progress ##显示传输过程
--exclude=PATTERN ##不同步模式匹配的文件
--password-file=FILE ##密码文件位置

1.本地模式
rsync -rv /etc/passwd . ##拷贝passwd 到当前目录

2.远程shell模式
rsync -rv /etc/passwd 172.16.1.3:/tmp ##把passwd拷贝到远程主机上

3.列表模式
rsync -r 172.16.1.3:/tmp ##查看远程目录下的文件

前三种模式都可以用ssh来实现,我们着重来研究第四种
 
规划:
Master:172.16.1.2
Slave:172.16.1.2

一、Master上安装配置rsync
1.1 安装就不说了,刚才那样就行
1.2 配置rsync
安装时生成配置文件样例在/usr/local/share/man/man5下,叫作rsyncd.conf.5 拷备到/etc/下叫rsyncd.conf,rsyncd.conf文件由多个模块组成,包含全局参数和模块参数,前面的是注释,主要内容有:
uid = nobody ##全局配置开始,指文件传输时模块进程的uid
gid = nobody ##同上gid
use chroot = no ##是否让进程离开工作目录
max connections = 4 ##最大并发数
syslog facility = local5 ##记录日志的facility
pid file = /var/run/rsyncd.pid ##pid位置
[ftp] ##模块配置开始
path = /var/ftp/pub ##需要备份的目录,必须指定,
comment = whole ftp area ##注释
read only = no ##客户端是否只读
write only = no ##是否只能写
hosts allow = * ##允许同步主机
hosts deny = 192.168.0.0/24 ##禁止访问的主机
list = yes ##是否允许列出所有模块
uid = root
gid = root
auth users = slave ##可以连接该模块的user
secrets file = /etc/rsync.pass ##密码文件在哪,需要自己建立

1.3 建立密码文件 /etc/rsync.pass 如下格式,并确保权限为600或400
slave:helloworld

1.4 启动守户进程
rsync --daemon ##启动守护进程
netstat -tlnp |grep rsync 查看是否启动,查看监听端口

二、slave端rsync设置
2.1 安装rsync 看上方
2.2 不需要配置文件,直接运行命令即可,为了不用输入密码,建立密码文件,并确保权限为600
echo "helloworld" >/root/rsync.pass.slave

2.3 rsync的选项过多,我们把它写到一个脚本中,需要的时候运行即可
vi /root/rsync.sh
 

复制代码 代码如下:
#!/bin/bash
/usr/local/bin/rsync -vzrtogpg --delete --progress
slave@172.16.1.2::ftp /var/ftp/pub --password-file=/root/rsync.pass.slave
chmod +x /root/rsync.sh ##修改权限

三、测试
在master的目录中添加文件,查看是否能同步
cp /etc/passwd /var/ftp/pub

slave运行脚本测试
sh /root/rsync.sh
查看/var/ftp/pub 中是否多了个文件

四、客户端创建备份策略,每隔10秒同步一次
大家都知道cron只能精确到分,下面我们用脚本实现每5秒同步一次
vi cron.sh
 

复制代码 代码如下:
#!/bin/bash
for ((i=1;i<=12;i++));do
echo "*/1 * * * * /root/rsync.sh" >> /var/spool/cron/root
sleep 5
done

再次在/var/ftp/pub中添加文件,看是否能正常同步。

您可能感兴趣的文章:
rsync与inotify实现数据同步的实例分享
单向实时同步文件rsync+inotify-tools的配置教程
rsync+inotify 文件实时同步的配置详解
inotify+rsync配置实例详解
rsync+inotify 文件同步配置实例
inotify-tools+rsync实时同步文件的配置方法
Inotify自动监控文件并同步到服务器的shell脚本
使用rsync与inotify实时同步备份数据
使用inotify+csync2实现文件的双向同步
使用inotifywait实现目录监控