rsync + inotify 实现实时同步

rsync + inotify 实现实时同步

rsync 简介

Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。并且可以不进行改变原有数据的属性信息,实现数据的备份迁移特性。Rsync软件适用于unix/linux/windows等多种操作系统平台。
Rsync是一个快速和非常通用的文件复制工具。它能本地复制,远程复制,或者远程守护进程方式复制。它提供了大量的参数来控制其行为的各个方面,并且允许非常灵活的方式来实现文件的传输复制。它以其delta-transfer算法闻名。
rsync监听端口:873
rsync运行模式:C/S

#安装 rsync
[root@localhost ~]# yum -y install rsync

1.rsync 三种模式

本地模式

1.单文件数据同步
[root@localhost ~]# rsync /etc/hosts /opt
2.目录同步
[root@localhost ~]#rsync -avz /opt/ /mut ("/" 代表目录下所有文件,不包括目录本身)
3.--delete同步
[root@localhost ~]# rsync -avz /opt/ /mnt --delete (会将opt目录下的文件和mnt目录对比,会将mnt目录中opt不存在的文件删除,)

远程模式

1.[root@localhost ~]# rsync -avz --bwlimit=100 --delete /backup/ 172.16.1.12:/backup
#--bwlimit (限速)

守护进程模式

#服务端设置
[root@localhost ~]#cat cat intify.sh
uid  =  rsync           
gid  =  rsync
use  chroot  =  no         (一个安全机制)
max  connections  =  200   (最大支持200个客户端向我推送)
timeout  =  300            (如果300毫秒都没给我推送我就放弃他)
pid  file  =  /var/run/rsyncd.pid     (pid 文件的位置,每个进程都有一个保存了pid号的文件)
lock  file   =   /var/run/rsync.lock  (进程锁   ,如果有多个客户端同时向我推送,按照先后顺序一个一个来晚来的锁住排队)
log  file  =  /var/log/rsyncd.log      (程序日志的位置)

[ backup ]
path  =  /backup       (接受到数据保存在这个路径下)
ignore   errors        (如果出现错误     忽略)
read  only  =  false   (权限   只读是否,可以读写)
list  =  false         (禁止客户端以远程列表的方式查看我备份服务器上的东西)
hosts   allow   =   192.168.100.0/24  (允许这个网段的客户端的推送)
hosts  deny  =  0.0.0.0/32            (拒绝谁推送)
auth  users  =  rsync_backup          (虚拟用户    为了做验证的)
secrets  file  =  /etc/rsync.password  (rsync认可账号密码存放路径)


#创建程序用户,创建密码
[root@localhost ~]#useradd -< -s /sbin/nologin rsync
[root@localhost ~]#mkdir /backup
[root@localhost ~]#chown rsync /backup
[root@localhost ~]#echo "rsync_backup:123123" > /etc/rsync.password ; chomd 600 /etc/rsync.password

#客户端设置
[root@localhost ~]#echo "rsync_backup:123123" > /etc/rsync.password;chomd 600 /etc/rsync.password
#客户端推送
[root@localhost ~]#rsync -avz /backup/ rsync_backup@192.168.100.1::backup --password-file=/etc/rsync.password

# ::backup 表示服务端配置文件所设置的模块,进行引用
# --password-file (密码本存放路径)

详细命令

-a #归档模式传输, 等于-tropgDl
-v #详细模式输出, 打印速率, 文件数量等
-z #传输时进行压缩以提高效率
-r #递归传输目录及子目录,即目录下得所有目录都同样传输。
-t #保持文件时间信息
-o #保持文件属主信息
-p #保持文件权限
-g #保持文件属组信息
-l #保留软连接
-P #显示同步的过程及传输时的进度等信息
-D #保持设备文件信息
-L #保留软连接指向的目标文件
-e #使用的信道协议,指定替代 rsh 的 shell 程序
--exclude=PATTERN #指定排除不需要传输的文件模式
--exclude-from=file #文件名所在的目录文件
--bwlimit=100 #限速传输
--partial #断点续传
--delete #让目标目录和源目录数据保持一致

inotfy 简介

Inotify 是一种强大的、异步的文件系统事件监控机制,通过Inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况

详细参数

-r           #递归查询目录
-q           #打印很少的信息,仅仅打印监控时间的信息
-m           #始终保持事件监听状态
--exclude    #排除文件或者目录时,不许分大小写
--format     #打印使用指定的输出类似格式字符串
-e           #通过此参数可以指定需要监控的时间,如下一个列表所示
access       #文件或者目录被读取
modify       #文件或者目录内容被修改
attrib       #文件或者目录属性被改变
close        #文件或者目录封闭,无论读写模式
open         #文件或者目录被打开
moved_to     #文件或者目录被移动到另一个目录
move         #文件或者目录被移动到里一个目录或者从一个目录移动到当前目录
create       #文件或者目录被创建到当前目录
umount       #文件系统被卸载
delete       #文件或者目录被删除--timefmt     指定时间输出的格式

安装

[root@localhost ~]#yum -y install epel-release
[root@localhost ~]#yum -y install inotify-tools 

两台主机同步

ipservice
192.168.100.150rsync service
192.168.100.151rsync client+inotify
192.168.100.150 操作
[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#systemctl stop NetworkManager
[root@localhost ~]#systemctl disable firewalld
[root@localhost ~]#systemctl disable NetworkManager

[root@localhost ~]#yum -y install rsync
[root@localhost ~]#vim /etc/rsyncd.conf
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
[data]
path = /backup    #备份路径
comment = my data #给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户。默认没有描述定义
ignore errors     #跳过错误
read only = no    #读
write only = no   #写
hosts allow = 192.168.2.7 #备份源ip
list = false
auth users = rsync_user  #用户
secrets file = /etc/rsync.password #密码路径

#创建认证用户密码文件,修改文件权限
[root@localhost ~]#echo "rsync_user:123456" > /etc/rsync.password
[root@localhost ~]#chmod 600 /etc/rsync.password

#创建备份目录
[root@localhost ~]#mkdir /backup

#开机自启动
[root@localhost ~]#systemctl start rsyncd
[root@localhost ~]#systemctl enable resyncd

#检查端口
[root@localhost ~]#ss -lntp | grep 873

192.168.100.151 操作

[root@localhost ~]#yum -y install epel-release
[root@localhost ~]#yum -y install inotify-tools rsync

#创建密码文件
[root@localhost ~]#echo "123456" > /etc/rsync.password
[root@localhost ~]#chmod 600 /etc/rsync.password

#编辑监控脚本
[root@localhost ~]#cat intify.sh
#!/bin/bash
ip=192.168.100.150   #备份端ip
src=/data            #数据目录
dst=data             #模块名
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


#创建备份目录
[root@localhost ~]#mkdir /data
[root@localhost ~]#sh inotify.sh


#创建文件查看备份端是否同步
[root@localhost ~]#mkdir -P /data/wangyulong
[root@localhost ~]#touch /data/1111
[root@localhost ~]#touch /data/2222
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值