rsync + sersync架构中 max connections参数干扰同步的问题

RSync同步异常解析
本文探讨了RSync服务端与客户端在文件同步过程中遇到的问题,包括文件同步数量受maxconnections参数影响及文件删除同步不完全的情况,并给出了相应解决方案。
  • server端配置:
      1 uid = root
      2 gid = root
      3 use chroot = no
      4 hosts allow=*
      5 pid file = /var/run/rsyncd.pid
      6 lock file = /var/run/rsync.lock
      7 max connections = 3             //写在某个标签下是一样的
      8  
      9 [tp5shop]
     10 path=/usr/local/nginx/html/tp5shop
     11 read only = false
     12 comment = tp5shop
  • sersync端配置
     23     <sersync>
     24         <localpath watch="/usr/local/nginx/html/tp5shop">
     25             <remote ip="192.168.221.131" name="tp5shop"/>
    //同步的路径和远程IP

Q:

    //在sersync端创建文件file1-file5

    [root@server tp5shop]# touch file{1..5}
    [root@server tp5shop]# ll
    total 384
    drwxr-xr-x. 5 www  www    4096 Jun  5 03:15 application
    -rw-r--r--. 1 www  www    1124 Apr  2 13:47 build.php
    -rw-r--r--. 1 www  www    1051 Apr  2 13:47 composer.json
    -rw-r--r--. 1 www  www   18657 Apr  2 13:47 composer.lock
    drwxr-xr-x. 2 www  www    4096 May  7 14:56 extend
    -rw-r--r--  1 root root      0 Jun  6 01:13 file1
    -rw-r--r--  1 root root      0 Jun  6 01:13 file2
    -rw-r--r--  1 root root      0 Jun  6 01:13 file3
    -rw-r--r--  1 root root      0 Jun  6 01:13 file4
    -rw-r--r--  1 root root      0 Jun  6 01:13 file5
    -rw-r--r--. 1 www  www    1854 Apr  2 13:47 LICENSE.txt
    drwxr-xr-x. 8 www  www    4096 Jun  5 03:20 public
    -rw-r--r--. 1 www  www    5904 Apr  2 13:47 README.md
    drwxr-xr-x. 5 www  www    4096 May  7 15:06 runtime
    -rw-r--r--. 1 www  www     770 Apr  2 13:47 think
    drwxr-xr-x. 5 www  www    4096 May  7 14:56 thinkphp
    -rw-r--r--. 1 root root 319529 Apr 12 11:08 tpshop.sql
    drwxr-xr-x. 7 www  www    4096 May  7 14:56 vendor


    //rsync服务端只同步过来3个!
  ```
  ```  
    [root@server_HA tp5shop]# ll
    total 384
    drwxr-xr-x. 5 www  www    4096 Jun  4 23:10 application
    -rw-r--r--. 1 www  www    1124 Apr  2 13:47 build.php
    -rw-r--r--. 1 www  www    1051 Apr  2 13:47 composer.json
    -rw-r--r--. 1 www  www   18657 Apr  2 13:47 composer.lock
    drwxr-xr-x. 2 www  www    4096 May  7 14:56 extend
    -rw-r--r--  1 root root      0 Jun  6 01:13 file1
    -rw-r--r--  1 root root      0 Jun  6 01:13 file2
    -rw-r--r--  1 root root      0 Jun  6 01:13 file3
    -rw-r--r--. 1 www  www    1854 Apr  2 13:47 LICENSE.txt
    drwxr-xr-x. 7 www  www    4096 Jun  2 10:03 public
    -rw-r--r--. 1 www  www    5904 Apr  2 13:47 README.md
    drwxr-xr-x. 5 www  www    4096 May  7 15:06 runtime
    -rw-r--r--. 1 www  www     770 Apr  2 13:47 think
    drwxr-xr-x. 5 www  www    4096 May  7 14:56 thinkphp
    -rw-r--r--. 1 root root 319529 Apr 12 11:08 tpshop.sql
    drwxr-xr-x. 7 www  www    4096 May  7 14:56 vendor

