一、rsync是什么?
1、rsync (remote synchronize)是一种远程数据同步工具,它可以在本地和远程系统之间实现高效的文件同步和备份。 2、使用rsync进行数据同步时,第一次进行完全备份,以后则是增量备份,利用rsync算法(差分编码),只传输差异部分数据。 3、它是许多 Linux 和 Unix 系统的标准工具,并且也有适用于 Windows 等其他平台的实现。
rsync+sersync文件实时同步
sersync的工作原理如下:
- Sersync 守护进程在每个节点上运行,并监控被指定的源目录的变化。
- 当源目录中的文件发生修改、新增或删除时,Sersync检测到变化并触发同步操作。
- Sersync 使用 Rsync算法,仅将已更改的部分数据传输到目标节点,并在目标节点上更新或创建相应的文件。
- 目标节点上的 Sersync守护进程接收到传输的数据后,将其恢复为与源节点相同的文件。
一、环境
备份服务器:`192.168.1.*` 操作系统:Centos7.9
数据源服务器:`192.168.1.*` 操作系统:Centos7.9
二、备份服务器操作
新建备份目录 mkdir /backup
- 关闭selinux(永久关闭防火墙)
$ vi /etc/selinux/config
SELINUX=disabled # 修改
#Enforcing 模式:强制执行访问策略,并拒绝违规操作。
#Permissive 模式:记录违规操作,但不强制执行。
#Disabled 模式:完全禁用 SELinux,不再应用访问策略。
$ setenforce 0 # 立即生效
- 关闭防火墙
$ systemctl stop firewalld.service
- 安装rsync服务器软件
$ yum install rsync xinetd # 安装
#其中xinetd是rsync的保姆进程,xinetd管理rsync
$ vi /etc/rc.d/rc.local # #设置开机启动
/usr/bin/rsync --daemon --config=/etc/rsyncd.conf # 添加开机启动
$ systemctl start xinetd #启动xinetd
- 创建rsync.conf配置文件
vi /etc/rsyncd.conf
uid = root
gid = root
use chroot = yes
max connections = 0
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
secrets file = /etc/rsync.pass
motd file = /etc/rsyncd.Motd
[back_data] #配置项名称(自定义)
path = /backup #备份文件存储地址=》需要提前新建,否则会报错
comment = A directory in which data is stored
ignore errors = yes
read only = no
hosts allow =192.168.1.* #允许的ip地址(数据源服务器地址)
- 创建用户认证文件
$ vi /etc/rsync.pass # 配置文件,添加以下内容,添加允许传输用户和密码
sc:sc123456 # 格式,用户名:密码,可以设置多个,每行一个用户名:密码
- 设置文件权限
$ chmod 600 /etc/rsyncd.conf #设置文件所有者读取、写入权限
$ chmod 600 /etc/rsync.pass #设置文件所有者读取、写入权限
- 启动rsync和xinetd
$ /usr/bin/rsync --daemon --config=/etc/rsyncd.conf
$ systemctl start xinetd
- 查看rsync监听的端口号(873)
三、数据源服务器操作
- 关闭selinux
- 关闭防火墙
- 安装rsync客户端软件
$ yum install rsync xinetd # 安装
$ vi /etc/rc.local # #设置开机启动
/usr/bin/rsync --daemon # 添加开机启动
$ vi /etc/rsyncd.conf
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
motd file = /etc/rsyncd.Motd
[Sync]
comment = Sync
uid = root
gid = root
port= 873
$ chmod +x /etc/rc.d/rc.local #否则重启不执行
$ systemctl start xinetd #启动(CentOS中是以xinetd来管理rsync服务的
- 创建认证密码文件
$ vi /etc/passwd.txt #编辑文件,添加以下内容,该密码应与目标服务器中的/etc/rsync.pass中的密码一致
sc123456
$ chmod 600 /etc/passwd.txt #设置文件权限,只设置文件所有者具有读取、写入权限即可
- 测试数据同步 数据源服务器到备份服务器129之间的数据同步
rsync -avH --port=873 --progress --delete /backup(要备份的数据源目录 ) [email protected]::back_data(rsyncd.conf文件配置名称) --password-file=/etc/passwd.txt
/backup
需要新建,这是需要同步到远程备份服务器上的目录,里面放需要备份的文件或文件夹。
四:安装sersync工具,实时触发rsync进行同步
- 修改inotify默认参数(inotify默认内核参数值太小) 修改参数:
[root@ln-mysql ~]# sysctl -w fs.inotify.max_queued_events="99999999"
fs.inotify.max_queued_events = 99999999
[root@ln-mysql ~]# sysctl -w fs.inotify.max_user_watches="99999999"
fs.inotify.max_user_watches = 99999999
[root@ln-mysql ~]# sysctl -w fs.inotify.max_user_instances="65535"
fs.inotify.max_user_instances = 65535
[root@ln-mysql ~]# vi /etc/sysctl.conf 设置永久生效
fs.inotify.max_queued_events=99999999
fs.inotify.max_user_watches=99999999
fs.inotify.max_user_instances=65535
- 安装sersync
上不去google的可以直接wget本地的包,这里只提供64位版本的:
http://down.whsir.com/downloads/sersync2.5.4_64bit_binary_stable_final.tar.gz
$ tar zxvfsersync2.5.4_64bit_binary_stable_final.tar.gz #解压
$ mv GNU-Linux-x86 /usr/local/sersync #移动目录到/usr/local/sersync
- 创建rsync
$ cd /usr/local/sersync #进入sersync安装目录
$ cp confxml.xml confxml.xml-bak #备份原文件
$ cp confxml.xml data_configxml.xml #复制用于同步data目录的文件
- 修改配置data_configxml.xml文件
$ vi data_configxml.xml
----- 24行 -----
<localpath watch="/back"> # 本地数据源路径
<remote ip="192.168.1.129" name="back_data"/> # 备份服务器地址信息
</localpath>
<rsync>
<commonParams params="-artuz"/>
<auth start="true" users="root" passwordfile="/etc/passwd.txt"/> ## 启用身份验证"true",密码文件路径"/etc/passwd.txt"
<userDefinedPort start="false" port="874"/><!-- port=874 -->
<timeout start="false" time="100"/><!-- timeout=100 -->
<ssh start="false"/>
</rsync>
标签:rsync,sersync,inotify,备份,实时,etc,file,rsyncd
From: https://blog.51cto.com/u_16191641/6779798