Rsync+Sersync实现文件的实时同步

一、什么是Rsync?  

        Rsync 是一个用于文件同步和传输的开源工具,它可以在本地或通过网络在两个位置之间同步文件和目录。

Rsync 的主要特点包括

        增量传输:Rsync 可以识别并仅传输源和目标之间的差异,而不需要每次都传输整个文件。这使得同步大文件和目录时效率更高。

        支持远程同步:Rsync 可以在本地和远程系统之间同步文件,通过 SSH 或 Rsync 协议进行安全的传输。

        保持文件属性:Rsync 可以保持文件的权限、时间戳、所有者信息等属性。

        传输加密:当使用 SSH 协议时,Rsync 可以通过 SSH 加密传输数据,确保数据传输的安全性。

        灵活的配置选项:Rsync 提供了许多配置选项,可以根据需要进行定制,例如排除特定文件、保留硬链接关系等。

        Rsync 在数据备份、镜像站点、软件发布等场景下被广泛使用,它能够快速、高效地同步文件和目录,同时提供了可靠的数据传输保证

二、什么Sersync?

        Sersync 是一个基于 Rsync 开发的开源工具,用于实现文件的实时同步。与 Rsync 不同的是,Sersync 主要用于在服务器集群中实现文件的实时同步,以满足高可用性和负载均衡的需求。        

        Sersync 主要具有以下特点

         1. **实时同步**:Sersync 能够监视源文件的变化,并在文件发生变化时立即将变化的部分同步到目标服务器,实现实时同步。

         2. **支持集群环境**:Sersync 可以在服务器集群环境下运行,实现多台服务器之间的文件同步,以提高系统的可用性和负载均衡能力。

        3. **简单配置**:Sersync 的配置相对简单,用户可以通过简单的配置文件指定需要同步的源文件路径、目标服务器信息以及同步规则等。

         4. **监控文件变化**:Sersync 可以监控源文件的变化,包括文件的新增、修改、删除等操作,并及时将变化同步到目标服务器。

        5. **基于 Rsync**:Sersync 是基于 Rsync 开发的工具,在实现文件同步的同时,也继承了 Rsync 的高效、可靠的特性。

三、环境

        备份服务器(mysql)):192.168.91.143  操作系统:Centos7.9 

        数据源服务器(mysql_extra):192.168.1.142  操作系统:Centos7.9

四、备份服务器操作

1、关闭selinux

[root@mysql_extra ~]# vim /etc/selinux/config 
SELINUX=disabled
[root@mysql_extra ~]# getenforce
Disabled

2、永久关闭linux防火墙

[root@mysql_extra ~]# service firewalld stop
Redirecting to /bin/systemctl stop firewalld.service
[root@mysql_extra ~]# systemctl disable  firewalld #关闭防火墙开机自启

3、安装rsync软件

[root@mysql_extra ~]# yum install rsync xinetd -y
[root@mysql_extra ~]# vim /etc/rc.d/rc.local #开机自启动配置文件
/usr/bin/rsync --daemon --config=/etc/rsyncd.conf #添加开机自启动
[root@mysql_extra ~]# chmod +x /etc/rc.d/rc.local #给文件添加可执行权限
[root@mysql_extra ~]# systemctl start xinetd #启动xinetd

xinetd 是提供保姆服务的进制,rsync是被服务的进程

独立的服务:ssh,dhcp,mysql

非独立的服务:rsync 需要依赖其他的服务来管理,例如rsync服务依赖xinetd来管理

4、改rsync.conf配置文件

[root@mysql_extra ~]# vim /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
mot d 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.91.142 #允许的ip地址(数据源服务器地址)

5、创建用户认证文件

[root@mysql_extra ~]#  vim /etc/rsync.pass #.pass文件本不存在,要自己新建,文件名称与rsync.conf里面secrets file选定的文件名称要一致
rs:rs123456 #用户名和密码,自定义

6、设置文件权限

[root@mysql_extra ~]# chmod 600 /etc/rsyncd.conf #只有root用户有读和写的权限
[root@mysql_extra ~]# chmod 600 /etc/rsync.pass 

7、启动rsync和xinetd

[root@mysql_extra ~]# /usr/bin/rsync --daemon --config=/etc/rsyncd.conf  #做为守护进程进行 
[root@mysql_extra ~]# ps -aux |egrep rsync #查看rsync进程启动
root       2164  0.0  0.0 114852   580 ?        Ss   12:50   0:00 /usr/bin/rsync --daemon --config=/etc/rsyncd.conf
root       2166  0.0  0.0 112824   984 pts/0    S+   12:51   0:00 grep -E --color=auto rsync
[root@mysql_extra ~]# systemctl start xinetd #启动xinetd
[root@mysql_extra ~]# ps -aux |egrep xinetd #查看xinetd进程启动
root       2149  0.0  0.0  25044   588 ?        Ss   12:33   0:00 /usr/sbin/xinetd -stayalive -pidfile /var/run/xinetd.pid
root       2174  0.0  0.0 112824   988 pts/0    S+   12:52   0:00 grep -E --color=auto xinetd

