rsync、sersync安装配置
文章目录
- rsync
- sersync
- rsync+sersync文件手动同步
- 备份服务器操作
- **数据源服务器操作**
- 出现的问题
- 增量备份
- rsync+sersync文件实时同步
rsync
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TtM9z1Sj-1689787284751)(D:\Snipaste\03【电脑截图软件】snipaste截图软件\Typora\mysql\备份、恢复\rsync.png)]](https://img-blog.csdnimg.cn/0dbf8e7dbe2246da943de9f9b567ed07.png)
rsync是开源免费的,运行在tcp/ip
sync命令在Linux系统中用于将内存中的脏数据写入磁盘,以确保数据同步到磁盘中。
- 功能
sync命令的主要功能是把内存中的文件系统缓存数据写入磁盘。
Linux系统会将文件系统的元数据(metadata)和数据缓存到内存中,以加速读写速度。但内存中的数据需要定期同步到磁盘中进行持久化存储。
sync命令可以立即启动这个同步过程,不必等待定时同步操作。
- 原理
sync命令将触发Linux内核的sync()系统调用。内核会遍历所有已安装的文件系统,并将其脏数据页缓存(dirty page cache)刷新到磁盘。
对于支持日志的文件系统(如ext3/ext4),也会将日志缓冲区的数据写入日志区域。
- 使用场景
-
系统正常关闭重启前,调用sync将数据flush到磁盘。
-
在便携设备上移除存储介质前调用sync,确保数据写入。
-
虚拟机做快照前调用sync,获取一致性视图。
-
在重要数据写入磁盘前立即调用sync同步。
综上,sync命令通过将文件系统的缓存数据写入磁盘来保证数据的一致性和持久性,在必要时可以手动调用该命令。
sersync
Sersync(Synchronize in Real Time)是一款实时文件同步工具,它可以帮助您在不同的服务器或文件系统之间同步文件。Sersync主要使用inotify功能(一种Linux内核子系统)来监控文件系统的变化,并在检测到变化时立即进行同步。这种实时的同步方式可以确保文件的一致性和数据的完整性。
Sersync通常与rsync(一种用于文件同步和传输的工具)配合使用,以便在不同的服务器或文件系统之间高效地传输文件。Sersync的配置使用XML配置文件,可以灵活地定义同步规则、目标服务器和其他参数。
以下是Sersync的一些主要特点:
- 实时同步:通过监控文件系统的inotify事件,实现文件的实时同步。
- 高效传输:与rsync结合使用,可以有效地压缩和传输文件,降低网络带宽消耗。
- 容错处理:如果同步过程中出现错误,Sersync可以自动重试,保证数据的完整性。
- 日志记录:Sersync支持日志记录,帮助您跟踪和监控同步过程。
- 安全传输:可选地与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 storedignore errors = yesread only = nohosts 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 = Syncuid = rootgid = rootport= 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 storedignore errors = yesread only = nohosts 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 storedignore errors = yesread only = nohosts 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 25 26 27 28 29 30 31 32 33 34 35
启动服务
[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免密
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
