zoukankan      html  css  js  c++  java
  • CentOS7安装和配置rsync+inotify

    (1)rsync介绍

    1.rsync介绍
    开源,实现全量及增量的本地或远程数据同步备份工具
    2.工作场景:
    存储实时备份:rsync+inotify
    定时备份:rsync+crond
    3.rsync工作方式
    1)单个主机本地之间的数据传输
    2)借助rcp,ssh等通道来传输数据,类似scp命令
    3)以守护进程的方式(socket)

    通道模式:借助ssh
    推:push
    	方式一:rsync  -e 'ssh -p 22'  /etc/hosts  root@192.168.111.103:/tmp
    	方式二:rsync -avz  -e 'ssh'  /etc/hosts  root@192.168.111.103:/tmp
    拉:poll
    	方式一:rsync -avz -e 'ssh ' root@192.168.111.103:/etc/passwd   /tmp
    	方式二:rsync  -e 'ssh ' root@192.168.111.103:/etc/passwd   /tmp
    

    4.rsync参数

    -v	详细模式输出,传输时的进度等信息
    -z	compress,压缩传输,提高传输效率
    -a	归档模式,表示以递归方式传输文件,并保存所有文件属性,等于-rvztopgD1
    -P	显示同步的过程及传输时的进度等信息;
    

    (2)rsync服务器端配置,也就是备份服务器


    1.创建rsync配置文件,默认不存在

    #yum install rsync -y
    #vim /etc/rsyncd.conf
    ##rsyncd.conf start##
    uid = rsync
    gid = rsync
    use chroot = no
    max connections = 200
    timeout = 300
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsync.lock
    log file = /var/log/rsyncd.log
    [data]
    path = /data/
    ignore errors
    read only = false
    list = false
    hosts allow = 192.9.191.0/24
    hosts deny = 0.0.0.0/32
    auth users = rsync_backup
    secrets file = /etc/rsync.password
    

    2.创建用户和备份目录以及修改属主

    useradd rsync -s /sbin/nologin 
    mkdir /data 
    chown -R rsync.rsync /data 
    

    3.创建客户端虚拟用户以及密码文件,修改密码文件权限

    echo "rsync_backup:redhat"  >/etc/rsync.password			//虚拟用户密码是redhat
    chmod 600 /etc/rsync.password
    

    4.启动服务和开机启动

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

    5.验证,rsync端口873

    ps -ef | grep rsync 
    ss -antlup | grep 873 
    

    6.关闭selinux和防火墙

    (3)rsync客户端配置

    1.安装rsync和创建目录
    yum install rsync -y
    mkdir /data1
    2.创建密码文件

    echo "redhat" >/etc/rsync.password  && chmod 600 /etc/rsync.password 
    

    3.拉和推

    pull:拉,在客户端上从服务器的/data目录的数据拉到本地的/data1目录
    	需要输入密码:rsync -avz rsync_backup@192.9.191.30::data /data1 --password-file=/etc/rsync
    	不需要输入密码:rsync -avz rsync_backup@192.9.191.30::data /data1 --password-file=/etc/rsync.password
    push:推,把客户端本地/data1/目录下的文件推到备份服务器的/data目录
    	不需要输入密码:rsync -avz /data1 rsync_backup@192.9.191.30::data  --password-file=/etc/rsync.password 
    注意:/data1/推送目录下的文件,不包含目录名,/data推送包含目录名
    

    4.无差异同步,参数--delete

    推push:备份,本地有啥,远端就有啥,本地没有的远端有也要删除,删除器端的目录数据可能丢失
    	rsync -avz --delete  /data1 rsync_backup@192.9.191.30::data  --password-file=/etc/rsync.password 
    拉pull:远端有啥,本地就有啥,远端没有的本地有也要删除。本地端的目录数据可能丢失
    	rsync -avz --delete rsync_backup@192.9.191.30::data /data1 --password-file=/etc/rsync.password
    

    (3)inotify客户端配置

    作用:inotify监控目录的实时变化,然后通知调用rsync执行rsync命令同步数据
    1.查看当前系统是否支持inotify

    #ll /proc/sys/fs/inotify/
    -rw-r--r-- 1 root root 0 5月  20 18:14 max_queued_events
    -rw-r--r-- 1 root root 0 5月  20 18:14 max_user_instances
    -rw-r--r-- 1 root root 0 5月  20 18:14 max_user_watches
    

    2.下载和编译安装inotify

    wget  http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
    tar xf inotify-tools-3.14.tar.gz 
    cd inotify-tools-3.14
    ./configure --prefix=/usr/local/inotify
    make && make install 
    

    3.添加环境变量

    echo "PATH=$PATH:/usr/local/inotify/bin/" >>/etc/profile  && source /etc/profile
    

    4.测试监控时间,开启多窗口创建文件

    inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,modify,delete,create,attrib,move /data1
    

    5.inotify脚本

    #vim /server/scripts/inotify.sh 
    #!/bin/bash
    host=192.9.191.30
    src=/data1
    dst=data
    user=rsync_backup
    rsync_passfile=/etc/rsync.password
    inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,modify,delete,create,attrib,move $src | while read file
    do
    rsync -az --delete $src  $user@$host::$dst --password-file=$rsync_passfile
    done
    

    6.启动脚本并测试

    nohup bash /server/scripts/inotify.sh &
    echo "nohup bash /server/scripts/inotify.sh &" >>/etc/rc.local
    touch /data/file1		//触发inotify服务
    在备份服务器上验证:ll /data/data1 
    

    7.inotify优化

    echo 50000000 >/proc/sys/fs/inotify/max_user_watches 
    echo 327679 >/proc/sys/fs/inotify/max_queued_events 
    

    8.inotifywait参数详解

    -r:递归
    -q:打印很少的信息,仅仅打印监控事件信息,
    -m:始终保持时间监听状态
    -exludei :排除文件或目录时,不区分大小写
    -e:通过此参数可以执行需要监控的事件
    	access:
    	modify:文件或目录内容被修改
    	attrib:文件或目录属性被改变
    	close:
    	open:
    	moved_to :
    	move:
    	create:
    	delete:文件或目录被删除
    	mount:
    	umount
    
  • 相关阅读:
    Windows 2003安全配置最佳方法(转)
    令人十分怨念的tomcat注册成windows服务(转)
    AMR开源编码jrtplib中与int系统重定义问题解决
    由系统熵转移的思考
    此男因为什么被送进医院?
    [转]风水师的郁闷
    飞盘奇门局例我能顺利办好护照拿到签证出国参加会议吗?
    最近工作方面发生了一些大事情,所以特地为此摇了一挂,请高手进来断一断。
    概率面前的错误
    杜新会一个精彩占例之反推
  • 原文地址:https://www.cnblogs.com/lovelinux199075/p/9065377.html
Copyright © 2011-2022 走看看