inotify+rsync同步

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了inotify+rsync同步相关的知识,希望对你有一定的参考价值。

inotify+rsync同步

rsync:一款快速增量备份工具 Remote Sync实现网站的备份,文件的同步,不同系统的文件的同步,如果是windows的话,需要windows版本cwrsync

rsync 包括如下的一些特性:

  能更新整个目录和树和文件系统;

  有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间等;

  对于安装来说,无任何特殊权限要求;

  对于多个文件来说,内部流水线减少文件等待的延时;

  能用rsh、ssh 或直接端口做为传输入端口;

  支持匿名rsync 同步文件,是理想的镜像工具;

inotify-tools 是为linux下inotify文件监控工具提供的一套c的开发接口库函数,同时还提供了一系列的命令行工具,这些工具可以用来监控文件系统的事件。 inotify-tools是用c编写的,除了要求内核支持inotify外,不依赖于其他。inotify-tools提供两种工具,一是inotifywait,它是用来监控文件或目录的变化,二是inotifywatch,它是用来统计文件系统访问的次数。

技术分享

------------在备份服务器129上搭建rsync--------------

[[email protected] ~]# cat /etc/redhat-release

CentOS release 6.4 (Final)

[[email protected] ~]# ifconfig eth0|grep "inet addr"|awk ‘{print $2}‘|awk -F ":" ‘{print $2}‘

192.168.222.131

1.[[email protected] ~]# yum install rsync -y

------------rsync主要有以下三个配置文件--------------

2.[[email protected] ~]# vi /etc/rsyncd.conf 创建rsyncd.conf,这是rsync服务器的配置文件。

# 守护进程pid文件

pid file = /var/run/rsyncd.pid

#端口号

port = 873

#服务器ip

address = 192.168.222.129

#全局配置

uid = root

gid = root

#允许 chroot,提升安全性,客户端连接模块,首先chroot到模块path参数指定的目录下

#chroot为yes时必须使用root权限,且不能备份path路径外的链接文件

use chroot = yes

read only = no

write only = no

#允许访问rsyncd服务的ip,ip段或者单独ip之间使用空格隔开

hosts allow = 192.168.222.131/255.255.255.0 192.168.111.0/24

#不允许访问rsyncd服务的ip,*是全部(不涵盖在hosts allow中声明的ip,注意和hosts allow的先后顺序)

hosts deny = *

#客户端最大连接数

max connections = 10

timeout = 300

#欢迎文件路径,可选

motd file = /etc/rsyncd.motd

#日志文件

log file = /var/log/rsyncd.log

# transfer logging 是否记录传输文件日志

transfer logging = yes

# log format 日志文件格式,格式参数请google

log format = %t %a %m %f %b

#模块

[backup]

#模块根目录,必须指定

path=/backup

#是否允许列出模块里的内容

list = yes

ignore errors = yes

#模块验证用户名称,可使用空格或者逗号隔开多个用户名

auth users = zdj

#模块验证密码文件 可放在全局配置里

secrets file=/etc/rsyncd.secrets

#排除目录,多个之间使用空格隔开

#exclude = test1/ test2/

模块定义

  模块定义什么呢?主要是定义服务器哪个目录要被同步。每个模块都要以[name]形式。这个名字就是在rsync 客户端看到的名字,其实有点象Samba服务器提供的共享名。而服务器真正同步的数据是通过path 指定的。我们可以根据自己的需要,来指定多个模块。每个模块要指定认证用户,密码文件、但排除并不是必须的

  

3.[[email protected] ~]# vi /etc/rsyncd.motd 建rsyncd.motd,这是rysnc服务器信息文件,可选。

++++++++++++++++++++++++++++++++++++++++++++++

welcome to use the zdj rsync services!

2016-5-11   

++++++++++++++++++++++++++++++++++++++++++++++

4.[[email protected] ~]# vi /etc/rsyncd.secrets 创建rsyncd.secrets ,这是用户密码文件。

用户名:密码

zdj:123456

[[email protected] ~]# chmod 600 /etc/rsyncd.secrets 将rsyncd.secrets这个密码文件的文件属性设为root拥有, 且权限要设为600, 否则无法备份成功!

5.[[email protected] /]# chkconfig rsync on

6.--daemon参数方式,是让rsync以服务器模式运行

#--config用于指定rsyncd.conf的位置,如果在/etc下可以不写默认配置文件是/etc/rsyncd.conf

[[email protected] ~]# /usr/bin/rsync --daemon

[[email protected] ~]# lsof -i:873

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

