Rsync+inotify-tools远程实时备份(单向)

rsync.png

看网上教程都是要设置rsync配置文件和配置认证用户,自己测试了下不用设置配置文件也能实现功能。

实验环境centos7.7
软件版本:
Rsync version 3.1.2
inotify-tools-3.14

1.先进行源服务器与备份服务器免密登录

源服务器:生成密钥

ssh-keygen -t rsa

一路回车 会在root目录下自动创建.ssh目录并生成密钥文件

ll /root/.ssh/
-rw------- 1 root root 1675 11月 23 15:30 id_rsa       #密钥文件
-rw-r--r-- 1 root root  408 11月 23 15:30 id_rsa.pub   #公钥文件
-rw-r--r-- 1 root root  176 11月 23 15:32 known_hosts  #执行ssh-copy-id 后生成的文件

把公钥上传复制到备份服务器上

ssh-copy-id root@192.168.1.11

该命令会把id_rsa.pub文件的内容 上传到目标服务器.ssh目录下并生成一个authorized_keys文件

登录测试

ssh root@192.168.1.11

设置好了之后源服务器要连接备份服务器就不用密码了。

2.安装Rsync+inotify-tools

源服务器要安装epel源 才能安装inotify-tools

yum -y install epel-release	
yum -y install rsync inotify-tools

备份服务器就安装rsync就可以了

yum -y install rsync

启动并设置开启自启动查看状态

systemctl enable rsyncd
systemctl start rsyncd
systemctl status rsyncd

查看端口 Rsync的端口为 873

netstat -antp | grep 873
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      585/rsync
tcp6       0      0 :::873                  :::*                    LISTEN      585/rsync

查看进程

ps aux | grep rsync
root       585  0.0  0.1 114756  1132 ?        Ss   Nov24   0:00 /usr/bin/rsync --daemon --no-detach
root     21821  0.0  0.2 112820  2264 pts/0    S+   10:59   0:00 grep --color=auto rsync

3.inotifywait 命令参数

格式:inotifywait  -mrq  -e  监控动作 1,监控动作 2	/监控目录  &
示例:inotifywait  -mrq  -e  create,delete  /data  &

参数:

-m:持续监听
-r:使用递归形式监视目录
-q:减少冗余信息,只打印出需要的信息

-e:指定要监听的事件,多个事件使用逗号隔开

access:访问,读取文件。
modify:修改,文件内容被修改。
attrib:属性,文件元数据被修改。
move:移动,对文件进行移动操作。
create:创建,生成新文件。
delete:删除,文件被删除。
open:打开,对文件进行打开操作。
close:关闭,对文件进行关闭操作。

4.编辑实时同步,备份脚本

vim bf.sh
#!/bin/bash

a="inotifywait -mrq -e modify,delete,create,move,attrib /data"     #监听的目录
b="rsync -avz /data/* root@192.168.11.1:/data"       #将data目录下的所有文件同步到备份服务器/data/下

$a | while read directory event file          #while 判断是否接收到监控记录
do
         $b
done

rsync连接备份服务器,前面配置了免密登录,所以不用密码了。

脚本添加执行权限

chmod +x bf.sh

运行脚本后台运行,要添加 nohup 命令,不然终端关了脚本也就关了

nohup /root/bf.sh bash &            #必须使用绝对路径,不然会出错

脚本添加开机自启动

vim /etc/rc.local
...
nohup /root/bf.sh bash &

5.测试

在服务器端创建,删除文件,查看备份端是否正常

该方法不适用mysql InnoDB类型的物理备份,
测试了mysql数据库数据发生变化inotify并不能监听到数据库文件发生变化,
而且备份过来的数据库文件也无法使用。

6.指定端口

rsync -e 'ssh -p 2200' -avz /solo/* root@192.168.11.11:/export/home/
# rsync 

本文由:星际难民
实践,测试,整理发布.如需转载请注明地址 本文标题:Rsync+inotify-tools远程实时备份(单向)
地址:https://530503.xyz/articles/2020/11/24/1606275353695.html

评论

取消