文章目录
1. rsync是什么
-
rsync是Linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步
-
已支持跨平台,可以在Windows与Linux间进行数据同步。
-
使用rsync进行数据同步时,第一次进行完全备份,以后则是增量备份,利用rsync算法(差分编码),只传输差异部分数据。
-
当数据量不大时,还是建议使用rsync+inotify,当数据量很大(几百G甚至1T以上)时,建议使用rsync+sersync
rsync+sersync文件实时同步
- sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或某一个目录的名字;
- rsync在同步的时候,只同步发生变化的这个文件或者这个目录(每次发生变化的数据相对整个同步目录数据来说是很小的,rsync在遍历查找比对文件时,速度很快),因此,效率很高。
- sersync是金山的周洋基于rsync+inotify-tools开发的工具。它克服了inotify的缺陷,可以过滤重复事件减轻负担,并且自带contab功能、多线程调用rsync、失败重传等功能。
————————————————
原文链接:https://blog.youkuaiyun.com/qq_36045024/article/details/105072818
一:环境
备份服务器:`192.168.10.130` 操作系统:Centos7
数据源服务器:`192.168.10.136` 操作系统:Centos7
[root@ln-mysql2 ~]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
二:备份服务器操作
新建备份目录 mkdir /backup
-
关闭selinux(永久关闭防火墙)
$ vi /etc/selinux/config SELINUX=disabled # 修改 $ setenforce 0 # 立即生效
-
关闭防火墙
$ systemctl stop firewalld.service
-
安装rsync服务器软件
$ yum install rsync xinetd # 安装 $ vi /etc/rc.d/rc.local # #设置开机启动 /usr/bin/rsync --daemon --config=/etc/rsyncd.conf # 添加开机启动 $ systemctl start xinetd #启动xinetd
- xinetd是一个提供保姆服务的进程,rsync是它管理的进程。
-
创建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.10.136 #允许的ip地址(数据源服务器地址)
-
创建用户认证文件
$ vi /etc/rsync.pass # 配置文件,添加以下内容,添加允许传输用户和密码 ln:ln123456 # 格式,用户名:密码,可以设置多个,每行一个用户名:密码
-
设置文件权限
$ 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)
[root@ln-mysql2 ~]# 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 4254/rsync tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 971/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1330/master tcp 0 36 192.168.10.130:22 192.168.10.1:57366 ESTABLISHED 3800/sshd: root@pts tcp6 0 0 :::873 :::* LISTEN 4254/rsync tcp6 0 0 :::3306 :::* LISTEN 1292/mysqld tcp6 0 0 :::22 :::* LISTEN 971/sshd tcp6 0 0 ::1:25 :::* LISTEN 1330/master udp 0 0 127.0.0.1:323 0.0.0.0:* 705/chronyd udp6 0 0 ::1:323 :::* 705/chronyd
三:数据源服务器操作
安装rsync客户端软件
-
关闭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中的密码一致 ln123456 $ chmod 600 /etc/passwd.txt #设置文件权限,只设置文件所有者具有读取、写入权限即可
-
测试数据同步
数据源服务器192.168.10.136到备份服务器130之间的数据同步
$ rsync -avH --port=873 --progress --delete /backup(要备份的数据源目录 ) root@192.168.10.130::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是后面需要使用的真正的配置文件
-
修改配置data_configxml.xml文件
$ vi data_configxml.xml ----- 24行 ----- <localpath watch="/ba'c'k"> # 本地数据源路径 <remote ip="192.168.10.130" 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>
四:出现的问题
- 备份服务器里的备份目录是/backup,但是这个文件没有创建,导致不能备份过去。
在备份服务器上需要我们去创建mkdir /backup
-
如果修改了rsync.conf配置文件,需要重启xinetd服务,会帮我们去重启rsync进程
service xinetd restart
-
排错查看日志
[root@ln-mysql2 backup]# cat /var/log/rsyncd.log 2023/03/19 20:33:39 [4254] rsyncd version 3.1.2 starting, listening on port 873 2023/03/19 21:11:30 [4285] name lookup failed for 192.168.10.136: Name or service not known 2023/03/19 21:11:30 [4285] connect from UNKNOWN (192.168.10.136) 2023/03/19 13:11:30 [4285] rsync to back_data/ from UNKNOWN (192.168.10.136) 2023/03/19 13:11:30 [4285] receiving file list 2023/03/19 13:11:30 [4285] backup/ 2023/03/19 13:11:30 [4285] sent 158 bytes received 925411 bytes total size 924624
-
增加文件,或者删除文件,测试是否可以增量备份
-
密码不正确或者用户名不正确,也可以实时同步文件,思考底层是否利用了我们建立的密码通道