• NFS+inotify实时同步


    Inotify简介

    Inotify是一种文件系统事件通告机制,能够实时监控文件系统下文件的访问、修改、删除等各种变化情况并将其作为事件通告给用户态应用程序。Linux内核从2.6.13版本后已经集成了Inotify的功能,用户只需安装inotify应用程序即可实现对文件系统的监控。

    配置Rsync服务端

    rpm -qa | grep rsync
    
    vim /etc/rsyncd.conf
    
    uid = rsync                         #客户端进行数据传输时所使用的用户
    gid = rsync                         #客户端进行数据传输时所使用的用户组
    user chroot = no                    #安全相关
    max connections = 200               #最大连接数
    timeout = 300                       #超时时间,客户端连接后300s不传输自动断开
    pid file = /var/run/rsyncd.pid      #进程号文件
    lock file = /var/run/rsync.lock     #锁文件
    log file = /var/log/rsyncd.log      #日志文件  
    ignore errors                       #忽略错误
    read only = false                   #可写
    list = false                        #客户端不能ls等进行列表
    hosts allow = 172.16.1.0/24         #允许连接的主机
    #hosts deny = 0.0.0.0/32            #拒绝的主机
    auth users = rsync_backup           #客户端登录账号名
    secrets file = /etc/rsync.password  #密码文件,用于验证
    [backup]                            #模块名称
    path = /backup/                     #提供访问的目录
    [nfsbackup]
    path = /nfsbackup
    
    useradd rsync -s /sbin/nologin –M
    mkdir /backup
    chown rsync.rsync /backup
    vim /etc/rsync.password
    
    rsync_backup:peterwang
    
    chmod 600 /etc/rsync.password
    rsync --daemon
    ps -ef | grep rsync | grep -v grep
    lsof -i :873
    echo "/usr/bin/rsync --daemon" >> /etc/rc.local 
    

     配置NFS服务端

    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
    yum install -y inotify-tools
    vim /etc/rsync.password
    
    peterwang
    
    chmod 600 /etc/rsync.password
    mkdir /server/scripts -p
    cd /server/scripts
    vim inotify.sh
    
    #!/bin/bash
    export PATH=/bin:/usr/bin:/usr/local/bin
    SRC=/data
    DEST=nfsbackup
    IP=172.16.1.41
    USER=rsync_backup
    PASSFILE=/etc/rsync.password
    inotifywait -mrq --format '%w%f' -e modify,create,move,delete,attrib $SRC 
    | while read line
    do
    NUM=$(echo $line | grep -o "/" | wc -l)
    if [ $NUM -gt 2 ];then
    DIR=$(echo $line | awk -F "/" '{print "/"$2"/"$3}')
    rsync -az $DIR --delete rsync://$USER@$IP/$DEST --password-file=$PASSFILE
    else
    rsync -az $SRC/ --delete rsync://$USER@$IP/$DEST --password-file=$PASSFILE
    fi
    done &
    
    sh inotify.sh
    echo "/bin/sh /server/scripts/inotify.sh " >> /etc/rc.local
    
  • 相关阅读:
    错误:/usr/lib/python2.4/sitepackages/_sqlitecache.so: wrong ELF class: ELFCLASS32
    Ubuntu 12.04LTS g++编译错误解决
    yum Error: Cannot retrieve repository metadata (repomd.xml) for repository: xxxxx
    win7中制作ubuntu 1210启动盘
    Java 访问 Hbase 的API
    光标所能实现的不同形状
    Asp遍历服务器对象的代码
    一些好的网站
    通用高效分页存储过程代码
    一些模拟windows 界面的 js
  • 原文地址:https://www.cnblogs.com/Peter2014/p/7518411.html
Copyright © 2020-2023  润新知