8、查看rsync监听的端口号(873)

[root@mysql_extra ~]# netstat -anplut |egrep rsync #ss  -anplut也可以查看端口号
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      2164/rsync          
tcp6       0      0 :::873                  :::*                    LISTEN      2164/rsync 

五、数据源服务器的操作

1、关闭selinux

[root@mysql ~]# vim /etc/selinux/config 
SELINUX=disabled
[root@mysql ~]# getenforce
Disabled

2、永久关闭防火墙

[root@mysql ~]# service firewalld stop
Redirecting to /bin/systemctl stop firewalld.service
[root@mysql ~]# systemctl disable firewalld

3、安装rsync软件

    [root@mysql ~]# yum install rsync xinetd -y
    [root@mysql ~]# vim /etc/rc.d/rc.local
    /usr/bin/rsync --daemon  #添加开机自启动(没有指定文件)
    [root@mysql ~]# chmod +x /etc/rc.d/rc.local

4、改配置文件

[root@mysql ~]# vim /etc/rsyncd.conf
log file= /var/log/rsyncd. log
pid file = /var/run/rsyncd. pid
lock file = /var/run/rsync. lock
mot d file = /etc/rsyncd. Motd
[Sync]
        comment = Sync
        uid = root
        gid = root
        port= 873 #监听的端口
[root@mysql ~]# systemctl start xinetd #启动(Centos是以xinetd来管理rsync服务的)
[root@mysql ~]# ps -aux |egrep xinetd
root       2082  0.0  0.0  25044   588 ?        Ss   13:09   0:00 /usr/sbin/xinetd -stayalive -pidfile /var/run/xinetd.pid
root       2088  0.0  0.0 112824   988 pts/0    S+   13:11   0:00 grep -E --color=auto xinetd

5、创建用户和密码

[root@mysql ~]# vim /etc/passwd.txt #应该和备份服务器的/etc/rsync.pass中的密码一致
rs123456
[root@mysql ~]# chmod 600 /etc/passwd.txt #设置文件权限

六、测试数据同步

数据源服务器:192.168.91.142和备份服务器:192.168.91.143之间的数据同步 #整体测试完全备份

#整体测试完全备份
[root@mysql backup]# rsync -avH --port=873 --progress --delete  /backup root@192.168.91.143::back_data --password-    file=/etc/passwd.txt 

sending incremental file list
backup/
backup/2024-04-01_wanghai.sql
          2,113 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=6/8)
