博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
配置rsync+inotify 实时同步
阅读量:6378 次
发布时间:2019-06-23

本文共 3975 字,大约阅读时间需要 13 分钟。

rsync简介:

rsync是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,保持连接和权限,且采用优化的同步算法,在传输前执行压缩,因此非常适用于异地备份,镜像服务器等。rsync的官方站点是http://rsync.samba.org/. 作为一种最常用的文件备份工具,rsync是Linux和Unix系统默认安装的基本组件之一。

[root@promote ~]# rpm -q rsyncrsync-3.0.9-18.el7.x86_64

inotify简介:

Inotify 是一个 Linux 内核特性,它监控文件系统,并且及时向专门的应用程序发出相关的事件警告,比如删除、读、写和卸载操作等。

rsync工具与inotify机制相结合,可以实现触发式备份(实时同步)。只要原始位置的文档发生变化,,就立即启动增量备份操作。

环境:

主机 IP 软件
rsync服务器 192.168.100.135 rsync
rsync客户机 192.168.100.140 rsync、inotify

关闭所有主机的防火墙和安全性策略,仅实验参考。

systemctl stop firewallde.servicesetenforce 0

1.配置rsync服务端

(1)建立/etc/rsyncd.conf 配置文件

以网站站点作为源目录/var/www/html和备份账号backuper为例进行配置。

vim /etc/rsyncd.conf uid = nobody      gid = nobody use chroot = yes       #禁锢在源目录 address = 192.168.100.135  #监听地址 port 873               #监听端口 log file = /var/log/rsyncd.log #日志文件位置 pid file = /var/run/rsyncd.pid #存放进程ID的文件位置 hosts allow = 192.168.100.0/24 #允许访问的客户机地址[wwwroot]             #共享模块名称 path = /var/www/html #源目录的实际路径 comment = www.kgc.cn  read only = yes     #是否为只读 dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2  #同步时不再压缩的文件类型 auth users = backuper  #授权账户 secrets file = /etc/rsyncd_users.db  #存放账户信息的数据文件

(2)为备份账户创建数据文件。

添加一行用户记录,以冒号分割。还需调整账户权限,避免账户泄露。

vim /etc/rsyncd_users.db  backuper:abc123chmod 600 /etc/rsyncd_users.db

(3)创建共享路径

mkdir -p /var/www/htmltouch /var/www/html/index.html

(3)启动rsync服务程序,运行参数为--daemon

执行rsync --daemon命令就可以启动rsync服务。若要关闭rsync服务,可以采取kill进程的方式,如kill $(cat /var/run/rsyncd.pid),再删掉pid文件即可。

rsync --daemon

配置rsync+inotify 实时同步

2.配置rsync客户端

(1)启动rsync服务

rsync --daemon

(2)访问源服务器中的wwwroot共享模块,并下载到本地/myweb目录下

mkdir /myweb格式一:rsync -avz backuper@192.168.100.135::wwwroot /myweb   //密码abc123格式二:rsync -avz rsync://backuper@192.168.100.135/wwwroot /myweb

配置rsync+inotify 实时同步

rsync命令的基本用法

-a 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。

-z 对备份的文件在传输时进行压缩处理。
-H 保留硬链结。
-D 保持设备文件信息。
-A 保留ACL属性信息
--delete 删除那些目标位置有而原始位置没有的文件。
--checksum 打开校验开关,强制对文件传输进行校验。

(3)确认同步结果

[root@promote ~]# ls /mywebindex.html

(4)按计划做免交互执行同步

为了在同步过程中不用输入密码,需要创建一个密码文件如/etc/server.pass,在执行同步时使用选项--password-file=/etc/server.pass指定即可。

vim /etc/server.pass   abc123
[root@promote ~]# cat /etc/server.pass abc123[root@promote ~]# chmod 600 /etc/server.pass //设置权限[root@promote ~]# crontab -e     30 22 * * * rsync -az --delete --password-file=/etc/server.pass backuper@192.168.100.135::wwwroot /myweb//每天22点30分执行同步[root@promote ~]# service crond start  //启动计划任务Redirecting to /bin/systemctl start crond.service[root@promote ~]# chkconfig crond on注意:正在将请求转发到“systemctl enable crond.service”。

(5)调整inotify内核参数

vim /etc/sysctl.conf  fs.inotify.max_queued_events = 16384  //监控事件队列(16384)  fs.inotify.max_user_instances = 1024  //最多监控实例数(1024  fs.inotify.max_user_watches = 1048576 //每个实例最多监控文件数(1048576sysctl -p

(6)安装inotify-tools

inotify-tools提供inotifywait和inotifywatch辅助工具程序,用来监控和汇总改动情况。

yum install gcc gcc-c++ -y   //安装gcc编译环境
tar zxvf inotify-tools-3.14.tar.gz -C /opt/cd /opt/inotify-tools-3.14./configuremake && make install

(7)以监控网站目录/var/www/html为例

yum install httpd -y

(8)执行inotifywait命令,然后在另一个终端向/var/www/html目录下添加、移动文件,跟踪屏幕输出结果。

inotifywait -mrq -e modify,create,move,delete /var/www/html/

inotifywait命令选项:

  • -e用来指定要监控那些事件
  • -m表示持续监控
  • -r表示递归整个目录
  • -q简化输出信息

另一个终端在目录路径下对文件进行创建和删除操作。

配置rsync+inotify 实时同步
返回到原来的终端查看屏幕输出结果。
配置rsync+inotify 实时同步

(9)编写触发式同步脚本

vim /opt/inotify.sh#!/bin/bashINOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.100.135::wwwroot/"$INOTIFY_CMD | while read DIRECTORY EVENT FILEdo    if [ $(pgrep rsync | wc -l) -ge 0 ] ; then        $RSYNC_CMD    fidonechmod +x /opt/inotify.sh

3.验证

(1)编辑配置文件修改“read only”,然后将服务器中/var/www/html目录设置成可写权限,属主和属组改成与uid一样。

vim /etc/rsyncd.conf  [wwwroot]    ....  read only=No  ....
chmod 777 /var/www/htmlchown -R nobody:nobody /var/www/html

(2)在本机运行/opt/inotify.sh脚本程序

[root@promote ~]# cd /opt/[root@promote opt]# ./inotify.sh

(3)切换到本机的/var/www/html,执行添加、修改、删除等操作。

配置rsync+inotify 实时同步

(3)查看服务器中的/var/www/html目录下的变化.

配置rsync+inotify 实时同步

转载于:https://blog.51cto.com/11134648/2152868

你可能感兴趣的文章
Java Outputstream to String
查看>>
RS232C串口通信接线方法(三线制)
查看>>
Android 自定义View属性相关细节
查看>>
type already defined error in Eclipse
查看>>
OSA 安装
查看>>
先安装.Framework然后再安装IIS,ASP.NET程序不能运行
查看>>
NPOI Excel下拉项生成设置
查看>>
360该不该拍?
查看>>
用Xib创建控制器
查看>>
oracle的sqlplus和dos的中文乱码问题
查看>>
LVS+keepalived高可用负载均衡集群部署(二)---LAMP网站服务器与LVS服务器
查看>>
Struts2之简单数据类型转换
查看>>
python 打印数字
查看>>
iptables规则的查看、添加、删除和修改
查看>>
打开网站显示输入用户名和密码
查看>>
size_t的32位和64位兼容
查看>>
HBase全分布式模式的安装和配置
查看>>
Spring 框架的设计理念与设计模式分析
查看>>
十年web老兵整理的前端视频资料
查看>>
工作线程数究竟要设置为多少
查看>>