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

定时备份和实时备份

rsync常用选项-a归档,复制时可以保存原有的属主属组等属性信息,甚至包含一点额外的属性(如访问控制列表)-v详细输出模式、显示详细过程的-q静默模式,尽可能输出少的信息-r递归复制-c打开校验开关,强制对文件传输进行校验-b创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用–suffix选项指定不同的备份文件前缀。可以使用–backup-dir将备份文件(~filename)存放在此目录下-p保留文件的权限-t保留文件的时间戳-l保留文件的符号链接-g保留文件的属组-o保留文件的属主-n显示哪些文件将被传输-W拷贝文件,不进行增量检查–delete删除那些DST中SRC没有的文件–exclude指定排除不需要传输的文件模式–progress在传输时显示传输过程(进度条)–stats显示状态–password-file=FILE指定从FILE中得到密码–config=FILE指定其他的配置文件,不使用默认的rsyncd.conf软件介绍之inotifyinotify介绍

Inotify 是一个Linux特性,是一种强大的、细粒度的、异步的文件系统监控机制,linux内核从2.6.13起便加入了Inotify支持,通过Inotify可以监控文件系统中添加、修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而Inotify-tools就是这样的一个第三方软件。Inotify反应灵敏,用法简单,并且比使用Crontab轮询高效很多。

inotify常见监控事件IN_ACCESS:文件被访问IN_MODIFY:文件被修改IN_ATTRIB:文件属性被修改IN_CLOSE_WRITE:以可写方式打开的文件被关闭IN_CLOSE_NOWRITE:以不可写方式打开的文件被关闭IN_OPEN:文件被打开IN_MOVED_FROM:文件被移出监控的目录IN_MOVED_TO:文件被移入监控着的目录IN_CREATE:在监控的目录中新建文件或子目录IN_DELETE:文件或目录被删除IN_DELETE_SELF,自删除,即一个可执行文件在执行时删除自己IN_MOVE_SELF,自移动,即一个可执行文件在执行时移动自己

工具一–inotifywait之常用选项介绍:-minotifywait的默认动作是在监控至指定文件的特定事件发生一次后就退出了,而是要此选项则可实现持续性的监控。-r递归监控指定目录下的所有文件,包含新建的文件或子目录;如果要监控的目录中文件数量巨大,则通常需要修改/proc/sys/fs/inotify/max_users_watchs内核参数,因为其默认为8192.-e<event>指定要监控的特定事件,默认是监控所有的事件,包括access,modify,attrib,close_write,close_nowirte,close,open,moved_to,moved_from,move,create,delete,delete_selt等;–timefmt<fmt>当在–format选项中使用%T时,–timefrt选项则可以用来自定义的符合strftime规范的时间格式,,此时间格式可用的格式符可以通过strftime的手册页获取;–timefrt后常有的参数是’%d/%m/%y%H:%M’;–format<fmt>自定义inotiywait的输出格式,如–format’%T%w%f’;常有的选项如下:%w显示被监控文件的文件名;%f如果发生某些事件对象是目录,则显示被监控目录的名字;默认显示为空串;%T使用–timefmt选项中自定义的时间格式;工具二

配置rsyncd+inotify实现实时同步环境介绍目标主机–>rsync服务器端:CentOS6.5源文件主机–>rsync客户端:Ubuntu12.04配置rsync服务器端:

本次环境中采用rsync守护进程的方式进行数据同步。

安装rsync相关程序包###rsync程序系统默认会安装,若没有安装可在此安装###[root@mon-zabbix~]#yum-yinstallrsync###rsync服务通常基于超级守护进程xinetd管理的方式来实现因此需要安装xinetd###[root@mon-zabbix~]#yum-yinstallxinetd提供rsync配置文件###创建配置文件目录###[root@mon-zabbix~]#mkdir-p/etc/rsyncd###创建rsync主配置文件###[root@mon-zabbix~]#touch/etc/rsyncd/rsyncd.conf###这个配置文件有两部分组成,一是全局定义,二是定义rsync共享目录###[root@mon-zabbix~]#cat/etc/rsyncd.conf#GlobalSettings全局定义uid=root#使用哪个用户运行或获取数据gid=root#用户都以来宾账号的方式运行usechroot=no#在服务运行时要不要把他锁在家目录中maxconnections=10#作为服务器端最大并发连接数strictmodes=yes#表示是否工作在严格模式下,严格检查文件权限等相关信息pidfile=/var/run/rsyncd.pid#定义pid文件路径logfile=/var/log/rsyncd.log#定义日志文件存放路径的#Directorytobesynced#定义共享目录[Git_rsync]#要同步的目录名称,多个目录名称不能重名path=/data1/gitbackup/git/#定义目录的路径list=false#是否允许用户列出文件列表readonly=no#如果打算让别人仅仅是来拉取数据的,yes就可以了,如果打算让别人推送过来做备份的那就为no,表示客户端是否可以推送的writeonly=no#只允别人在里面写数据,但不可以拉取数据ignoreerrors=yes#表示如果中间同步过程有一个文件出错了是要继续同步还是中止同步,yes表示继续同步,no表示中止同步hostsallow=10.171.215.112#白名单,那些主机可以访问authusers=git#做用户验证(认证)的,只允许那个用户来同步secretsfile=/etc/rsyncd/rsyncd.secrets#存放验证(认证)用户的密码的###由于守护进程程序xinetd是读取默认rsync的配置(/etc/rsyncd.conf)###[root@mon-zabbix~]#ln-sv/etc/rsyncd/rsyncd.conf/etc/rsyncd.conf提供rsync认证用户密码文件[root@mon-zabbix~]#vim/etc/rsyncd/rsyncd.secretsgit:hui1234#其中冒号前的是用户名,冒号后的是对应用户的密码###由于此密码文件是明文显示,所以文件权限设为600###[root@mon-zabbix~]#chmod600/etc/rsyncd/rsyncd.secrets设置rsync开机自启动[root@mon-zabbix~]#chkconfigrsyncon启动rsync服务[root@mon-zabbix~]#servicexinetdstart查看rsync监听信息[root@mon-zabbix~]#netstat-tanlp|grepxinetdtcp000.0.0.0:8730.0.0.0:*LISTEN27400/xinetd默认情况下,rsyncd监听的端口为TCP:873配置rsync客户端确保内核支持inotify也会有想更换的念头。旅行,正好提供了这样一个机会,

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

相关文章:

你感兴趣的文章:

标签云: