rsync+lsyncd实现文件实时同步

可参考http://seanlook.com/2015/05/06/lsyncd-synchronize-realtime/

可参考http://openlinuxfly.blog.51cto.com/7120723/1679279

一、环境

lsyncd    192.168.3.71

rsync     192.168.3.72

二、配置rsync服务器

配置rsync以xinetd方式运行

[[email protected] ~]# yum install rsync -y
[[email protected] ~]# yum install xinetd -y

#修改/etc/xinetd.d/rsync
[[email protected] ~]# vim /etc/xinetd.d/rsync
service rsync
{
    disable         = no          ##将yes改成no  
    socket_type     = stream
    wait            = no
    user            = root
    server          = /usr/bin/rsync
    server_args     = --daemon
    log_on_failure  += USERID
}

#启动xinetd服务
[[email protected] ~]# service xinetd start
Starting xinetd:                                           [  OK  ]

#rsync默认的监听端口是873,查看873号端口是否启动
[[email protected] ~]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1247/sshd           
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1324/master         
tcp        0      0 :::22                       :::*                        LISTEN      1247/sshd           
tcp        0      0 ::1:25                      :::*                        LISTEN      1324/master         
tcp        0      0 :::873                      :::*                        LISTEN      1561/xinetd

创建rsync服务目录和配置文件

#创建rsync服务目录
[[email protected] ~]# mkdir /etc/rsyncd

# 创建配置文件
[[email protected] ~]# touch /etc/rsyncd/rsyncd.conf

# 创建密码文件
[[email protected] ~]# touch /etc/rsyncd/rsyncd.secrets

#权限修改
[[email protected] ~]# chown root:root /etc/rsyncd/rsyncd.secrets
[[email protected] ~]# chmod 600 /etc/rsyncd/rsyncd.secrets            #这里的权限设置必须是600

创建用户和密码

[[email protected] ~]# echo "rsync:test" >>/etc/rsyncd/rsyncd.secrets

创建rsync配置文件

[[email protected] ~]# cat /etc/rsyncd/rsyncd.conf 
# GLOBAL OPTIONS
uid = root
gid = root
 
use chroot = no
 
read only = no        #我们需要实时同步lsyncd服务器上的资源,这个需要有写权限,或者在模块中赋予写权限
 
#limit access to private LANs
hosts allow=192.168.3.0/255.255.0.0
hosts deny=*
max connections = 5
 
pid file = /var/run/rsyncd.pid
 
secrets file = /etc/rsyncd/rsyncd.secrets
#lock file = /var/run/rsync.lock           
 
motd file = /etc/rsyncd/rsyncd.motd        
 
#This will give you a separate log file
log file = /var/log/rsync.log               
 
#This will log every file transferred - up to 85,000+ per user, per sync
transfer logging = yes
 
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
 
# MODULE OPTIONS
[test]
path = /data/test
list=yes
ignore errors
auth users = rsync            #客户端连接过来使用的用户是rsync
comment = welcome to rsync server

编辑xinetd的rsync配置文件,添加配置文件路径

#添加rsync的配置文件路径
[[email protected] ~]# vim /etc/xinetd.d/rsync
service rsync
{
    disable = no
    socket_type     = stream
    wait            = no
    user            = root
    server          = /usr/bin/rsync
    server_args     = --daemon --config=/etc/rsyncd/rsyncd.conf    #添加配置文件路径
    log_on_failure  += USERID
}

#重启xinetd服务
[[email protected] ~]# service xinetd restart
Stopping xinetd:                                           [  OK  ]
Starting xinetd:                                           [  OK  ]
[[email protected] ~]# netstat -anpt |grep 873
tcp        0      0 :::873                      :::*                        LISTEN      1586/xinetd 

#创建数据目录
[[email protected] ~]# mkdir -p /data/test

三、配置lsyncd服务器

#安装rsync,lsyncd
[[email protected] ~]# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[[email protected] ~]# sed -i ‘[email protected]#[email protected]@g‘ /etc/yum.repos.d/epel.repo
[[email protected] ~]# sed  -i ‘[email protected]@#[email protected]‘ /etc/yum.repos.d/epel.repo
[[email protected] ~]# yum install rsync lsyncd -y

配置lsyncd服务配置文件

本地同步

1.1 本地目录同步:direct:cp/rm/mv。 适用:500+万文件,变动不大

[[email protected] ~]# vim /etc/lsyncd.conf 
settings {
        logfile         = "/tmp/lsyncd.log",
        statusFile      = "/tmp/lsyncd.status",
        statusInterval  = 5,
}

sync {
        default.direct,
        source          = "/data/test",            #要同步的源目录
        target          = "/data/dest",            #同步的目的目录
        delay           = 1,    
        maxProcesses    = 1,
}

