zoukankan      html  css  js  c++  java
  • centos7只rsync+inotify

    环境:

    操作系统:centos7.4

    192.168.1.238 客户端

    192.168.1.239 服务端

     环境准备:

    1、安装以下安装包lrzsz是xshell上传下载的安装包,可以忽略。

    yum install -y lrzsz gcc wget gcc-c++ vim
    

    2、关闭firewall防火墙,开机禁止启动。永久关闭selinux。如果有iptables防火墙可以允许873端口。

    服务端

    1、安装rsync

    yum install -y rsync
    

    2、更改配置文件

    vim /etc/rsyncd.conf 
    
     1 #工作中指定用户(可以不指定为0)
     2 uid = 0
     3 gid = 0
     4 #相当于黑洞.出错定位
     5 use chroot = no
     6 ##有多少个客户端同时传文件
     7 max connections =200
     8 ##超时时间
     9 timeout = 300
    10 ##进程号文件
    11 pid ifle = /var/run/rsyncd.pid
    12 lock file = /var/run/rsync.lock
    13 ##日志文件
    14 log file = /var/log/rsyncd.log
    15 ##模块开始(这个模块就是待会儿对端写脚本的里面一个参数的名称)
    16 [msone]
    17 ##需要同步的目录(准确的说是同步过来后放到哪里的目录路径)
    18 path = /data/www
    19 ##表示出现错误忽略错误
    20 ignore errors
    21 ##表示网络权限可写(本地控制真正可写)(亲测这里写false报错)
    22 read only = no
    23 ##这里设置IP或让不让同步
    24 list = false
    25 #允许的ip或者ip段
    26 hosts allow = 192.168.1.238
    27 ##拒绝,以下表示都不拒绝
    28 hosts deny = 0.0.0.0/32
    29 ##认证用户
    30 auth users = rsynclsl
    31 ##用户名和密码存放文件
    32 secrets file = /etc/rsync.secrets
    rsyncd.conf

    3、添加同步需要用的用户名和密码

    #useradd -s /sbin/nologin rsynclsl
    #passwd rsynclsl

    4、创建认证文件

    vim /etc/rsync.secrets
    文件里面添加如下内容(格式为用户名:密码):
    rsynclsl:123456

    5、为了安全起见给这个文件设置600权限。

    6、启动服务

     #rsync --daemon
    

    7、创建需要过来存放的目录

     mkdir -p /data/www
    

    需要www这个目录其它用户可以写的权限

    chmod 765 www

    8、如果需要添加开机启动请看另外一篇博客http://www.cnblogs.com/lei0213/p/8595030.html

     客户端

    1、查看当前系统是否支持inotify,这三个文件具体做什么的可以自行百度

    2、安装rsync和inotify(rsync只安装不启动不配置)

    yum install -y rsync
    

    3、inotify是一种强大的、细粒度的、异步的文件系统事件控制机制。linux内核从2.6.13起,加入了inotify支持,通过inotify可以监控文件系统中添加、删除、修改、移动等各种事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools正是实施监控的软件。

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

    官网https://sourceforge.net/projects/inotify-tools/

    4、最最最最最最重要的是要写这个脚本,让它自动去检测我们制定的目录下文件发生的变化,然后再执行rsync的命令把它同步到我们的服务器端去。

    #touch  inotify.sh
    #chmod 755  inotify.sh
    #vim inotify.sh
    
     1 #!/bin/bash
     2 #chkconfig: 345 88 14
     3 host=192.168.1.239    #server的ip(备份服务器)
     4 src=/data/www  #所要监控的备份目录(此处可以自定义,但是要保证存在)
     5 des=msone   #自定义的模块名,需要与client端定义的一致
     6 password=/etc/rsync.password  #密码文件
     7 user=rsynclsl    #用户名(一个实际存在的账号)
     8 inotify=/usr/local/include/    #inotify的安装目录                
     9 
    10 ${inotify}/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src 
    11 | while read files
    12 do
    13 rsync -avzP --delete  --timeout=100 --password-file=${password} $src $user@$host::$des
    14 echo "${files} was rsynced" >>/tmp/rsync.log 2>&1
    15 done
    inotify.sh

     

     5、创建/etc/rsync.password文件(整个文件需要600的权限和服务端rsync同步用户的密码,这里是服务器端rsynclsl用户的密码)

    vim /etc/rsync.password 
    

    6、执行该脚本

    #./inotify.sh
    

    7、如果需要添加开机启动请看另外一篇博客http://www.cnblogs.com/lei0213/p/8595030.html

    8、如果不确定脚本能不能用,可以先不用执行脚本,先使用下面的rsync命令同步一下看看配置有没有问题。

    rsync -avH --port=873 --delete  /data/www/  rsynclsl@192.168.1.239::msone  --password-file=/etc/rsync.password
    

      

    测试

    1、服务器客户端全部关闭selinux和firewalld及iptables(或者允许873端口通过)

    2、服务端启动rsync服务即可(进入/data/www准备刷新)

    3、客户端启动脚本。

    4、在客户端进入客户端的/data/www目录下建立文件,更改内容。

    5、服务器端刷新

    6、客户端会把www整个目录传到服务器端的/data/www下,等于在/data/www/下又出现了一个www目录。

     

      

  • 相关阅读:
    虚拟机磁盘文件丢失如何通过拼数据库碎片的方式恢复
    存储设备IBM DS5020故障离线怎么办
    RAID6存储阵列故障oracle数据库碎片恢复
    Raid磁盘阵列重建后如何恢复原来的数据
    服务器断电Oracle数据库修复数据过程
    Linux新手随手笔记2.3-使用Bind提供域名解析服务
    Linux新手随手笔记2.2-使用Samba和NFS实现文件共享
    Linux新手随手笔记2.1-ftp
    Linux新手随手笔记1.9-使用Apache搭建网站
    Linux新手随手笔记1.8-配置网卡
  • 原文地址:https://www.cnblogs.com/lei0213/p/8595112.html
Copyright © 2011-2022 走看看