看网上教程都是要设置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/