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 root@192.168.111.103:/tmp 方式二:rsync -avz -e 'ssh' /etc/hosts root@192.168.111.103:/tmp 拉:poll 方式一:rsync -avz -e 'ssh ' root@192.168.111.103:/etc/passwd /tmp 方式二:rsync -e 'ssh ' root@192.168.111.103:/etc/passwd /tmp
4.rsync参数
-v 详细模式输出,传输时的进度等信息 -z compress,压缩传输,提高传输效率 -a 归档模式,表示以递归方式传输文件,并保存所有文件属性,等于-rvztopgD1 -P 显示同步的过程及传输时的进度等信息;
(2)rsync服务器端配置,也就是备份服务器
服务器端 | 192.168.1.223 | |
客服端 | 192.168.1.221 |
服务端配置:创建rsync配置文件,默认不存在
[root@server-01 data1]# cat /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.168.1.0/24 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 rsync_backup@192.9.191.30::data /data1 --password-file=/etc/rsync 不需要输入密码:rsync -avz rsync_backup@192.9.191.30::data /data1 --password-file=/etc/rsync.password push:推,把客户端本地/data1/目录下的文件推到备份服务器的/data目录 不需要输入密码:rsync -avz /data1 rsync_backup@192.9.191.30::data --password-file=/etc/rsync.password 注意:/data1/推送目录下的文件,不包含目录名,/data推送包含目录名
4.无差异同步,参数--delete
推push:备份,本地有啥,远端就有啥,本地没有的远端有也要删除,删除器端的目录数据可能丢失 rsync -avz --delete /data1 rsync_backup@192.9.191.30::data --password-file=/etc/rsync.password 拉pull:远端有啥,本地就有啥,远端没有的本地有也要删除。本地端的目录数据可能丢失 rsync -avz --delete rsync_backup@192.9.191.30::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.可以使用yum安装,要使用epel原。
6..inotify脚本
[root@server-02 ~]# cat test2.sh #!/bin/bash host=192.168.1.223 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 [root@server-02 ~]#
7.启动脚本并测试
nohup bash /server/scripts/inotify.sh & echo "nohup bash /server/scripts/inotify.sh &" >>/etc/rc.local touch /data/file1 //触发inotify服务 在备份服务器上验证:ll /data/data1
8.inotify优化
echo 50000000 >/proc/sys/fs/inotify/max_user_watches echo 327679 >/proc/sys/fs/inotify/max_queued_events
9.inotifywait参数详解
-r:递归 -q:打印很少的信息,仅仅打印监控事件信息, -m:始终保持时间监听状态 -exludei :排除文件或目录时,不区分大小写 -e:通过此参数可以执行需要监控的事件 access: modify:文件或目录内容被修改 attrib:文件或目录属性被改变 close: open: moved_to : move: create: delete:文件或目录被删除 mount: umount