美文网首页
Inotify+Rsync备份系统的搭建

Inotify+Rsync备份系统的搭建

作者: 以梦为马_8467 | 来源:发表于2020-04-22 13:04 被阅读0次

    概述

    \color{red}{Rsync}是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限,时间,硬链接等附加信息,但是却无法进行文件的实时同步更新。而\color{red}{Inotify}是linux内核提供的特性,可以实时监控系统内文件的变化,并且及时的向专门的应用程序发出相应的事件警告,比如删除,读,写和卸载操作,所以我们结合两者的特性,可以搭建实时的同步系统,用于备份及服务器间目录的同步

    安装Rsync

    四种模式

    1:本地shell模式

    本地shell模式主要用于将一个目录复制到另一个目录,例如:

    rsync -av source_path destination_path(复制目录到指定目录)
    rsync -av source_path/ destination_path(复制目录下的文件到指定目录)
    

    2:远程shell模式

    rsync -av source_path destination_host:/path(复制本地指定目录到另一个系统)
    

    3:列表模式

    rsync -a destination_host:/path(列出目录详细)
    

    4:服务器模式(基于C/S模式)

    此模式下,rsync以后台守护进程运行,这个进程在服务器端永久运行,用于接收客户端的文件传输请求

    安装inotify

    inotify是linux内核提供的强大的,细粒度的,异步的文件系统监控机制,从2.6.13版本起,加入了对其的支持。通过Inotify接口可以监控文件系统中添加,删除,修改,移除等各种细微变化。

    yum install inotify-tools
    

    安装完成后,会产生两个指令,inotifywait和inotifywatch,其中inotifywait用于等待文件或者特定文件集上的一个特定事件,可以监控任何文件或者目录.并且可以递归监控整个目录树,inotifywatch主要用于收集被监控的文件系统统计数据,包括每个inotify事件的发生次数

    内核接口参数

    /proc/sys/fs/inotify/max_queued_events
    调用inotify_init时,分配到inotify_instance中可排队的event数的最大值
    /proc/sys/fs/inotify/max_user_instances
    每一个real user ID可创建的inotify instances数量上限
    /proc/sys/fs/inotify/max_user_watches
    每个inotify实例可监控的最大目录数量
    

    inotifywait相关参数

    -m: 表示始终保持事件监听状态
    -r: 表示递归查询目录
    -q: 表示打印出监控事件
    -e: 制定要监控的事件,常见有modify,delete,create和attrib等

    实际应用(配合shell脚本使用)

    实例脚本

    redundancy_dir=/data/redundancy
    
    inotify_fun(){
        /usr/bin/inotifywait -mr --timefmt '%Y/%m/%d-%H:%M:%S' --format '%T %w %f %e' -e close_write,delete,create,move $1  | while read DATA DIR FILE MODE
          do
              FILECHANGE=${DIR}${FILE}
              /usr/bin/rsync -a --delete $1 $redundancy_dir
              echo "At ${DATA}, file $FILECHANGE was $MODE backed up via rsync" >> /var/log/rsync
          done
    }
    
    #inotify_fun /data/backup
    inotify_fun /data/manage_company
    
    

    上述脚本利用inotify和rsync实时监控指定目录文件变化,然后同步到相对应的同步目录(本例是在本地上运行,同步到不同的磁盘中)
    \color{red}{注意事项}
    1:监控文件变化的时候,对文件的更改可以监控close_wait事件,可以避免写入大文件时,inotify会持续的输出更新信息,进而触发rsync不断执行更新操作,占用大量系统资源。
    2:上例中--delete选择是为了保持两边目录的一致,删除源目录不存在的文件

    阿里云服务器大优惠,最高2000元云产品通用代金券,赶紧来拿

    相关文章

      网友评论

          本文标题:Inotify+Rsync备份系统的搭建

          本文链接:https://www.haomeiwen.com/subject/ugqiihtx.html