#启动服务
[[email protected] ~]# /etc/init.d/lsyncd start
Starting lsyncd:                                           [  OK  ]

#测试,查看目录内容
[[email protected] ~]# ll /data/test
total 0
-rw-r--r-- 1 root root 0 Jul 30 15:00 1.txt
-rw-r--r-- 1 root root 0 Jul 30 15:01 test.txt
[[email protected] ~]# ll /data/dest/
total 0
-rw-r--r-- 1 root root 0 Jul 30 15:00 1.txt
-rw-r--r-- 1 root root 0 Jul 30 15:01 test.txt

#创建一个新文件
[[email protected] ~]# touch /data/test/for.py

#查看结果
[[email protected] ~]# ll /data/dest/
total 0
-rw-r--r-- 1 root root 0 Jul 30 15:00 1.txt
-rw-r--r-- 1 root root 0 Jul 30 15:03 for.py
-rw-r--r-- 1 root root 0 Jul 30 15:01 test.txt

#删除/data/test目录下的txt文件
[[email protected] ~]# rm -rf /data/test/*.txt
[[email protected] ~]# ll /data/dest/
total 0
-rw-r--r-- 1 root root 0 Jul 30 15:03 for.py

1.2 本地目录同步rsync模式:rsync

#编辑lsyncd配置文件添加如下内容
[[email protected] ~]# vim /etc/lsyncd.conf 
sync{
        default.rsync,
        source          = "/data/test",
        target          = "/tmp/ceshi",            #如果目录不存在,会自动创建目录
        delete          = true,
        exclude         = { "test"},
        rsync = {
                compress = true,
                verbose  = true,
                archive  = true,
        }
}

#重启服务
[[email protected] ~]# /etc/init.d/lsyncd restart
Stopping lsyncd:                                           [  OK  ]
Starting lsyncd:                                           [  OK  ]

#测试
[[email protected] ~]# ll /tmp/ceshi/
total 0
-rw-r--r-- 1 root root 0 Jul 30 15:03 for.py

#在/data/test下添加一个文件ceshi.txt
[[email protected] ~]# touch /data/test/ceshi.txt
[[email protected] ~]# ll /tmp/ceshi/                #有点延迟,可能是虚拟机的原因
total 0
-rw-r--r-- 1 root root 0 Jul 30 15:14 ceshi.txt
-rw-r--r-- 1 root root 0 Jul 30 15:03 for.py

远程同步

2.1 远程同步: rsync模式 + rsyncd daemon

#创建密码文件
[[email protected] ~]# echo "test" > /etc/backserver.pas
[[email protected] ~]# chmod 600 /etc/backserver.pas 

#修改lsyncd的配置文件,添加如下内容
[[email protected] ~]# vim /etc/lsyncd.conf 
sync{
        default.rsync,
        source          = "/data/test",
        target          = "[email protected]::test",    #这里的用户是192.168.3.72里设置的用户
        delete          = true,
        exclude         = { ".tmp"},
        delay           = 1,
        rsync   = {
                binary = "/usr/bin/rsync",
                archive = true,
                compress = true,
                verbose = true,
                password_file = "/etc/backserver.pas",    #需要的密码配置文件
                _extra  = {"--bwlimit=200",}
        }
}

[[email protected] ~]# /etc/init.d/lsyncd restart
Stopping lsyncd:                                           [  OK  ]
Starting lsyncd:                                           [  OK  ]

#测试,查看rsync:192.168.3.72上的test模块下的文件
[[email protected] ~]# hostname
rsync
[[email protected] ~]# ll /data/test/
total 0
-rw-r--r-- 1 root root 0 Jul 30 15:15 1.txt
-rw-r--r-- 1 root root 0 Jul 30 15:14 ceshi.txt
-rw-r--r-- 1 root root 0 Jul 30 15:03 for.py
-rw-r--r-- 1 root root 0 Jul 30 15:23 test

#在lsyncd上删除/data/test目录下的for.py
[[email protected] ~]# hostname 
lsyncd
[[email protected] ~]# rm -rf /data/test/for.py 

#查看结果
[[email protected] ~]# hostname
rsync
[[email protected] ~]# ll /data/test/
total 0
-rw-r--r-- 1 root root 0 Jul 30 15:15 1.txt
-rw-r--r-- 1 root root 0 Jul 30 15:14 ceshi.txt
-rw-r--r-- 1 root root 0 Jul 30 15:23 test

#测试添加一个文件
[[email protected] ~]# hostname
lsyncd
[[email protected] ~]# touch /data/test/docker.txt