backup/TENNIS.sql
            793 100%  774.41kB/s    0:00:00 (xfr#2, to-chk=5/8)
backup/all_databases
        908,058 100%  108.25MB/s    0:00:00 (xfr#3, to-chk=4/8)
backup/backup_data.sh
            163 100%   19.90kB/s    0:00:00 (xfr#4, to-chk=3/8)
backup/wh.sql
          2,070 100%  252.69kB/s    0:00:00 (xfr#5, to-chk=2/8)
backup/hunan/
backup/hunan/sc_student.sql
          2,308 100%  281.74kB/s    0:00:00 (xfr#6, to-chk=0/8)

sent 916,261 bytes  received 138 bytes  87,276.10 bytes/sec
total size is 915,505  speedup is 1.00
查看备份服务器
[root@mysql_extra ~]# cd /backup
[root@mysql_extra backup]# ls
2024-04-01_wanghai.sql  backup  wh.sql
[root@mysql_extra backup]# cd backup/
[root@mysql_extra backup]# pwd
/backup/backup
#增量备份测试
[root@mysql backup]# cp /etc/passwd .
[root@mysql backup]# ls
2024-04-01_wanghai.sql  all_databases  backup_data.sh  hunan  passwd  TENNIS.sql  wh.sql
[root@mysql backup]# rsync -avH --port=873 --progress --delete  /backup root@192.168.91.143::back_data --password-file=/etc/passwd.txt 

sending incremental file list
backup/
backup/passwd
            887 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=3/9)

sent 1,236 bytes  received 40 bytes  121.52 bytes/sec
total size is 916,392  speedup is 718.18
[root@mysql_extra backup]# ls
2024-04-01_wanghai.sql  all_databases  backup_data.sh  hunan  passwd  TENNIS.sql  wh.sql
[root@mysql backup]# rm -rf passwd
[root@mysql backup]# cp /etc/hosts .
[root@mysql backup]# ls
2024-04-01_wanghai.sql  all_databases  backup_data.sh  hosts  hunan  TENNIS.sql  wh.sql
[root@mysql backup]# rsync -avH --port=873 --progress --delete  /backup root@192.168.91.143::back_data --password-file=/etc/passwd.txt 

sending incremental file list
deleting backup/passwd
backup/
backup/hosts
            158 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=3/9)

sent 505 bytes  received 57 bytes  48.87 bytes/sec
total size is 915,663  speedup is 1,629.29
[root@mysql_extra backup]# ls #删除了passwd,新增了hosts
2024-04-01_wanghai.sql  all_databases  backup_data.sh  hosts  hunan  TENNIS.sql  wh.sql
 

rsync -avH --port=873 --progress --delete /backup root@192.168.91.143::back_data --password-file=/etc/passwd.txt (源服务器上操作)

rsync: 该命令用于同步文件和目录。

-avH: 这是一组选项,含义如下:

        -a: 表示 archive 模式,它会保持文件的所有属性,包括权限、所有者信息、时间戳等。

        -v: 表示 verbose 模式,它会输出详细的同步信息。

        -H: 表示保留硬链接。如果文件是硬链接文件,则会保留文件的硬链接关系。

--port=873: 指定 rsync 服务器端口为 873。默认情况下,rsync 使用 873 端口进行通信。

--progress: 显示传输进度。

--delete: 在目标目录中删除源目录中不存在的文件。

/backup: 源文件或目录的路径,这里是要备份的数据所在的路径。 root@192.168.91.143::back_data: 目标服务器的用户名、IP 地址以及目标模块(module)。在这个例子中,用户名为 root,IP 地址为 192.168.91.143,目标模块为 back_data。Rsync 服务器上通常会将要同步的目录配置为一个模块,客户端通过模块名称进行访问。

--password-file=/etc/passwd.txt: 指定用于认证的密码文件的路径。这里将密码文件存储在了 /etc/passwd.txt 中。

如果还需更加深入的了解,可以通过rsync --help 查看用法 


目前实现的是手动同步,需要手动输入:[root@mysql backup]# rsync -avH --port=873 --progress --delete /backup root@192.168.91.143::back_data --password-file=/etc/passwd.txt

接下来实现实时同步

七、在数据源服务器上安装sersync工具,实时触发rsync进行同步

1、在数据源服务器上修改inotify默认参数

(inotify默认内核参数太小)修改参数(inotify已经默认在内核里安装了,不需要安装了),临时修改

[root@mysql backup]# sysctl -w fs.inotify.max_queued_events="99999999"
fs.inotify.max_queued_events = 99999999
[root@mysql backup]# sysctl -w fs.inotify.max_user_watches="99999999"
fs.inotify.max_user_watches = 99999999
[root@mysql backup]# sysctl -w fs.inotify.max_user_instances="65535"
fs.inotify.max_user_instances = 65535

永久修改

[root@mysql backup]# vim /etc/sysctl.conf
sysctl -w fs.inotify.max_queued_events="99999999"
sysctl -w fs.inotify.max_user_watches="99999999"
sysctl -w fs.inotify.max_user_instances="65535"

2、安装sersync

[root@mysql backup]# yum install wget -y

[root@mysql backup]# wget  http://down.whsir.com/downloads/sersync2.5.4_64bit_binary_stable_final.tar.gz
--2024-04-01 13:55:48--  http://down.whsir.com/downloads/sersync2.5.4_64bit_binary_stable_final.tar.gz
正在解析主机 down.whsir.com (down.whsir.com)... 111.180.191.24
正在连接 down.whsir.com (down.whsir.com)|111.180.191.24|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 301 Moved Permanently
位置:https://down.whsir.com/downloads/sersync2.5.4_64bit_binary_stable_final.tar.gz [跟随至新的 URL]
--2024-04-01 13:55:48--  https://down.whsir.com/downloads/sersync2.5.4_64bit_binary_stable_final.tar.gz
正在连接 down.whsir.com (down.whsir.com)|111.180.191.24|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:727290 (710K) [application/octet-stream]
正在保存至: “sersync2.5.4_64bit_binary_stable_final.tar.gz”

100%[====================================================>] 727,290     --.-K/s 用时 0.1s    

2024-04-01 13:55:48 (5.52 MB/s) - 已保存 “sersync2.5.4_64bit_binary_stable_final.tar.gz” [727290/727290])

3.解压,备份文件

[root@mysql backup]#  tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz 
[root@mysql backup]# ls
2024-04-01_wanghai.sql  GNU-Linux-x86  sersync2.5.4_64bit_binary_stable_final.tar.gz
all_databases           hosts          TENNIS.sql
backup_data.sh          hunan          wh.sql

[root@mysql backup]# mv GNU-Linux-x86/ /usr/local/sersync

[root@mysql backup]# cd /usr/local/sersync/
[root@mysql sersync]# ls
confxml.xml  sersync2

备份配置文件,防止修改出错,以便于还原
[root@mysql sersync]# cp confxml.xml  confxml.xml.bak

[root@mysql sersync]# cp confxml.xml  data_configxml.xml
[root@mysql sersync]# ls
confxml.xml  confxml.xml.bak  data_configxml.xml  sersync2

4、修改配置文件

[root@mysql sersync]# vim data_configxml.xml
    <sersync>
        <localpath watch="/backup"> #备份文件目录
            <remote ip="192.168.91.143" name="back_data"/>
            <!--<remote ip="192.168.8.39" name="tongbu"/>-->
            <!--<remote ip="192.168.8.40" name="tongbu"/>-->
        </localpath>
        <rsync>
            <commonParams params="-artuz"/>
            <auth start="false" users="root" passwordfile="/etc/passwd.txt"/>

5、启动sersync服务

[root@mysql sersync]# PATH=/usr/local/sersync/:$PATH #临时修改
[root@mysql sersync]# which sersync2
/usr/local/sersync/sersync2
[root@mysql sersync]# echo 'PATH=/usr/local/sersync/:$PATH' >>/root/.bashrc #永久修改
[root@mysql sersync]# sersync2  -d -r -o /usr/local/sersync/data_configxml.xml
[root@mysql sersync]# ps -aux |egrep ser
root          1  0.1  0.1 125376  3912 ?        Ss   16:44   0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
mysql      1292  0.3  5.8 1544156 227788 ?      Sl   16:44   0:03 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=mysql.err --open-files-limit=8192 --pid-file=/data/mysql/mysql.pid --socket=/data/mysql/mysql.sock --port=3306
root       1798  0.0  0.0 157860   708 ?        Ssl  17:02   0:00 sersync2 -d -r -o /usr/local/sersync/data_configxml.xml
root       1815  0.0  0.0 112828   984 pts/0    S+   17:04   0:00 grep -E --color=auto ser

已经可以实时同步了

八、测试

[root@mysql backup]# cp /etc/passwd .
[root@mysql backup]# ls
2024-04-01_wanghai.sql  hosts   sersync2.5.4_64bit_binary_stable_final.tar.gz
all_databases           hunan   TENNIS.sql
backup_data.sh          passwd  wh.sql
[root@mysql_extra backup]# ls
2024-04-01_wanghai.sql  hosts   sersync2.5.4_64bit_binary_stable_final.tar.gz
all_databases           hunan   TENNIS.sql
backup_data.sh          passwd  wh.sql

九、总结

1.问题:

        1.在数据源服务器上 vim /etc/rsyncd.conf path= /backup 这个文件夹备份服务器上必须有

        2.数据源服务器和备份服务器上创建的用户和密码要一致

        3.防火墙和selinux需要关闭

        4.权限设置 

        5.配置问价内容出错

        6.查看日志排错

2.小结

        1、sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或某一个目录的名字;

        2、rsync在同步的时候,只同步发生变化的这个文件或者这个目录(每次发生变化的数据相对整个同步目录数据来说是很小的,rsync在遍历查找比对文件时,速度很快),因此,效率很高。

  • 16
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
同步软件是一款自同步是最好用的局域网文件实时同步工具。软件使用方便、同步快速,并且支持五大平台,包括windows、mac、linux、android和IOS(未发布)。 轻松实现多设备之间的无线数据同步,无需注册下载即用,简单与智慧并存,安全与极速并重,您居家办公必备的之神器。 自同步软件特点 1.全平台覆盖。 包揽所有平台,让跨平台使用数据不在那么遥远。 你不必担心在Windows、Linux、Mac多平台间的数据传递;更不必担心在电脑、手机、平板等多设备间传输文件的跨平台问题。 自同步全平台覆盖(Windows、Linux、Mac、Iphone、Ipad、Android),完美解决跨平台问题,让跨平台使用数据不再那么遥远。 2.独创P2P同步。 无需中心服务器,任意两个设备自动同步数据。 您无需为在电脑和电脑间传递数据而到处寻找U盘;也无需为在手机与电脑间拷贝图片而使用数据线。 自同步以独有的P2P同步技术让您在任意两个设备上自动同步文件。 3.数据只属于你。无需云,无需外网,安全高速。 你无需在使用云服务同步文件时为担心数据丢失、泄露而苦恼;更无需在传输大量文件时因需要等待很长时间而发愁。 自同步无需云、无需外网,安全高速,数据只属于你。 自同步软件功能 1)在无网的情况下,手机、平板、电脑间无线同步数据。 2)零流量极速同步,歌曲图片秒同步,大文件同步速度无限制。 3)点对点通信,同时数据传输加密,最安全的同步工具。 4)支持Android手机、Android平板、Windows、Linux、Mac OS X。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值