• rsync+inotify磁盘数据实时同步


    一.rsync+inotify主服务器部署

    1.1安装rsync

    [root@nginx ~]# cd /usr/src/

    [root@nginx src]# tar zxvf rsync-3.0.9.tar.gz

    [root@nginx src]# cd rsync-3.0.9

    [root@nginx rsync-3.0.9]# ./configure --prefix=/usr/local/rsync

    [root@nginx rsync-3.0.9]# make

    [root@nginx rsync-3.0.9]# make install

    1.2创建密码认证文件

    [root@nginx rsync-3.0.9]# cd /usr/local/rsync/

    [root@nginx rsync]# echo "123456" >/etc/rsync.pass

    请记住,在server端建立的密码文件,只有密码,没有用户名;而在备份服务端client里建立的密码文件,用户名与密码都有

    [root@nginx rsync]# chmod 600 /etc/rsync.pass

    1.3安装inotify

    [root@nginx rsync]# cd /usr/src/

    [root@nginx src]# tar zxvf inotify-tools-3.14.tar.gz

    [root@nginx src]# cd inotify-tools-3.14

    [root@nginx inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify

    [root@nginx inotify-tools-3.14]# make

    [root@nginx inotify-tools-3.14]# make install

    1.4环境变量配置

    echo "PATH=/usr/local/inotify/bin:$PATH" >>/etc/profile.d/inotify.sh

    source /etc/profile.d/inotify.sh  #使设置立即生效

    echo "/usr/local/inotify/lib" >/etc/ld.so.conf.d/inotify.conf

    ln -s /usr/local/inotify/include  /usr/include/inotify

    修改系统默认参数:

    查看系统默认参数值

    sysctl -a | grep max_queued_events

    结果是:fs.inotify.max_queued_events = 16384

    sysctl -a | grep max_user_watches

    结果是:fs.inotify.max_user_watches = 8192

    sysctl -a | grep max_user_instances

    结果是:fs.inotify.max_user_instances = 128

    修改参数:

    sysctl -w fs.inotify.max_queued_events="99999999"

    sysctl -w fs.inotify.max_user_watches="99999999"

    sysctl -w fs.inotify.max_user_instances="65535"

    vi /etc/sysctl.conf #添加以下代码

    fs.inotify.max_queued_events=99999999

    fs.inotify.max_user_watches=99999999

    fs.inotify.max_user_instances=65535

    :wq! #保存退出

    1.5关闭防火墙

    vi /etc/selinux/config #编辑防火墙配置文件

    #SELINUX=enforcing #注释掉

    #SELINUXTYPE=targeted #注释掉

    SELINUX=disabled #增加

    :wq! #保存,退出

     

    setenforce 0  #立即生效

    1.6开启rsync

    Rsync –daemon

    1.7创建实时出发rsync.sh脚本

    vi /usr/local/inotify/rsync.sh   #编辑,添加以下代码

    #!/bin/sh

    srcdir=/var/atliassian/    //我们要同步的文件夹绝对路径

    dstdir=n2  //从服务器rsync配置文件中自定义名称

    excludedir=/usr/local/inotify/exclude.list //不同步的文件夹

    rsyncuser=n2_user  //从服务器rsync配置文件中的auth user选项一致

    rsyncpassdir=/etc/rsync_pass

    dstip="192.168.139.129 " //从服务器IP,可以是多个,用逗号隔开

    for ip in $dstip

    do

    rsync -avH --port=873 --progress --delete  --exclude-from=$excludedir  $srcdir $rsyncuser@$ip::$dstdir --password-file=$rsyncpassdir

    done

    /usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,modify,delete,create,attrib,move $srcdir |  while read file

    do

    for ip in $dstip

    do

    rsync -avH --port=873 --progress --delete  --exclude-from=$excludedir  $srcdir $rsyncuser@$ip::$dstdir --password-file=$rsyncpassdir

    echo "  ${file} was rsynced" >> /tmp/rsync.log 2>&1

    done

    done

     

    1.8设置rsync.sh开机自启动

    vi /etc/rc.d/rc.local  #编辑,在最后添加一行

    sh /usr/local/inotify/rsync.sh & #设置开机自动在后台运行脚本

    :wq!  #保存退出

     

    二.从服务器部署rsync

    2.1关闭selinux

    vi /etc/selinux/config #编辑防火墙配置文件

    #SELINUX=enforcing #注释掉

    #SELINUXTYPE=targeted #注释掉

    SELINUX=disabled #增加

    :wq! #保存,退出

     

    setenforce 0  #立即生效

     

    开启防火墙tcp 873端口(Rsync默认端口)

    vi /etc/sysconfig/iptables #编辑防火墙配置文件

    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 873 -j ACCEPT

    :wq! #保存,退出

    /etc/init.d/iptables restart #最后重启防火墙使配置生效

     

    注:可以直接关闭防火墙 iptables -F

     

    2.2安装rsync软件

    [root@nginx ~]# cd /usr/src/

    [root@nginx src]# tar zxvf rsync-3.0.9.tar.gz

    [root@nginx src]# cd rsync-3.0.9

    [root@nginx rsync-3.0.9]# ./configure --prefix=/usr/local/rsync

    [root@nginx rsync-3.0.9]# make

    [root@nginx rsync-3.0.9]# make install

     

    2.3配置rsync文件

    vim /etc/rsyncd.conf #创建配置文件,添加以下代码

    uid = root      #设置rsync运行权限为root

    gid = root      #设置rsync运行权限为root

    port=873  #默认端口

    use chroot = no    #默认为true,修改为no,增加对目录文件软连接的备份

    max connections = 40  #最大连接数

    timeout = 300       #设置超时时间

    pid file = /var/run/rsyncd.pid     #pid文件的存放位置

    lock file = /var/run/rsync.lock     #支持max connections参数的锁文件

    log file = /var/log/rsyncd.log #日志文件位置启动rsync后自动产生这个文件,无需提前创建

    secrets file =/etc/rsync.pass #用户认证配置文件,里面保存用户名称和密码

    modtd file=/etc/rsyncd.Motd  #rsync启动时欢迎信息页面文件位置(文件内容自定义)

    [n2] #自定义名称

    path = /var/atliassian / #rsync服务端数据目录路径

    comment=n2 #模块名称与[n2]自定义名称相同

          

    ignore errors

    read only = no      #设置rsync服务端文件为读写权限

    list = no  #不显示rsync服务端资源列表

    hosts allow = 主服务器IP   #允许进行数据同步的客户端IP地址,可以设置多个

    auth users = n2_user #执行数据同步的用户名,可以设置多个,逗号隔开,与密码认证文件的用户名一致

    #hosts deny = 192.168.21.254 #禁止数据同步的客户端IP地址,可以设置多个

    2.4创建密码认证文件

    vim /etc/rsync.pass

    n2_user:123456  //格式用户名:密码  密码要与服务端rsync.pass密码保持一致

    //n2_user 是从服务器rsyncd.conf配置文件中的auth user的值

    2.5赋予密码认证文件权限

    chmod 600 /etc/rsync.pass

    chmod 600 /etc/rsyncd.conf

    2.6开启rsync

    rsync –daemon

  • 相关阅读:
    Thread系列之WaitHandle
    C# lock,Monitor 介绍(多线程并发控制)
    C#多线程学习(五) 多线程的自动管理(定时器)
    Thread系列之AutoResetEvent
    Thread系列之Thread.Sleep(0)
    (转)Java 内存模型
    哈希表(一)
    Java GC
    哈希表(二)
    图(一)
  • 原文地址:https://www.cnblogs.com/zy1234567/p/9814991.html
Copyright © 2020-2023  润新知