• CentOS7部署lsyncd+rsync实现服务器文件实时同步


    原文:https://www.jisai.net.cn/articles/centos7-install-lsyncd-rsync-synchronization.html

    lsyncd配置简单灵活,在同步海量小文件时,性能表现优异, 下面为大家介绍如何部署lsyncd+rsync实现服务器文件实时同步

    实验环境:

    CentOS 7.6 最小化安装

    需求及网络拓扑图如下

    CentOS7部署lsyncd+rsync实现服务器文件实时同步

    A(192.168.123.100):Rsync客户端+lsyncd

    B(192.168.123.200):Rsync服务端(daemon模式)

    需求:

    当A服务器中的文件发生变化(新增、修改、删除),实时推动到B服务器

    实现思路:

    A中部署Rsync客户端+lsyncd,lsyncd通过内核的inotify触发机制监控文件的动向,并将改动发送给Rsync,由Rsync同步到服务器B;服务器B以守护进程的方式部署Rsync服务端,接收A发来的文件同步请求,并将文件同步!

    一、安装Rsync

    在A服务和B服务器执行以下命令安装Rsync

    yum install -y rsync

    二、安装lsyncd

    CentOS 7自带的yum无法安装lsyncd。可以通过安装EPEL存储库的方式再用yum安装lsyncd,命令如下:

    yum install -y epel-release

    接着执行以下命令即可直接安装lsyncd

    yum -y install lsyncd

    注:

    lsyncd 只需要在A服务器上安装,B服务器无需安装

    三、配置Rsync

    A服务器为Rsync客户端,安装完成即可,B服务器以daemon方式运行,所以只需要对B服务器的Rsync进行配置

    1、修改配置文件:

    vim /etc/rsyncd.conf

    将配置文件修改如下:

    # /etc/rsyncd: configuration file for rsync daemon mode
     
    # See rsyncd.conf man page for more options.
     
    # configuration example:
    uid = rsync #Rsync运行用户
    gid = rsync #Rsync运行用户组
    use chroot = no
    max connections = 4 #最大连接数
    pid file = /var/run/rsyncd.pid #pid文件路径
    lock file = /var/run/rsyncd.lock #lock文件路径
    log file = /var/log/rsyncd.log #日志文件路径
    # exclude = lost+found/
    # transfer logging = yes
    timeout = 300 #超时时间
    # ignore nonreadable = yes
    # dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
     
    # [ftp]
    # path = /home/ftp
    # comment = ftp export area
     
    [data] #模块名称,后边要用到!
    path = /data/ #同步路径
    ignore errors
    read only = false #可读可写
    list = false
    hosts allow = 192.168.123.100 #允许访问IP 可写成IP段
    hosts deny = 0.0.0.0/32 #拒绝访问的IP
    auth users = rsync #认证连接的用户名
    secrets file = /etc/rsyncd.pwd #密码文件
    #end file

    :wq 保存退出

    修改前:

    CentOS7部署lsyncd+rsync实现服务器文件实时同步

    修改后:

    CentOS7部署lsyncd+rsync实现服务器文件实时同步

    2、创建用户组和用户

    groupadd rsync
    useradd -s /sbin/nologin -M -g rsync rsync

    3、创建同步目录并授予权限

    mkdir /data
    chown -R rsync:rsync /data

    4、创建认证用户和密码文件并修改权限

    Rsync进行同步需要一个同步的虚拟用户,这个用户的用户名已经在配置文件里指定,下面创建这个用户名的用户密码文件

    由于是用户名和密码文件所以必须要将其修改为600权限,不然后期会报错无法认证

    echo "rsync:rsync" >/etc/rsyncd.pwd
    chmod 600 /etc/rsyncd.pwd

    5、启动Rsync

    rsync --daemon --config=/etc/rsyncd.conf

    6、验证Rsync是否启动

    我们可以通过查看Rsync监听端口(Rsync默认监听873端口),或者查看日志文件以确定Rsync是否以daemon模式成功启动

    netstat -anlpt | grep rsync

    或者

    cat /var/log/rsyncd.log

    CentOS7部署lsyncd+rsync实现服务器文件实时同步

    如图,即Rsync已成功启动

    至此,服务器B端的操作,已经结束

    7、测试Rsync

    服务器A需要创建相应的密码认证文件用于用户自动认证

    由于也是密码文件,所以也需要将文件权限修改为600

    echo "rsync" > /etc/rsyncd.pwd #由于我们要在同步命令里指定用户名,所以这里就不再指定用户名
    chmod 600 /etc/rsyncd.pwd

    由于服务端路径存在权限问题,所以同步源(Rsync客户端)也需要进行相同权限设置

    下面进行创建用户(组)、目录、创建测试文件并赋予其权限

    groupadd rsync
    useradd -s /sbin/nologin -M -g rsync rsync
    mkdir /data
    cd /data/
    touch {01..10}
    chown -R rsync:rsync /data

    目录文件权限如下

    CentOS7部署lsyncd+rsync实现服务器文件实时同步

    关闭两台服务器的防火墙

    systemctl stop firewalld

    下面进行测试

    将A服务器/data/ 目录下的文件同步到B服务器

    rsync -avz /data/ rsync@192.168.123.200::data --password-file=/etc/rsyncd.pwd

    注:

    1. 两个冒号
    2. /data   服务器A的数据源路径
    3. data是模块名称,配置文件里已写明
    4. rsync@192.168.123.200 认证用户名@被同步的服务器IP,这里是B服务器的IP

    如图,即表示成功

    CentOS7部署lsyncd+rsync实现服务器文件实时同步

    8、检测传输

    查看B服务器的/data目录

    如图,文件已同步

    CentOS7部署lsyncd+rsync实现服务器文件实时同步

    四、配置lsyncd

    1、修改配置文件

    vim /etc/lsyncd.conf

    删除原有内容并键入以下内容

    settings {
    logfile = "/var/log/lsyncd/lsyncd.log",
    statusFile = "/var/log/lsyncd/lsyncd.status",
    inotifyMode = "CloseWrite",
    maxProcesses = 8,
    maxDelays = 1,
    nodaemon = false,
    }
    sync {
    default.rsync,
    source = "/data/", --监控目录
    target = "rsync@192.168.123.200::data", --rsync的认证用户名、IP、模块
    -- delete = true,
    exclude = {
    '.**',
    '.git/**',
    '*.bak',
    '*.tmp',
    'runtime/**',
    'cache/**'
    },
    delay = 15,
    -- init = false,
    rsync = {
    binary = "/usr/bin/rsync", --rsync可执行文件路径,必须为绝对路径
    password_file = "/etc/rsyncd.pwd", --密码认证文件
    archive = true,
    compress = false,
    verbose = false,
    _extra = {"--bwlimit=200", "--omit-link-times"}
    }
    }

    修改前:

    CentOS7部署lsyncd+rsync实现服务器文件实时同步

    修改后:

    CentOS7部署lsyncd+rsync实现服务器文件实时同步

    注:lsyncd的配置文件是lua语法,注释方式为:“--”

    2、启动lsyncd

    lsyncd -log Exec /etc/lsyncd.conf

    或者

    systemctl start lsyncd

    如图,即表示启动成功

    CentOS7部署lsyncd+rsync实现服务器文件实时同步

    或者

    CentOS7部署lsyncd+rsync实现服务器文件实时同步

    3、测试

    修改/data 目录下的任意文件,保存,查看B服务器是否同步

    服务器A

    CentOS7部署lsyncd+rsync实现服务器文件实时同步

    服务器B

    CentOS7部署lsyncd+rsync实现服务器文件实时同步

    如图,内容成功同步,实验成功,撒花!!!!

    注:

    1. 文件权限一定一致
    2. Rsync运行需要系统用户,认证需要Rsync虚拟用户,注意两个用户的区别
    3. 如果有报错,注意查看日志文件检测运行状态

    原创文章。发布者:汲赛,转载请注明出处:https://www.jisai.net.cn/articles/centos7-install-lsyncd-rsync-synchronization.html

  • 相关阅读:
    《父亲写的散文诗》--许飞
    python 解数独
    github key already in use
    openwrt ddns绑定域名
    hexo 长期后台运行
    修复云服务器rpm无法使用的问题
    vim 取消筛选高亮
    力扣 2021.02.25 最长公共前缀
    [模板]-Manacher
    背包问题回顾
  • 原文地址:https://www.cnblogs.com/wangmo/p/15273457.html
Copyright © 2020-2023  润新知