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同步的主要内容,如果未能解决你的问题,请参考以下文章