rsync+inotify实现数据同步——双向传输

实验环境:<仅2台主机之间进行数据双向传输>

A主机:10.1.43.102

B主机:10.1.43.103

一、数据从A推向B

配置流程

先在B主机上配置:

1.vi /etc/rsyncd.conf(用户,目录,模块,虚拟用户及密码文件)

uid = root
gid = root
port = 873 #post rsync使用的端口号  也是默认端口号 www.jbxue.com
hosts allow = 10.1.43.102 #allow hosts ip 允许A主机的ip访问
max connections = 200
timeout = 300
    
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
    
[backup]
path =/var/www/html  #客服端已rsync服务端同步的文件路径
comment = from 10.1.43.102  #A主机的IP地址
read only = no
write only = no
list = no
    
auth users =rsync  #配置登陆名称
secrets file = /etc/rsync.passwd11  #配置用户名密码文件

2.创建共享目录:/test/rsync

mkdri -pv /test/rsync

3、创建密码文件,文件路径和文件名参照配置文件里"secrets file"选项的值,然后添加密码内容。

vim /etc/rsync.password11
rsync:123456

4、密码文件的权限600

chmod 600 /etc/rsync.password11

5、运行rsync,并且开机启动

rsync –daemon
echo "rsync –daemon" >> /etc/rc.local

6、如果出错,查看日志  

tail /var/log/rsyncd.log

在A主机上配置:

1、密码文件

vim /etc/rsync.passwd11
123456   #注意:此处只需要写服务端虚拟帐号的密码即可

2、密码文件的权限600

chmod 600 /etc/rsync.passwd11

3.创建共享目录:/test/rsync

mkdri -pv /test/rsync

4、安装inotify-tools软件包

yum -y install inotify-tools

5、编写同步脚本

vim /root/bin/rsync.sh
#!/bin/bash
src=/test/rsync
des=backup
host="10.1.43.103"
/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y%H:%M' --format '%T%w%f' -e modify,delete,create,attrib \  #此行尚未完结
$src | while read files; do
  for hostip in $host; do
    rsync -avz --delete --progress --password-file=/etc/rsync.passwd11 $src rsync@$hostip::$des
  done
  echo "${files} was rsynced" >>/tmp/rsync.log 2>&1
done

6、后台自动运行,并且开机自动启动

nohup /bin/bash /root/bin/rsync.sh &
echo "nohup /bin/bash /root/bin/rsync.sh &" >> /etc/rc.loacl

二、数据从B推向A

配置流程

先在A主机上配置:

1.vi /etc/rsyncd.conf(用户,目录,模块,虚拟用户及密码文件)

uid = root
gid = root
port = 873 #post rsync使用的端口号  也是默认端口号 www.jbxue.com
hosts allow = 10.1.43.103 #allow hosts ip 允许B主机的ip访问
max connections = 200
timeout = 300
    
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
    
[backup]
path =/var/www/html  #客服端已rsync服务端同步的文件路径
comment = from 10.1.43.103  #B主机的IP地址
read only = no
write only = no
list = no
    
auth users =rsync  #配置登陆名称
secrets file = /etc/rsync.passwd22  #配置用户名密码文件

2.创建共享目录:/test/rsync

mkdri -pv /test/rsync

3、创建密码文件,文件路径和文件名参照配置文件里"secrets file"选项的值,然后添加密码内容。

vim /etc/rsync.passwd22
rsync:654321

4、密码文件的权限600

chmod 600 /etc/rsync.passwd22

5、运行rsync,并且开机启动

rsync –daemon
echo "rsync –daemon" >> /etc/rc.local

6、如果出错,查看日志  

tail /var/log/rsyncd.log

在B主机上配置:

1、密码文件

vim /etc/rsync.passwd22
654321   #注意:此处只需要写服务端虚拟帐号的密码即可

2、密码文件的权限600

chmod 600 /etc/rsync.passwd22

3.创建共享目录:/test/rsync

mkdri -pv /test/rsync

4、安装inotify-tools软件包

yum -y install inotify-tools

5、编写同步脚本

vim /root/bin/rsync.sh
#!/bin/bash
src=/test/rsync
des=backup
host="10.1.43.102"
/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y%H:%M' --format '%T%w%f' -e modify,delete,create,attrib \  #此行尚未完结
$src | while read files; do
  for hostip in $host; do
    rsync -avz --delete --progress --password-file=/etc/rsync.passwd22 $src rsync@$hostip::$des
  done
  echo "${files} was rsynced" >>/tmp/rsync.log 2>&1
done

6、后台自动运行,并且开机自动启动

nohup /bin/bash /root/bin/rsync.sh &
echo "nohup /bin/bash /root/bin/rsync.sh &" >> /etc/rc.loacl

