rsync、sersync安装配置

rsync

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TtM9z1Sj-1689787284751)(D:\Snipaste\03【电脑截图软件】snipaste截图软件\Typora\mysql\备份、恢复\rsync.png)]

rsync是开源免费的,运行在tcp/ip

sync命令在Linux系统中用于将内存中的脏数据写入磁盘,以确保数据同步到磁盘中。

  1. 功能

sync命令的主要功能是把内存中的文件系统缓存数据写入磁盘。

Linux系统会将文件系统的元数据(metadata)和数据缓存到内存中,以加速读写速度。但内存中的数据需要定期同步到磁盘中进行持久化存储。

sync命令可以立即启动这个同步过程,不必等待定时同步操作。

  1. 原理

sync命令将触发Linux内核的sync()系统调用。内核会遍历所有已安装的文件系统,并将其脏数据页缓存(dirty page cache)刷新到磁盘。

对于支持日志的文件系统(如ext3/ext4),也会将日志缓冲区的数据写入日志区域。

  1. 使用场景
  • 系统正常关闭重启前,调用sync将数据flush到磁盘。

  • 在便携设备上移除存储介质前调用sync,确保数据写入。

  • 虚拟机做快照前调用sync,获取一致性视图。

  • 在重要数据写入磁盘前立即调用sync同步。

综上,sync命令通过将文件系统的缓存数据写入磁盘来保证数据的一致性和持久性,在必要时可以手动调用该命令。

sersync

Sersync(Synchronize in Real Time)是一款实时文件同步工具,它可以帮助您在不同的服务器或文件系统之间同步文件。Sersync主要使用inotify功能(一种Linux内核子系统)来监控文件系统的变化,并在检测到变化时立即进行同步。这种实时的同步方式可以确保文件的一致性和数据的完整性。

Sersync通常与rsync(一种用于文件同步和传输的工具)配合使用,以便在不同的服务器或文件系统之间高效地传输文件。Sersync的配置使用XML配置文件,可以灵活地定义同步规则、目标服务器和其他参数。

以下是Sersync的一些主要特点:

  1. 实时同步:通过监控文件系统的inotify事件,实现文件的实时同步。
  2. 高效传输:与rsync结合使用,可以有效地压缩和传输文件,降低网络带宽消耗。
  3. 容错处理:如果同步过程中出现错误,Sersync可以自动重试,保证数据的完整性。
  4. 日志记录:Sersync支持日志记录,帮助您跟踪和监控同步过程。
  5. 安全传输:可选地与SSH结合使用,实现加密的文件传输。

要使用Sersync,您需要在服务器上安装Sersync并配置相关的XML配置文件。有了正确的配置,您可以轻松地实现文件的实时同步。

rsync+sersync文件手动同步

  • sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或某一个目录的名字;
  • rsync在同步的时候,只同步发生变化的这个文件或者这个目录(每次发生变化的数据相对整个同步目录数据来说是很小的,rsync在遍历查找比对文件时,速度很快),因此,效率很高。

实验

  • 环境

备份服务器:192.168.2.4  操作系统:Centos7.9  
数据源服务器:192.168.2.3 操作系统:Centos7.9

备份服务器操作

关闭 selinux #永久关闭linux防火墙

[root@mysql backup]# cat /etc/selinux/config 
...
SELINUX=disabled
...

关闭防火墙

#临时关闭防火漆
[root@mysql backup]# service firewalld stop
#开启关闭防火墙
root@mysql backup]# systemctl disable firewalld 
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

安装rsync服务端软件

xinetd是一个提供保姆服务的进程,rsync是它照顾的进程

独立的服务:ssh、dhcp、mysqld

非独立的服务:非独立的服务需要依赖其他的服务来管理,rsync就是一个非独立的服务,依赖xinetd来管理

[root@mysql backup]# yum install rsync xinetd  #安装
[root@mysql backup]# vim /etc/rc.d/rc.local 
[root@mysql backup]# chmod +x /etc/rc.d/rc.local #给可执行权限
/usr/bin/rsync --daemon --config=/etc/rsyncd.conf # 添加开机启动
[root@mysql backup]# systemctl start xinetd	#启动xinetd

创建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.2.3 

创建用户认证文件

$ vim /etc/rsync.pass    # 配置文件,添加以下内容,添加允许传输用户和密码

ydh:123456  # 格式,用户名:密码,可以设置多个,每行一个用户名:密码


[root@mysql backup]# cat /etc/rsync.pass 
ydh;123456


设置文件权限

$ chmod 600 /etc/rsyncd.conf  #设置文件所有者读取、写入权限
$ chmod 600 /etc/rsync.pass  #设置文件所有者读取、写入权限

启动rsync和xinetd

$ /usr/bin/rsync --daemon --config=/etc/rsyncd.conf

#查看rsync进程是否启动
[root@mysql backup]# ps aux|grep rsync
root       4009  0.0  0.1 114852   576 ?        Ss   11:13   0:00 /usr/bin/rsyn --daemon --config=/etc/rsyncd.conf
root       4011  0.0  0.2 112824   988 pts/2    S+   11:13   0:00 grep --color=auto rsync


$ systemctl start xinetd
##查看进程
[root@mysql backup]# ps aux|grep xinetd
root       3979  0.0  0.1  25044   588 ?        Ss   11:00   0:00 /usr/sbin/xinetd -stayalive -pidfile /var/run/xinetd.pid
root       4020  0.0  0.2 112824   988 pts/2    S+   11:14   0:00 grep --color=auto xinetd