问题总结: 文件同步个数即max connections所设定的最大个数,多了同步不过来!

A:

1.查询max connections 的意义
并发连接的最大数,在达到最大值时,如果再有客户端使用同步会提示如下信息: @ERROR: max connections (1) reached – try again later rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6] 提示客户端达到最大连接数,稍后尝试,如果写成0则不限制,负值禁用模块,配合lock file锁文件使用。

max connections并不是用来限制同步文件的个数的,但是结果却出错。

2.更改参数位置到模块中,还是不行。
3.进一步测试发现删除时也会有问题

    //sersync端删除文件
    [root@server tp5shop]# rm -f file* 
    [root@server tp5shop]# ll
    total 384
    drwxr-xr-x. 5 www  www    4096 Jun  5 03:15 application
    -rw-r--r--. 1 www  www    1124 Apr  2 13:47 build.php
    -rw-r--r--. 1 www  www    1051 Apr  2 13:47 composer.json
    -rw-r--r--. 1 www  www   18657 Apr  2 13:47 composer.lock
    drwxr-xr-x. 2 www  www    4096 May  7 14:56 extend
    -rw-r--r--. 1 www  www    1854 Apr  2 13:47 LICENSE.txt
    drwxr-xr-x. 8 www  www    4096 Jun  5 03:20 public
    -rw-r--r--. 1 www  www    5904 Apr  2 13:47 README.md
    drwxr-xr-x. 5 www  www    4096 May  7 15:06 runtime
    -rw-r--r--. 1 www  www     770 Apr  2 13:47 think
    drwxr-xr-x. 5 www  www    4096 May  7 14:56 thinkphp
    -rw-r--r--. 1 root root 319529 Apr 12 11:08 tpshop.sql
    drwxr-xr-x. 7 www  www    4096 May  7 14:56 vendor


    //rsync服务端
    [root@server_HA tp5shop]# ll
    total 384
    drwxr-xr-x. 5 www  www    4096 Jun  4 23:10 application
    -rw-r--r--. 1 www  www    1124 Apr  2 13:47 build.php
    -rw-r--r--. 1 www  www    1051 Apr  2 13:47 composer.json
    -rw-r--r--. 1 www  www   18657 Apr  2 13:47 composer.lock
    drwxr-xr-x. 2 www  www    4096 May  7 14:56 extend
    -rw-r--r--  1 root root      0 Jun  6 01:13 file3
    -rw-r--r--. 1 www  www    1854 Apr  2 13:47 LICENSE.txt
    drwxr-xr-x. 7 www  www    4096 Jun  2 10:03 public
    -rw-r--r--. 1 www  www    5904 Apr  2 13:47 README.md
    drwxr-xr-x. 5 www  www    4096 May  7 15:06 runtime
    -rw-r--r--. 1 www  www     770 Apr  2 13:47 think
    drwxr-xr-x. 5 www  www    4096 May  7 14:56 thinkphp
    -rw-r--r--. 1 root root 319529 Apr 12 11:08 tpshop.sql
    drwxr-xr-x. 7 www  www    4096 May  7 14:56 vendor

结论:无法完全删除所有想要删除的文件!

4.去掉这个参数,一切正常!