#查看结果
[[email protected] ~]# ll /data/test/
total 0
-rw-r--r-- 1 root root 0 Jul 30 15:15 1.txt
-rw-r--r-- 1 root root 0 Jul 30 15:14 ceshi.txt
-rw-r--r-- 1 root root 0 Jul 30 15:31 docker.txt
-rw-r--r-- 1 root root 0 Jul 30 15:23 test
时间: 2024-10-11 07:14:09

rsync+lsyncd实现文件实时同步的相关文章

Rsync+inotify实现文件实时同步

数据备份.文件备份是运维.DBA等岗位最熟悉不过的话题,这里不介绍数据库的备份,简单介绍一下文件同步工具,这样的工具有很多,Windows环境下有Goodsync.FreeFileSync等,Linux下rsync.unison等,常用的实时同步,是几种工具的组合,经过组合的工具达到文件实时同步的效果. 一.常用实时同步方案 1.NFS网络文件系统 该方案是分布式架构中,解决不同节点对同一资源访问的问题,搭建NFS服务器,将其挂载在不同的节点,每个节点将公用的数据存储在NFS服务器上,实现文件的

rsync+inotify实现文件实时同步-步骤详解

实验拓扑(centos7下):192.168.80.181 服务器端(主机名www.aa.com)192.168.80.182 客户端(主机名www.ab.com)1.使用SSH源:安装rsync,服务端和客户端同时安装,只使用客户端命令就OK了.systemctl stop firewalldsetenforce 0yum install -y rsync---以上三句在服务器端和客户端都要执行---------rsync -avz [email protected]:/tmp/ /opt/

centos7安装sersync2+rsync+inotify-tools实现文件实时同步

服务器准备: A:100.251.70.190 (客户图片文件的上传)从A同步到B B:100.251.70.191 (客服浏览器浏览下载) 操作步骤: (A和B服务器都必须安装的) # rpm -qa|grep rsync rsync-3.0.9-15.el7.x86_64 # yum install rsync(没有rsync就安装一下) (B服务器安装配置) #工作中指定用户(需要指定用户) uid = root gid = root #相当于黑洞.出错定位 use chroot = no

三、sersync+rsync实现服务器文件实时同步

一.为什么要用rsync+sersync架构? 1.sersync是基于inotify开发的,类似于inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增加.删除.修改)具体某一个文件或者某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的文件或者目录 二.rsync+inotify-tools与rsync+sersync架构的区别? 1.rsync+inotify-tools a.inotify只能记录下被监听的目录发生了变化(增,删,改)并没

基于rsync+inotify实现文件实时同步

rsync英文名remote  synchronization,可使本地和远程两台主机之间的数据快速复制同步镜像 远程备份的功能,rsync在拷贝时候会先比较源数据跟目标数据,不一致才复制,实现增量拷贝 监听于873/tcp rsync有许多选项: -n: 在不确定命令是否能按意愿执行时,务必要事先测试:-n可以完成此功能: -v: --verbose,详细输出模式 -q: --quiet,静默模式 尽可能输出少 -c: --checksum,开启校验功能,强制对文件传输进行校验 -r: --r

rsync+sersync实现文件实时同步

一.准备 二.安装配置 三.启动 nohup /usr/local/sersync/sersync2 -r -d -o /usr/local/sersync/confxml.xml > /usr/local/sersync/rsync.log 2>&1 &

sersync2+rsync目录文件实时同步备份

说明: 192.168.1.2(sersync+rsync)---------------FTP 192.168.1.3(rsync)--------------------------backup 实验目的: 实时自动同步:192.168.1.2 ------->192.168.1.3到目录:/data/ftpdata ; 764  viconfxml.xml 765  ./GNU-Linux-x86/sersync2 -d -r confxml.xml 767  ./GNU-Linux-x8

rsync+inotify 实现服务器之间目录文件实时同步(转)

软件简介: 1.rsync 与传统的 cp. tar 备份方式相比,rsync 具有安全性高.备份迅速.支持增量备份等优点,通过 rsync 可 以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定 期做数据镜像等. 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync 在高端业务系统中 也逐渐暴露出了很多不足,首先,rsync 同步数据时,需要扫描所有文件后进行比对,进行差量传输.如 果文件数量达到了百万甚至千万量级,扫描所有

Centos 6.5 rsync+inotify 两台服务器文件实时同步

rsync和inotify是什么我这里就不在介绍了,有专门的文章介绍这两个工具. 1.两台服务器IP地址分别为: 源服务器:192.168.1.2 目标服务器:192.168.1.3 @todo:从源服务器(192.168.1.2)的/www/目录下的所有的文件实时同步到目标服务器(192.168.1.3)的/www_bak/目录下 源服务器下需要安装rsync和inotify,源服务器做为server端,实时的向目标服务器client端发送数据 2.安装 rsync 一般centos6.5下都