##查看端口
[root@mysql backup]# netstat -anplut
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      4009/rsync          
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      956/sshd      

数据源服务器操作

关闭 selinux #永久关闭linux防火墙

[root@mysql backup]# getenforce
Disabled

关闭防火墙

$ systemctl stop firewalld.service

安装rsync客户端软件

$ yum install rsync xinetd     # 安装

$ vim /etc/rc.local        # #设置开机启动
/usr/bin/rsync --daemon       # 添加开机启动

$ vim /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服务的

创建认证密码文件

 $ vim /etc/passwd.txt   #编辑文件,添加以下内容,该密码应与目标服务器中的/etc/rsync.pass中的密码一致  
   sunline

$ chmod 600 /etc/passwd.txt     #设置文件权限,只设置文件所有者具有读取、写入权限即可   

测试数据同步

数据源服务器***.***.192.168.2.3到备份服务器 192.168.2.4,之间的数据同步

rsync -avH --port=873 --progress --delete  /backup root@192.168.2.4::back_data  --password-file=/etc/passwd.txt

注意

**/backup **是需要自己在数据源服务器上新建的,这是需要同步到远程设备服务器上的目录。里面放需要备份的文件或者文件夹

出现的问题

[root@mysql backup]# rsync -avH --port=873 --progress --delete  /backup root@192.168.2.4::back_data  --password-file=/etc/passwd.txt

@ERROR: access denied to back_data from UNKNOWN (192.168.2.3)
rsync error: error starting client-server protocol (code 5) at main.c(1656) [sender=3.1.2]
[back_data]   
	path = /backup   
	comment = A directory in which data is stored
	ignore errors = yes
	read only = no
	hosts allow = 192.168.2.3 #这里是源ip地址,自己写成了备份文件
[root@mysql backup]# rsync -avH --port=873 --progress --delete  /backup root@192.168.2.4::back_data  --password-file=/etc/passwd.txt

@ERROR: chroot failed
rsync error: error starting client-server protocol (code 5) at main.c(1656) [sender=3.1.2]

这是文件不存在或者文件路径有问题

[back_data]   
	path = /backup 		#备份机器的路径一定要正确,同时需要存在  
	comment = A directory in which data is stored
	ignore errors = yes
	read only = no
	hosts allow = 192.168.2.3 #这里是源ip地址,自己写成了备份文件

修改rsync配置文件后,重新启动xinetd就好了

[root@mysql backup]# service xinetd restart

增量备份

源主机删除文件,同时增加文件,然后执行

rsync -avH --port=873 --progress --delete  /backup root@192.168.2.4::back_data  --password-file=/etc/passwd.txt

就可以实现了

rsync+sersync文件实时同步

修改inotify默认参数(inotify默认内核参数值太小) 修改参数:

sysctl -w fs.inotify.max_queued_events="99999999"
sysctl -w fs.inotify.max_user_watches="99999999"
sysctl -w fs.inotify.max_user_instances="65535"


vim /etc/sysctl.conf 

fs.inotify.max_queued_events=99999999
fs.inotify.max_user_watches=99999999
fs.inotify.max_user_instances=65535

安装sersync

[root@mysql backup]# wget http://down.whsir.com/downloads/sersync2.5.4_64bit_binary_stable_final.tar.gz		

[root@mysql ~]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz 
#解压
[root@mysql ~]# mv GNU-Linux-x86  /usr/local/sersync                    #移动目录到/usr/local/sersync  

创建rsync

[root@mysql ~]# cd /usr/local/sersync/
 #进入sersync安装目录

[root@mysql sersync]# cp confxml.xml  confxml.xml-bak
 #备份原文件

[root@mysql sersync]# cp confxml.xml  data_configxml.xml
#复制用于同步data目录的文件

修改配置 data_configxml.xml 文件

vim data_configxml.xml
 24   <localpath watch="/backup">
 25             <remote ip="192.168.2.4" name="back_data"/>
 26             <!--<remote ip="192.168.8.39" name="tongbu"/>-->
 27             <!--<remote ip="192.168.8.40" name="tongbu"/>-->
 28         </localpath>
 29         <rsync>
 30             <commonParams params="-artuz"/>
 31             <auth start="false" users="root" passwordfile="/etc/passwd.txt"/    >
 32             <userDefinedPort start="false" port="874"/><!-- port=874 -->
 33             <timeout start="false" time="100"/><!-- timeout=100 -->
 34             <ssh start="false"/>
 35         </rsync>

启动服务

[root@mysql sersync]# PATH=/usr/local/sersync:$PATH #设置环境变量

[root@mysql sersync]# echo 'PATH=/usr/local/sersync:$PATH'>>/root/.bashrc #永久修改临时变量 

[root@mysql sersync]# sersync2 -d -r -o /usr/local/sersync/data_configxml.xml

设置sersync监控开机自动执行

 vim /etc/rc.d/rc.local  #编辑,在最后添加    
 /usr/local/sersync/sersync2 -d -r -o  /usr/local/sersync/data_configxml.xml

测试

在源机制的文件夹里面删除或者增加文件,查看备份机器是否同步。

问题

如果主从机器实现了ssh免密设置,主机器的密码错了,也可以正常进行备份,所有rsync底层也支持ssh免密

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哈密猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值