<think>好的,我需要帮助用户了解如何使用rsyncsersync实现文件实时同步。首先,用户的问题是关于配置和使用的教程,所以我应该分步骤讲解安装和配置过程。 首先,我需要确认rsyncsersync各自的角色。rsync负责文件同步,而sersync用于监控文件变化并触发同步。根据用户提供的引用,当数据量大时推荐使用rsync+sersync,所以需要强调这一点。 接下来,我应该按照引用中的步骤来整理教程。引用2提到了安装sersync的具体命令,比如下载、解压、创建符号链接等步骤。这部分需要详细说明,但要注意检查命令的正确性,比如解压后的目录名和符号链接的名称是否一致。例如,用户提供的引用中解压后的目录是GNU-Linux-x86,重命名为sersync-2.5.4,但符号链接却是到sersync-2.5.3,这可能是笔误,需要指出或更正。 然后是配置sersync的XML文件,这部分需要指导用户如何修改目标服务器的IP、路径以及同步模块名称。需要提醒用户根据实际环境修改这些参数,并测试rsync配置是否正确。 接着是启动sersync服务,并设置开机自启。这部分需要给出具体的命令,并说明如何验证服务是否正常运行。此外,故障排查部分也很重要,需要包括检查进程、日志、配置文件以及权限问题。 最后,生成相关问题时要围绕用户可能遇到的疑问展开,比如与其他工具的对比、增量同步参数调优、监控目录排除和安全性等。这些能帮助用户更全面地理解整个方案。 需要注意的是,用户提供的引用中有一些不一致的地方,比如版本号和目录名的问题,需要在回答中明确指出以避免混淆。同时,确保所有命令行操作正确无误,并提醒用户替换示例中的占位符为实际的值。 总结来说,回答需要结构清晰,步骤详细,涵盖安装、配置、启动、测试和常见问题处理,同时根据引用内容补充实际案例和注意事项,确保用户能够顺利配置并使用rsyncsersync实现实时同步。</think>### Rsync + Sersync 实时文件同步配置教程 #### 一、工具原理说明 Rsync 用于实现高效的文件增量同步Sersync 基于 Inotify 机制监控目录变化并触发 Rsync 同步操作,两者结合可满足大规模数据实时同步需求[^1]。 #### 二、环境准备 1. **服务端**(接收文件):安装 Rsync 2. **客户端**(发送文件):安装 Rsync + Sersync #### 三、服务端配置(以 CentOS 为例) ```bash # 安装rsync yum install rsync -y # 创建配置文件 vim /etc/rsyncd.conf # 内容示例: uid = root gid = root use chroot = no max connections = 200 pid file = /var/run/rsyncd.pid log file = /var/log/rsyncd.log [backup] # 模块名称 path = /data/backup # 同步目标路径 read only = no auth users = rsync_user secrets file = /etc/rsync.password # 创建密码文件 echo "rsync_user:123456" > /etc/rsync.password chmod 600 /etc/rsync.password # 启动服务 systemctl start rsyncd ``` #### 四、客户端配置(发送端) 1. **安装 Sersync** ```bash wget https://down.whsir.com/downloads/sersync2.5.4_64bit_binary_stable_final.tar.gz tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz mv GNU-Linux-x86/ /opt/sersync ln -s /opt/sersync/sersync2 /usr/bin/sersync ``` 2. **修改配置文件** ```xml <!-- 编辑 /opt/sersync/confxml.xml --> <localpath watch="/data/www"> <!-- 被监控目录 --> <remote ip="192.168.1.100" name="backup"/> <!-- 服务端IP与模块名 --> </localpath> <rsync> <commonParams params="-artuz"/> <auth start="true" users="rsync_user" passwordfile="/etc/rsync.password"/> </rsync> ``` 3. **创建密码文件** ```bash echo "123456" > /etc/rsync.password chmod 600 /etc/rsync.password ``` #### 五、启动与验证 ```bash # 启动sersync(前台模式) sersync -d -r -o /opt/sersync/confxml.xml # 后台守护模式 sersync -dro /opt/sersync/confxml.xml # 验证进程 ps aux | grep sersync ``` #### 六、高级配置技巧 1. **排除特定文件**:在 `<filter>` 标签中添加 `<exclude expression="*.log"></exclude>` 2. **多目录监控**:复制多个 `confxml.xml` 文件并指定不同路径 3. **性能调优**:调整 `<inotify>` 标签中的 `max_queued_events` 数值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值