rsync结合 inotfiy 实现实时备份的问题
<h2>1. 简介</h2><p><strong>rsync简介:</strong><br />
rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步</p>
<p><strong>Inotify简介:</strong><br />
Inotify 是一种强大的、异步的文件系统事件监控机制,通过Inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况</p>
<h2>2. 实验环境:</h2>
<p>
<thead>
</thead>
<th> </th>
</p>
<p>
<table>
<thead>
<tr>
<th>ip地址</th>
<th>角色</th>
</tr>
</thead>
<tbody>
<tr>
<td>192.168.153.180</td>
<td>备份源 sync client + inotify</td>
</tr>
<tr>
<td>192.168.153.181</td>
<td>备份端 rsync server</td>
</tr>
</tbody>
</table>
</p>
<p>两台机器均关闭防火墙和selinux<br />
关闭防火墙</p>
<div class="jb51code">
<pre class="brush:bash;">
systemctl stop firewalld</pre>
</div>
<p>关闭selinux</p>
<div class="jb51code">
<pre class="brush:bash;">
setenforce 0</pre>
</div>
<h2>3. 配置备份端主机(181主机)</h2>
<p>3.1 安装rsync工具</p>
<div class="jb51code">
<pre class="brush:bash;">
yum -y install rsync</pre>
</div>
<p>3.2 修改rsync配置文件:</p>
<div class="jb51code">
<pre class="brush:bash;">
vim /etc/rsyncd.conf</pre>
</div>
<p>修改后内容如下:(!复制之后删掉注释才可使用,不然格式会有问题)</p>
<div class="jb51code">
<pre class="brush:bash;">
uid=root
gid=root
use chroot = no
max connections = 10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
path = /opt#备份路径
comment = rsync
ignore errors #跳过错误
read only = no #读
write only = no #写
hosts allow = 192.168.153.180 #备份源ip
list = false
auth users = rsync_user#用户</pre>
</div>
<p>3.3 创建密码文件并修改权限 创建文件</p>
<div class="jb51code">
<pre class="brush:bash;">
echo "rsync_user:123" > /etc/rsync.password</pre>
</div>
<p>修改权限</p>
<div class="jb51code">
<pre class="brush:bash;">
chmod 600 /etc/rsync.password</pre>
</div>
<p>3.4 启动rsync并查看端口验证</p>
<p>启动</p>
<div class="jb51code">
<pre class="brush:bash;">
rsync --daemon</pre>
</div>
<p>验证</p>
<div class="jb51code">
<pre class="brush:bash;">
netstat -ntlp|grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 1583/rsync
tcp6 0 0 :::873 :::* LISTEN 1583/rsync</pre>
</div>
<h2>4. 配置备份源端(180主机)</h2>
<p>4.1 安装epel源和所需工具</p>
<p>先安装epel源</p>
<div class="jb51code">
<pre class="brush:bash;">
yum -y installepel-release</pre>
</div>
<p>再安装所需工具</p>
<div class="jb51code">
<pre class="brush:bash;">
yum -y install inotify-tools rsync </pre>
</div>
<p>4.2 只需要设置rsync同步密码即可,不用重设用户名 创建文件</p>
<div class="jb51code">
<pre class="brush:bash;">
echo "123" > /etc/rsync.password</pre>
</div>
<p>修改权限</p>
<div class="jb51code">
<pre class="brush:bash;">
chmod 600 /etc/rsync.password </pre>
</div>
<p>4.3 编写inotify监控脚本如下:</p>
<div class="jb51code">
<pre class="brush:bash;">
vim inotify.sh</pre>
</div>
<div class="jb51code">
<pre class="brush:bash;">
#!/bin/bash
ip=192.168.153.181 #备份端ip
src=/opt/rsync_src #数据目录
dst=rsync
user=rsync_user # 用户
/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib ${src} | while read file
do
rsync -vzrtopg --delete --progress $src $user@$ip::$dst --password-file=/etc/rsync.password > /dev/null && echo "$src was rsyncd"
done</pre>
</div>
<p>3.4 创建源目录</p>
<div class="jb51code">
<pre class="brush:bash;">
mkdir /opt/rsync_src</pre>
</div>
<p>3.5 执行脚本检测</p>
<div class="jb51code">
<pre class="brush:bash;">
sh inotify.sh </pre>
</div>
<p>3.6 新开窗口在源目录下创建文件</p>
<div class="jb51code">
<pre class="brush:bash;">
cd /opt/rsync_src
echo 111 > 1.txt
echo 222 > 2.txt</pre>
</div>
<p>3.7 在备份端查看新创建的两个文件已经同步过来</p>
<div class="jb51code">
<pre class="brush:bash;">
ls /opt/rsync_src/
1.txt2.txt</pre>
</div>
<p>3.8 在备份源端删除1.txt文件</p>
<div class="jb51code">
<pre class="brush:bash;">
cd /opt/rsync_src
rm -f 1.txt</pre>
</div>
<p>在备份端查看已经同步删除</p>
<div class="jb51code">
<pre class="brush:bash;">
ls /opt/rsync_src/
2.txt</pre>
</div>
<p>到此这篇关于rsync结合 inotfiy 实现实时备份的文章就介绍到这了,更多相关rsync结合 inotfiy 实现实时备份内容请搜索琼殿技术社区以前的文章或继续浏览下面的相关文章,希望大家以后多多支持琼殿技术社区!</p>
頁:
[1]