文章目录
inotify介绍:
用来持续监控磁盘事件,查看是否支持inotify
uname-r #内核2.6.13就开始支持了
ll /proc/sys/fs/inotify/ #
-rw-r--r--. 1 root root 0 10月 3 16:38 max_queued_events #表示监控事件队列长度
-rw-r--r--. 1 root root 0 10月 3 16:38 max_user_instances #表示最多监控的实例数
-rw-r--r--. 1 root root 0 10月 3 16:38 max_user_watches #表示每个实例最多监控的文件数,最关心这个,默认8192
注意:当要监控的目录,文件数量较多或者变化比较频繁时,要加大这三个参数的值
vim /etc/sysctl.conf #添加以下内容
fs.inotify.max_queued_events = 32768
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 9000000
sysctl -p #刷新生效
cat /proc/sys/fs/inotify/max_user_watches #查看验证生效
安装inotify-tools软件
1:先安装epel源
2:yum install inotify*
inotifywait的常用参数
-e:指定要监控的事件,create创建,move移动,delete删除,modify修改文件内容,attrib文件属性修改
-m:表示持续监控
-r:表示递归整个目录
-q:表示简化输出信息
inotifywait -mrq -e create,move,delete,modify,attrib /var/www/html
再开一个终端,在对应目录里增删改文件,看屏幕是否有监控的事件输出,有则能做到监控磁盘事件
rsync特点
增量备份,远程备份,压缩传送,加密传送
rsync(相当于cp,支持增量)
本地模式
rsync -avz -P /etc /tmp/
远程模式
rsync -avz -P /etc -e ‘ssh -p 22’ root@192.168.56.10:/tmp/ #借助ssh隧道推送
rsync -avz -P -e ‘ssh -p 22’ root@192.168.56.10:/etc /tmp/ #借助ssh隧道抓取
以守护进程的方式运行(服务端执行)
查看帮助:man rsyncd.conf
vim /etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = yes
read only = no #可读可写
max connections = 4 #最大连接数
pid file = /var/run/rsyncd.pid
exclude = lost+found/
transfer logging = yes #连接超时
timeout = 900
ignore nonreadable = yes
hosts allow = 192.168.56.22 #允许来访的ip
hosts allow = 192.168.16.0/24 #拒绝某些ip
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
[myftp] #定义一个模块,上面的大多数参数都可以放在模块里,根nfs一样,可以有多个共享模块
path = /home/ftp #注意这个目录的权限要uid可以操作哦,这个目录一定要存在
list = false #允许客户端查询这个模块
comment = ftp export area
auth users = rsync_backup
secrets file = /etc/rsync.password
配置验证文件
echo “rsync_backup:zheshimima” > /etc/rsync.password #前面是账户,后面是密码
设置权限:
chmod 600 /etc/rsync.password
启动rsync:
rsync --daemon
ps -ef |grep rsync
ss -tnl |grep 873
设置开机自启动
which rsync
echo “/usr/bin/rsync –damenon” >> /etc/rc.local
rsync客户端配置
echo “zheshimima” > /etc/rsync.password #这里客户端只填密码,不填账户
chmod 600 /etc/rsync.password
#演示客户端推送到服务端
rsync -avz -P /etc rsync_backup@192.168.56.10::myftp/ --password-file=/etc/rsync.password #注意是双冒号接模块名,再加密码文件
rsync -avz -P /etc rsync://rsync_backup@192.168.56.10:/home/ftp/ --password-file=/etc/rsync.password #与上面的效果相同,这是直接接路径的
rsync -avz -P --delete /etc rsync_backup@192.168.56.10::myftp/ --password-file=/etc/rsync.password #无差异同步,让远端与本地保存一致;若是多余的全部删除,灰常危险
#演示客户端抓取
rsync -avz -P rsync_backup@192.168.56.10::/myftp/ /tmp --password-file=/etc/rsync.password
需求:
编写触发式脚本,实现磁盘事件变动就触发rsync同步
(思路:只要检测到有变动就执行同步)
mkdir /scripts && cd /scripts
vim inotify_rsync.sh
#!/bin/bash
inotifywait -mrq -e create,move,delete,modify,attrib /var/www/html |while read a b c
do
rsync -azP --delete rsync_backup@192.168.56.10::myftp/ /var/www/html --password-file=/etc/rsync.password #实际生产环境,ssh改了端口需要使用-e参数,见上
done
最后为脚本设置执行权限,并加入开机自起rc.local,注意centos7里面这个文件需要添加执行权限
在执行脚本时
/scripts/inotify_rsync.sh >/dev/null 2>&1 &
如果文章对你有帮助,欢迎点击上方按钮打赏作者
暂无评论