rsync + inotify 实现数据实时同步

要求:两台Web服务器实现数据同步(我这里使用的是Centos 6.2-x64)

服务器一:172.16.11.126

服务器二:172.16.11.127

一、配置ssh备份源172.16.11.126(这里推荐使用专用的普通用户,注意相应的权限问题,如遇特殊情况使用root用户也可以,即不用考虑权限问题了。 

1、新建备份用户rget rput 分别用来上传下载

[root@localhost ~]#  useradd rget

[root@localhost ~]#  useradd rput

[root@localhost ~]#  passwd rget

[root@localhost ~]#  passwd rput

2、确认sshd服务正常启动,且允许用户rget rput访问

[root@localhost ~]#   vim /etc/ssh/sshd_config

  1. ..........
  2. UserDNS no
  3. AllowUsers rget rput

[[email protected] ~]# service sshd restart

[[email protected] ~]# chown -R rput:rput/var/www/html

[[email protected] ~]# setfacl -R -m user:daemon:rwx /var/www/html /upload

[[email protected] ~]# getgacl /var/www/html/upload

[[email protected] ~]# setfacl -m default:user:daemon:rwx /var/www/html/upload/

[[email protected] ~]# getfacl /var/www/html/upload | grep default

二、配置rsync源服务器。

[[email protected] ~]# yum install rsync

[[email protected] ~]# /etc/init.d/httpd restart

[[email protected] ~]# cd /var/www/html/

[[email protected] html]# /etc/init.d/sshd restart

[[email protected] html]# vim /etc/rsyncd.conf

  1. uid = nobody
  2. gid = nobody
  3. use chroot = yes                 //禁锢在源目录
  4. address = 172.16.11.126          //监听地址
  5. port 873                         //监听端口
  6. log file = /var/log/rsyncd.log   //日志文件位置
  7. pid file = /var/run/rsyncd.pid   //存放进程ID的文件位置
  8. hosts allow = 172.16.11.0/24     //允许访问的客户机地址
  9. [wwwroot]                        //共享模块名称
  10. path = /var/www/html     //源目录的世纪路径
  11. comment = Document Root of www1.dong.com
  12. read only = yes          //只读
  13. dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z  //同步时不再压缩的文件类型
  14. auth users = backuper    //授权账户
  15. secrets file = /etc/rsyncd_users.db               //存放账户信息的数据文件

[[email protected] html]# vim /etc/rsyncd_users.db

  1. backuper:pwd123

[[email protected] html]# chmod 600 /etc/rsyncd_users.db

[[email protected] html]# rsync –daemon          //启动rsync服务

[[email protected] html]# netstat -anpt | grep rsync

tcp        0      0 192.168.1.1:873             0.0.0.0:*                   LISTEN      5458/rsync

# 如需关闭rsync服务时  kill $(cat /var/run/rsyncd.pid)

[[email protected] html]# vim /etc/xinetd.d/rsync

  1. # default: off
  2. # description: The rsync server is a good addition to an ftp server, a
  3. s it \
  4. #       allows crc checksumming etc.
  5. service rsync
  6. {
  7. disable = no                      //将原有的yes改为no
  8. socket_type     = stream
  9. wait            = no
  10. user            = root
  11. server          = /usr/bin/rsync
  12. server_args     = --daemon       //确认有—daemon服务选项
  13. log_on_failure  += USERID
  14. }

[[email protected] html]# yum -y install xinetd

[[email protected] html]# /etc/init.d/xinetd start

三、使用rsync备份工具

SSH备份源

[[email protected] ~]# rsync -avz [email protected]:/var/www/html/ /opt/

rsync备份源

[[email protected] ~]# rsync -avz [email protected]::wwwroot /root

或者

[[email protected] ~]# rsync -azv rsync://[email protected]/wwwroot /root

四、配置rsync + inotify实时同步

1、调整inotify内核参数

[[email protected] ~]# cat /proc/sys/fs/inotify/max_queued_events

16384

[[email protected] ~]# cat /proc/sys/fs/inotify/max_user_instances

1024

[[email protected] ~]# cat /proc/sys/fs/inotify/max_user_watches

1048576

[[email protected] ~]# vim /etc/sysctl.conf

  1. kernel.shmall = 268435456
  2. fs.inotify.max_queued_events = 16384
  3. fs.inotify.max_user_instances =1024
  4. fs.inotify.max_user_watches = 1048576

[[email protected] ~]# sysctl -p

2、安装inofity-tools工具 (这里我已经下载好了inotify-tools-3.14.tar.gz)

[[email protected] ~]# tar -zxvf inotify-tools-3.14.tar.gz

[[email protected] ~]# cd inotify-tools-3.14

[[email protected] inotify-tools-3.14]#  ./configure

[[email protected] inotify-tools-3.14]#  make

[[email protected] inotify-tools-3.14]# make install

[[email protected] inotify-tools-3.14]# inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/ &

3、编写触发式同步脚本

[[email protected] inotify-tools-3.14]# vim /opt/inotifity_rsync.sh

  1. #!/bin/bash
  2. INOTIFY_CMD="/usr/local/bin/inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
  3. RSYNC_CMD="/usr/bin/rsync -azH --delete /var/www/html/ /nfs/"
  4. $INOTIFY_CMD | while read DIRECTORY EVENT FILE
  5. do
  6. if [ $(pgrep rsync | wc -l) -le 0 ]; then
  7. $RSYNC_CMD
  8. fi
  9. done

[[email protected] inotify-tools-3.14]# chmod +x /opt/inotifity_rsync.sh

[[email protected] inotify-tools-3.14]# echo ‘/opt/inotifity_rsync.sh‘ >> /etc/rc.local

注意这是在备份源上面的操作

[[email protected] ~]# vim /etc/exports   (172.16.11.126)

  1. /var/www/html   *(rw,no_root_squash)

[[email protected] ~]# service  nfs  restart

把共享的目录挂在到本地

[[email protected] ~]# mount 172.16.11.126:/var/www/html/ /nfs/

备份源与发起端生成密钥对 (连接时不需要进入交互式)

[[email protected] ~]# ssh-keygen -t rsa

[[email protected] ~]# ssh-copy-id -i .ssh/id_rsa.pub 172.16.11.127

时间: 2024-10-13 23:30:51

rsync + inotify 实现数据实时同步的相关文章

sersync基于rsync+inotify实现数据实时同步

一.环境描述 需求:服务器A与服务器B为主备服务模式,需要保持文件一致性,现采用sersync基于rsync+inotify实现数据实时同步 主服务器A:192.168.1.23 从服务器B:192.168.1.243 实时同步/var/atlassian目录到从服务器. 二.实施 1.从服务器192.168.1.243 rsync服务搭建 1.1安装软件包 wget http://rsync.samba.org/ftp/rsync/src/rsync-3.1.1.tar.gz tar xf r

利用rsync+inotify实现数据实时同步脚本文件

将代码放在Server端,实现其它web服务器同步.首先创建rsync.shell,rsync.shell代码如下: #!/bin/bash host1=133.96.7.100 host2=133.96.7.101 host3=133.96.7.102 src=/data/www/ dst1=web1 dst2=web2 dst3=web3 user1=web1 user2=web2 user3=web3 /usr/local/inotify/bin/inotifywait -mrq --ti

[转帖]sersync基于rsync+inotify实现数据实时同步

sersync基于rsync+inotify实现数据实时同步 https://www.jianshu.com/p/d532a34e5cc5 前言 提到数据同步就必然会谈到rsync,一般简单的服务器数据传输会使用ftp/sftp等方式,但是这样的方式效率不高,不支持差异化增量同步也不支持实时传输. 原文地址:https://www.cnblogs.com/nbxcnxvcnb/p/12393252.html

rsync+inotify实现数据实时同步备份

在实际生产环境当中,我们总会遇见需要把一些重要数据进行备份,且随着应用系统规模的增大,对数据的安全性.可靠性.时效性要求还是比较高的, 因此我自己有在用rsync+inotify来实现数据实时同步备份,下面记录下操作步骤,以防日后自己忘记. 实验背景: 操作系统          IP         机器名        角色 CentOS 7.2       172.16.22.1     nginx01        数据源(服务器端) CentOS 7.2       172.16.22

rsync+inotify实现数据实时同步

inotify简介 inotify是一种强大的.细粒度的.异步的文件系统事件监控机制,Linux内核从2.6.13开始引入,允许监控程序打开一个独立文件描述符,并针对事件集监控一个或者多个文件,例如打开.关闭.移动/重命名.删除.创建或者改变属性. 配置inotify需要rsync服务能直接传输数据(免密码传输). rsync配置请参考我的另一篇利用rsync进行数据同步. 服务端已配置完毕,inotify配置在客户端. 1.[[email protected] ~]# wget http://

通过rsync+inotify实现数据实时备份同步

一.环境描述 测试环境 需求:服务器A与服务器B为主备服务模式,需要保持文件一致性,现采用sersync基于rsync+inotify实现数据实时同步 环境描述: 主服务器172.26.7.50 ,从服务器172.26.7.51 实时同步/home/ 及/download 目录到从服务器 二.实施方法 1.从服务器172.26.7.51 rsync服务搭建 1.1下载软件包至从服务器 下载地址:http://rsync.samba.org/ftp/rsync/src 可根据环境需求下载相应的软件

基于rsync+inotify实现数据实时同步传输

前言 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,但随着文件数量的增大和实时同步的要求,rsync已不能满足需求,随之rsync+inotify便应运而生.本文将讲解rsync的基础知识和如何基于rsync+inotify实现数据实时同步传输. rsync相关介绍 rsync(remote sync)是一款快速增量备份工具(远程同步),支持本地复制,或者与其他SSH(安全传输).rsync主机同步.

Linux下Rsync+Inotify-tools实现数据实时同步

说明: 一.先安装好rsync的服务端和客户端: http://douya.blog.51cto.com/6173221/1573968 二.安装,使用inotify-tools,实时同步 1.查看服务器内核是否支持inotify ll /proc/sys/fs/inotify   #列出文件目录,出现下面的内容,说明服务器内核支持inotify -rw-r--r-- 1 root root 0 Mar  7 02:17 max_queued_events -rw-r--r-- 1 root r

centos 6.9使用Rsync+Inotify-tools实现数据实时同步

说明: 操作系统:CentOS 6.9 源服务器:192.168.1.222 备份服务器:192.168.1.1.233 目的:把源服务器上/backup目录实时同步到备份服务器的/backup目录下 一.在备份服务器安装Rsync服务端 1.关闭SELINUX vi /etc/selinux/config #编辑防火墙配置文件 #SELINUX=enforcing #注释掉 #SELINUXTYPE=targeted #注释掉 SELINUX=disabled #增加 :wq! #保存,退出