rsync+sersync实现实时文件同步

目录

一、背景

二、环境

三、实验步骤

1、备份服务器操作

2、数据源服务器操作

3、测试数据同步

4、安装sersync工具,实时触发rsync进行同步

5、测试数据实时同步

四、总结

五、注意事项


一、背景

  rsync 是一个用于文件同步和传输的工具,它可以在本地和远程文件系统之间同步文件。

  rsync 通过增量传输的方式,只传输源和目标之间不同的部分,这使其在网络传输时非常高效。它通常用于备份、镜像和迁移任务。

二、环境

备份服务器:192.168.56.129;操作系统:centos7.9

数据源服务器:192.168.56.128;操作系统:centos7.9

三、实验步骤

1、备份服务器操作

关闭selinux,永久关闭防火墙

[root@mysql2 ~]# sed -i '/^SELINUX/s/enforcing/disable/' /etc/selinux/config 
[root@mysql2 ~]# cat /etc/selinux/config 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 
[root@mysql2 ~]# getenforce
Disabled
[root@mysql2 ~]# systemctl stop firewalld
[root@mysql2 ~]# systemctl disable firewalld
[root@mysql2 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

安装rsync软件

[root@mysql2 ~]# yum install rsync xinetd -y
[root@mysql2 ~]# echo "/usr/bin/rsync --daemon --config=/etc/rsyncd.conf" >> /etc/rc.d/rc.local 
[root@mysql2 ~]# systemctl start xinetd

 创建rsyncd.conf配置文件

[root@mysql2 ~]# 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
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.56.128 #允许的IP地址(数据源服务器地址)

创建用户认证文件

[root@mysql2 ~]# vim /etc/rsync.pass
写入
#格式,用户名:密码,可以设置多个,每一行一个用户名:密码
simons:123456

设置文件权限

[root@mysql2 ~]# chmod 600 /etc/rsyncd.conf #设置文件所有者读取、写入权限
[root@mysql2 ~]# chmod 600 /etc/rsync.pass #设置文件所有者读取、写入权限

启动rsync和xinetd

[root@mysql2 ~]# /usr/bin/rsync --daemon --config=/etc/rsyncd.conf
[root@mysql2 ~]# ps aux |grep rsyncd
root       8566  0.0  0.0 114852   576 ?        Ss   20:37   0:00 /usr/bin/rsync --daemon --config=/etc/rsyncd.conf
root       8572  0.0  0.0 112824   988 pts/0    S+   20:38   0:00 grep --color=auto rsyncd
[root@mysql2 ~]# systemctl start xinetd

2、数据源服务器操作

关闭selinux,永久关闭防火墙

[root@mysql ~]# sed -i '/^SELINUX/s/enforcing/disabled/' /etc/selinux/config 
[root@mysql ~]# systemctl stop firewalld
[root@mysql ~]# systemctl disable firewalld
[root@mysql ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

安装rsync软件

[root@mysql ~]# yum install rsync xinetd -y
#设置开机启动
[root@mysql ~]# echo "/usr/bin/rsync --daemon" >> /etc/rc.d/rc.local 
[root@mysql ~]# cat /etc/rc.d/rc.local 
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local
ulimit -n 1000000
/usr/bin/rsync --daemon

 创建rsyncd.conf配置文件

#修改配置文件
vim /etc/rsyncd.conf
添加
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
motd file = /var/rsyncd.Motd
[Sync]
        comment = Sync
        uid = root
        gid = root
        port = 873

 启动xinetd服务管理rsync服务

[root@mysql ~]# systemctl start xinetd

创建认证密码文件

[root@mysql ~]# vim /etc/passwd.txt 
#编辑文件,添加以下内容,该密码应与目标服务器中的/etc/rsync.pass中的密码一致
123456

设置文件权限,只设置文件所有者具有读取、写入权限即可

[root@mysql ~]# chmod 600 /etc/passwd.txt 

3、测试数据同步

数据源服务器192.168.56.128到备份服务器192.168.56.129,之间的数据

 (在数据源服务器上的操作)

[root@mysql ~]# rsync -avH --port=873 --progress --delete /backup(要备份的数据源目录) root@192.168.56.129::back_data --password file=/etc/passwd.txt

出现如下视图,表示成功

sending incremental file list
backup/
backup/all_db.sql
        875,989 100%  160.83MB/s    0:00:00 (xfr#1, to-chk=0/2)

sent 876,325 bytes  received 39 bytes  1,752,728.00 bytes/sec
total size is 875,989  speedup is 1.00

4、安装sersync工具,实时触发rsync进行同步

在数据源服务器上修改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.cnf
写入
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
--2024-03-17 10:51:26--  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-03-17 10:51:26--  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     4.22MB/s 用时 0.2s   

2024-03-17 10:51:26 (4.22 MB/s) - 已保存 “sersync2.5.4_64bit_binary_stable_final.tar.gz” [727290/727290])

解压sersync2.5.4_64bit_binary_stable_final.tar.gz 

[root@mysql backup]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz 

移动解压后的文件到/usr/local改名为sersync

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

创建resync

进入目录/usr/local/sersync,备份内容

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

(data_configxml.xml才是后面需要使用的配置文件)

修改data_configxml.xml配置文件

[root@mysql sersync]# vim data_configxml.xml 
 24         <localpath watch="/backup">
 25             <remote ip="192.168.56.131" 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"/>

启动sersync服务

[root@mysql sersync]# /usr/local/sersync/sersync2 -d -r -o /usr/local/sersync/data_configxml.xml 
set the system param
execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches
execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events
parse the command param
option: -d 	run as a daemon
option: -r 	rsync all the local files to the remote servers before the sersync work
option: -o 	config xml name:  /usr/local/sersync/data_configxml.xml
daemon thread num: 10
parse xml config file
host ip : localhost	host port: 8008
daemon start,sersync run behind the console 
config xml parse success
please set /etc/rsyncd.conf max connections=0 Manually
sersync working thread 12  = 1(primary thread) + 1(fail retry thread) + 10(daemon sub threads) 
Max threads numbers is: 22 = 12(Thread pool nums) + 10(Sub threads)
please according your cpu ,use -n param to adjust the cpu rate
------------------------------------------
rsync the directory recursivly to the remote servers once
working please wait...
execute command: cd /backup && rsync -artuz -R --delete ./ 192.168.56.131::back_data >/dev/null 2>&1 
run the sersync: 
watch path is: /backup

设置sersync监控开机自动执行

[root@mysql sersync]# echo "/usr/local/sersync/sersync2 -d -r -o /usr/local/sersync/data_configxml.xml" >>/etc/rc.d/rc.local 

5、测试数据实时同步

在数据源服务器监听的/backup目录下,新建或者删除文件在备份服务器上对应的/backup目录下,查看效果

四、总结

        结合使用 rsync 和 sersync 来实现高效的实时文件同步。例如,使用 sersync 来监控本地目录的变化,并在变化发生时触发 rsync 命令将文件同步到远程服务器。这样可以实现一个实时的、高效的、自动化的文件同步解决方案。

五、注意事项

  • 确保源和目标服务器之间的网络连接稳定可靠。
  • 根据需要配置合适的过滤规则,以避免不必要的同步。
  • 监控同步过程,确保没有错误或遗漏。
  • 在生产环境中使用前,先在测试环境中验证同步的准确性和性能。
  • 29
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
同步软件是一款自同步是最好用的局域网文件实时同步工具。软件使用方便、同步快速,并且支持五大平台,包括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。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值