zoukankan      html  css  js  c++  java
  • rsync+inotify-tools实时备份脚本

    1.1 实时备份

    1.需求分析:

    为什么要实时复制

    因为nfs是单点非常的不安全  而通过定时任务备份会造成数据丢失 这是就需要需要实时备份

    2实时方案

    1).搭建好服务端backup与客户端nfs的rsync服务,使可以备份数据

    a.服务端backup配置文件:

    [root@rsync-backup ~]# cat /etc/rsyncd.conf

    pid file = /var/run/rsyncd.pid

    lock file = /var/run/rsync.lock

    log file = /var/log/rsyncd.log

    uid = rsync

    gid = rsync

    use chroot = no

    max connections = 200

    timeout = 300

    ignore errors

    read only = false

    list = false

    hosts allow = 172.16.1.0/24

    hosts deny = 0.0.0.0/32

    secrets file = /etc/rsync.password

     

    [backup]

    path = /rsync_backup

    auth users = rsync_backup

    创建校验文件 并将权限改为600

    [root@rsync-backup ~]# cat /etc/rsync.password

    rsync_backup:ms

    创建用户 rsync 创建目录/ rsync_backup 并将属主属组改为rsync

    b.客户端nfs

    创建校验文件 并将权限改为600

    [root@nfs01 /backup]# cat /etc/rsync.password

    ms

    创建要备份的目录/backup

    2.)在nfs上搭好inotify-tools 使其可以监控事件

    上文已将其安装,这里测试命令

    端口1监控

    [root@nfs01 /backup]# inotifywait --format '%w%f'  -rmqe create,delete,close_write   /backup/

    /backup/a.txt

    端口2测试

    [root@nfs01 /backup]# rm -f a.txt

    3)编写脚本 使当所监控的文件夹有事件发生时 立即备份

    #!/bin/bash

     

    inotifywait --format '%w%f'  -rmqe create,delete,close_write   /backup/|

    while read line

    do

        rsync -az /backup/ rsync_backup@backup::backup --password-file=/etc/rsync.password

     

    done

    检测有效

    4)脚本的优化

    #!/bin/bash

     

    inotifywait --format '%w%f'  -rmqe create,delete,close_write   /backup/|

    while read line

    do

        if [ -e  $line  ];then

            rsync -az $line rsync_backup@backup::backup --password-file=/etc/rsync.password

        fi

            cd /backup/ && rsync -az /backup/ --delete  rsync_backup@backup::backup --password-file=/etc/rsync.password

    done

    if 判断如果文件存在 将新创建的文件备份到backup服务器上

    如果不存在 无差异备份一下

    额外补充

           watch ls /rsync_backup/ 每个2秒执行一下ls命令

           将脚本放入后台执行[root@nfs01 /server/scripts]# sh  nfs-backup.sh &

    [1] 9137

  • 相关阅读:
    EMV内核使用中的常见问题
    SM2国密证书合法性验证
    WP8.1中C++的winodws运行时组件位移操作的差异
    [源码]Literacy 快速反射读写对象属性,字段
    Vue 单文件元件 — vTabs
    vue-router路径计算问题
    前端跨域新方案尝试
    Vue 单文件原件 — vCheckBox
    JavaScript 功能类 Url.js
    Vue 学习笔记 — 组件初始化
  • 原文地址:https://www.cnblogs.com/koushuige/p/9173985.html
Copyright © 2011-2022 走看看