CentOS7安装和配置rsync+inotify

(1)rsync介绍

1.rsync介绍
开源,实现全量及增量的本地或远程数据同步备份工具
2.工作场景:
存储实时备份:rsync+inotify
定时备份:rsync+crond
3.rsync工作方式
1)单个主机本地之间的数据传输
2)借助rcp,ssh等通道来传输数据,类似scp命令
3)以守护进程的方式(socket)

通道模式:借助ssh
推:push
    方式一:rsync  -e 'ssh -p 22'  /etc/hosts  [email protected]:/tmp
    方式二:rsync -avz  -e 'ssh'  /etc/hosts  [email protected]:/tmp
拉:poll
    方式一:rsync -avz -e 'ssh ' [email protected]:/etc/passwd   /tmp
    方式二:rsync  -e 'ssh ' [email protected]:/etc/passwd   /tmp

4.rsync参数

-v  详细模式输出,传输时的进度等信息
-z  compress,压缩传输,提高传输效率
-a  归档模式,表示以递归方式传输文件,并保存所有文件属性,等于-rvztopgD1
-P  显示同步的过程及传输时的进度等信息;

(2)rsync服务器端配置,也就是备份服务器

CentOS7安装和配置rsync+inotify
1.创建rsync配置文件,默认不存在

#yum install rsync -y
#vim /etc/rsyncd.conf
##rsyncd.conf start##
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[data]
path = /data/
ignore errors
read only = false
list = false
hosts allow = 192.9.191.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password

2.创建用户和备份目录以及修改属主

useradd rsync -s /sbin/nologin 
mkdir /data 
chown -R rsync.rsync /data

3.创建客户端虚拟用户以及密码文件,修改密码文件权限

echo "rsync_backup:redhat"  >/etc/rsync.password            //虚拟用户密码是redhat
chmod 600 /etc/rsync.password

4.启动服务和开机启动

echo " rsync --daemon" >>/etc/rc.local
rsync --daemon

5.验证,rsync端口873

ps -ef | grep rsync 
ss -antlup | grep 873

6.关闭selinux和防火墙

(3)rsync客户端配置

1.安装rsync和创建目录
yum install rsync -y
mkdir /data1
2.创建密码文件

echo "redhat" >/etc/rsync.password  && chmod 600 /etc/rsync.password

3.拉和推

pull:拉,在客户端上从服务器的/data目录的数据拉到本地的/data1目录
    需要输入密码:rsync -avz [email protected]::data /data1 --password-file=/etc/rsync
    不需要输入密码:rsync -avz [email protected]::data /data1 --password-file=/etc/rsync.password
push:推,把客户端本地/data1/目录下的文件推到备份服务器的/data目录
    不需要输入密码:rsync -avz /data1 [email protected]::data  --password-file=/etc/rsync.password 
注意:/data1/推送目录下的文件,不包含目录名,/data推送包含目录名

4.无差异同步,参数--delete

推push:备份,本地有啥,远端就有啥,本地没有的远端有也要删除,删除器端的目录数据可能丢失
    rsync -avz --delete  /data1 [email protected]::data  --password-file=/etc/rsync.password 
拉pull:远端有啥,本地就有啥,远端没有的本地有也要删除。本地端的目录数据可能丢失
    rsync -avz --delete [email protected]::data /data1 --password-file=/etc/rsync.password

(3)inotify客户端配置

作用:inotify监控目录的实时变化,然后通知调用rsync执行rsync命令同步数据
1.查看当前系统是否支持inotify

#ll /proc/sys/fs/inotify/
-rw-r--r-- 1 root root 0 5月  20 18:14 max_queued_events
-rw-r--r-- 1 root root 0 5月  20 18:14 max_user_instances
-rw-r--r-- 1 root root 0 5月  20 18:14 max_user_watches

2.下载和编译安装inotify

wget  http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar xf inotify-tools-3.14.tar.gz 
cd inotify-tools-3.14
./configure --prefix=/usr/local/inotify
make && make install

3.添加环境变量

echo "PATH=$PATH:/usr/local/inotify/bin/" >>/etc/profile  && source /etc/profile

4.测试监控时间,开启多窗口创建文件

inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,modify,delete,create,attrib,move /data1

5.inotify脚本

#vim /server/scripts/inotify.sh 
#!/bin/bash
host=192.9.191.30
src=/data1
dst=data
user=rsync_backup
rsync_passfile=/etc/rsync.password
inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,modify,delete,create,attrib,move $src | while read file
do
rsync -az --delete $src  $user@$host::$dst --password-file=$rsync_passfile
done

6.启动脚本并测试

nohup bash /server/scripts/inotify.sh &
echo "nohup bash /server/scripts/inotify.sh &" >>/etc/rc.local
touch /data/file1       //触发inotify服务
在备份服务器上验证:ll /data/data1

7.inotify优化

echo 50000000 >/proc/sys/fs/inotify/max_user_watches 
echo 327679 >/proc/sys/fs/inotify/max_queued_events

8.inotifywait参数详解

-r:递归
-q:打印很少的信息,仅仅打印监控事件信息,
-m:始终保持时间监听状态
-exludei :排除文件或目录时,不区分大小写
-e:通过此参数可以执行需要监控的事件
    access:
    modify:文件或目录内容被修改
    attrib:文件或目录属性被改变
    close:
    open:
    moved_to :
    move:
    create:
    delete:文件或目录被删除
    mount:
    umount

相关推荐