rsync 13052 root 4u IPv4 358660 0t0 TCP 192.168.222.129:rsync (LISTEN)

7.放开防火墙端口

[[email protected] ~]# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT

------------在masterserver131上测试--------------

[[email protected] ~]# ifconfig eth0|grep "inet addr"|awk ‘{print $2}‘|awk -F ":" ‘{print $2}‘

192.168.222.131

--1.输入密码访问

[[email protected] /]# rsync --list-only [email protected]::backup

++++++++++++++++++++++++++++++++++++++++++++++

welcome to use the zdj rsync services!

2016-5-11   

++++++++++++++++++++++++++++++++++++++++++++++

Password:

drwxr-xr-x 4096 2016/05/11 14:11:17 .

--2.用密码文件访问

[[email protected] /]# echo "123456">>/etc/rsyncd.secrets

[[email protected] /]# cat /etc/rsyncd.secrets

123456

[[email protected] /]# chmod 600 /etc/rsyncd.secrets

[[email protected] /]# rsync --list-only --password-file=/etc/rsyncd.secrets [email protected]::backup

++++++++++++++++++++++++++++++++++++++++++++++

welcome to use the zdj rsync services!

2016-5-11  

++++++++++++++++++++++++++++++++++++++++++++++

drwxr-xr-x 4096 2016/05/11 14:11:17 .

--3.测试同步:

将本机的/data目录同步到rsync服务器

[[email protected] data]# rsync -avzP --delete /data [email protected]::backup

红蓝部分交换位置将会是相反的效果

------------masterserver--inotify-tools 安装使用-------------

实时监控变化,保障同步,数据一致性

1.下载安装

wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

mv  inotify-tools-3.14.tar.gz  /usr/local

cd  /usr/local

tar xf inotify-tools-3.14.tar.gz

mv inotify-tools-3.14 inotify

./configure

make&&make install

2.编写脚本实时同步:

Other:/usr/bin/inotifywait -mrq --timefmt ‘%Y/%m/%d-%H:%M:%S‘ --format ‘%T %w %f‘ \

-e modify,delete,create,move,attrib /root/tmp/

上面的命令表示,持续监听/root/tmp目录及其子目录的文件变化,监听事件包括文件被修改、删除、创建、移动、属性更改,显示到屏幕。执行完上面的命令后,在/root/tmp下创建或修改文件都会有信息输出:

[[email protected] data]# vi /usr/local/inotify/backup.sh

inotifywait -mrq --timefmt ‘%Y/%m/%d-%H:%M:%S‘ --format ‘%T %w %f %e‘ -e modify,attrib,move,create,delete /data|while read files

do

rsync -vzrtopg --delete --progress --password-file=/etc/rsyncd.secrets /data/ [email protected]::backup && echo "${files} was rsynced" >>/tmp/rsync.log 2>&1

echo "---------------------同步成功--------------------"

done

3.后台运行

[[email protected] data]# chmod +x /usr/local/inotify/zdj.sh

[[email protected] data]# bash /usr/local/inotify/backup.sh &

[1] 31798

[[email protected] data]# ps -ef|grep backup

root 31798 29998 0 15:02 pts/1 00:00:00 bash /usr/local/inotify/backup.sh

root 31800 31798 0 15:02 pts/1 00:00:00 bash /usr/local/inotify/backup.sh

root 31803 29998 0 15:02 pts/1 00:00:00 grep backup

4.测试

[[email protected] data]# mkdir this is very good

[[email protected] data]# ++++++++++++++++++++++++++++++++++++++++++++++

welcome to use the zdj rsync services!

2016-5-11 

++++++++++++++++++++++++++++++++++++++++++++++

sending incremental file list

./

good/

is/

very/

sent 100 bytes received 24 bytes 82.67 bytes/sec

total size is 0 speedup is 0.00

---------------------同步成功--------------------

在备份机上查看是否同步:

[[email protected] backup]# ls

good is this very

 

BLOG:

http://blog.csdn.net/peisl/article/details/6931088

http://debris.blog.51cto.com/1614432/1683627

http://ljbaby.blog.51cto.com/10002758/1675870

Rsync 常见错误及解决方法

http://www.tuicool.com/articles/me2IFjf


以上是关于inotify+rsync同步的主要内容,如果未能解决你的问题,请参考以下文章

Rsync下行同步+inotify实时同步介绍和部署

rsync下行同步rsync+inotify实时同步(同步如饮水一样简单)

实时同步rsync+inotify

rsync+inotify远程同步

rsync+inotify实现数据同步

rsync与inotify实现数据实时同步