注意:以上配置在双向传输数据时,只能增量传输,如果是删除文件,则存在一定的问题

如果再配置过程中出现如下问题

问题一:

@ERROR: chroot failed

rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]

原因:

服务器端的目录不存在或无权限,创建目录并修正权限可解决问题

问题二:

@ERROR: auth failed on module backup

rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]

原因:

服务器端该模块(backup)需要验证用户名密码,但客户端没有提供正确的用户名密码,认证失败

提供正确的用户名密码解决此问题

问题三:

@ERROR: Unknown module ‘backup'

rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3]

原因:

服务器不存在指定模块。提供正确的模块名或在服务器端修改成你要的模块以解决问题

问题四:

password file must not beother-accessible

continuing without password file

Password:

原因:

这是因为rsyncd.pwdrsyncd.secrets的权限不对,应该设置为600。如:chmod600 rsyncd.pwd

问题五:

rsync: failed to connect to218.107.243.2: No route to host (113)

rsync error: error in socket IO(code 10) at clientserver.c(104) [receiver=2.6.9]

原因:

对方没开机、防火墙阻挡、通过的网络上有防火墙阻挡,都有可能。关闭防火墙,其实就是把tcp udp的873端口打开

问题六:

rsync error: error startingclient-server protocol (code 5) at main.c(1524) [Receiver=3.0.7]

原因:

/etc/rsyncd.conf配置文件内容有错误。请正确核对配置文件

问题七:

rsync: chown "" failed:Invalid argument (22)

原因:

权限无法复制。去掉同步权限的参数即可。(这种情况多见于Linux向Windows的时候)


问题八:

@ERROR: daemon security issue –contact admin

rsync error: error starting client-server protocol (code 5) at main.c(1530)[sender=3.0.6]

原因:

同步的目录里面有软连接文件,需要服务器端的/etc/rsyncd.conf打开use chroot = yes。掠过软连接文件

原创文章,作者:megedugao,如若转载,请注明出处:http://www.178linux.com/54979

(3)
megedugaomegedugao
上一篇 2016-10-27
下一篇 2016-10-27

相关推荐

  • 给linux系统添加新的磁盘

    虚拟化环境中,我们经常会遇到需要增加磁盘容量的情况,通常有两种方式,第一种是添加一块新的硬盘,另一种是扩容原有磁盘,以下是添加新磁盘至linux系统的操作规范。注:具体磁盘信息可能有所不同。 ##查看新增加磁盘/dev/sdb的信息 [root@CentOS7 ~]# fdisk -l /dev/sdb   Disk /dev/sdb: 5368 …

    Linux干货 2016-11-11
  • Raspberry pi设置自动拨号,搭建无线路由环境

    Raspberry pi设置自动拨号,搭建无线路由环境 前言  raspberry pi(树莓派), 是一款针对电脑业余爱好者、教师、小学生以及小型企业等用户的迷你电脑,由于可以烧录Linux操作系统,因此可以衍生出各种各样的使用途径,诸如控制版,爬虫机器,个人vps,门禁系统…..本文主要介绍如何在raspberry pi上面完成pppoe拨号上…

    2017-03-28
  • alias——Linux基本命令(4)

    1.     alias别名 (1)查看、设置别名 Linux系统提供了一个有用的工具叫alias,可以让我们将一些需要频繁使用的但又过于冗长的命令设置一个别名,这样一来,以后只需输入一个简短的别名就可以达到同样的作用。 alias显看当前已定义的别名   使用aliasaliname=’comm…

    2017-07-13
  • Linux基础知识(三)

    1、列出当前系统上所有已经登录的用户的用户名(多次登录的用户,只显示一次即可) [root@bogon ~]# w |grep -E ".*(pts|tty).*"|awk '{print $1}'|uniq 2、列出最后登录到当前系统的用户的相关信息 [root@bogon ~]# last -aF 3、取出当前系统…

    Linux干货 2016-10-09
  • 第一篇博客 简单说下最近的学习心得吧

        今天是个特殊的日子, 来到马哥教育已经一周时间了,刚来的时候满环信心,感觉人生充满了希望,但是接下来的学习让我感受到了什么是绝望,刚开始的两天完全是一种朦胧的状态,不知道干什么,敲得命令也不理解,完全是生搬硬套,没有自己的认知,当时就有一种冲动想要一走了之,后来想想算了 ,然后就坚持到了现在,此时感觉当时的决定是对的,经过一周的学…

    2017-07-15
  • N26-第二周博客作业

    一、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 一) 目录管理命令 1. cd :用于切换目录。命令格式为:cd dirname 命令使用技巧: ~]# cd 进入用户主目录 ~]# cd – 进入上一次所在目录 ~]# cd / 进入根目录 ~]# cd ~ 进入用户主目录 ~]# cd .. 返回上一级…

    2017-03-01