• rsync+inotify[实现时时备份](带完整脚本及其配置安装步骤)


    1. 创建ssh免密

    > #ssh-keygen

     - 然后一路回车

    # ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.221
    # 输入一下192.168.1.221的密码即可

    2. 将启动脚本放至/etc/rc.local中【此步骤省略】
    3. 安装Inotify

    # 使用前需要确保 Linux的内核高于2.6.13版本[目前使用的都是Centos 6.9/10及其7.*以上的版本,看都高于此版本]
    # uname -r  【查看内核版本】
    # wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
    # yum -y install inotify-tools
    # rpm -qa inotify-tools

    4. 将以下内容复制为sh脚本,然后添加至/etc/rc.local中,设置开机自动启动【注意,记得修改一下备份的参数】

    #!/bin/bash
    # Filename: backrsync.sh
    # 作者:cs
    # 更新时间:2020-1-13
    
    # 使用方式及其相关备注:
    # 本脚本采用rsync+ssh-keygen(免密)+inotify[监控文件系统操作] 进行时时备份数据至其它的服务器上面
    
    # ssh-keygen 使用步骤
    # 在需要备份数据的服务器上面运行
    # ssh-keygen
    # 然后一路回车
    # 通过ssh-copy-id 将公钥复制到远程机器中
    # ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.221
    # 输入一下192.168.1.221的密码即可
    
    # Inotify 使用步骤
    # 使用前需要确保 Linux的内核高于2.6.13版本[目前使用的都是Centos 6.9/10及其7.*以上的版本,看都高于此版本]
    # uname -r  【查看内核版本】
    # wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
    # yum -y install inotify-tools
    # rpm -qa inotify-tools
    
    #printlog 函数说明
    #两个参数,一,是否打印日志,二,日志内容
    #一参数可选,0表示不打印日志内容出来,1表示打印日志内容出来
    LOGFILE_PATH="/var/log/zdrsynclog"
    NOWTIME=`date "+%Y-%m-%d %H:%M:%S"`
    function printlog()
    {
        LOG_CONTENT="$NOWTIME $2"
        #echo $LOG_CONTENT
        if [ $1 -ne 0 ]; then
            echo $LOG_CONTENT
            echo $LOG_CONTENT>>$LOGFILE_PATH
        else
            echo $LOG_CONTENT>>$LOGFILE_PATH
        fi  
    }
    
    #检查上一条命令执行是否正常,不正常退出
    check_error_exit()
    {
        #echo $?"+++++++++++"
        RUSELT=$?
        if [ ${RUSELT} -ne 0 ]; then
            printlog 1 "#[ERROR] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
            printlog 1 "#[ERROR] 恭喜,光荣而伟大的报错了 : "$1
            printlog 1 "#[ERROR] <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"
            exit 1
        fi  
    }
    
    #输出颜色字体
    function echo_colour()
    {
        if [ $1 -eq 0 ]; then
            echo -e "33[41;37m ${2} 33[0m"
            return 0
        fi
    
        if [ $1 -eq 1 ]; then
            echo -e "33[43;37m ${2} 33[0m"
            return 0
        fi
    
        if [ $1 -eq 2 ]; then
            echo -e "33[47;30m ${2} 33[0m"
            return 0
        fi
    }
    
    
    #打印结束符
    print_end()
    {
        printlog 1 "<<<<<<<<<<<<<<<<<<<<<<END<<<<<<<<<<<<<<<<<<<<<<<<<<"
    }
    
    ####################################################################
    #脚本即将开始运行
    ####################################################################
    printlog 1 "<<<<<<<<<<<<<<<<<<<<<<Start<<<<<<<<<<<<<<<<<<<<<<<<<<"
    
    
    #定义目的服务器及其需要备份的文件夹、备份的目的路径
    Backup_Server=192.168.1.221
    Path=/root/aa_inotify
    Backup_Server_Path=/test_inotify
    
    #以下语句带有--delete
    rsync -Rraz --delete -e ssh $Path root@${backup_Server}:${Backup_Server_Path}
    /usr/bin/inotifywait -mrq --format '%w%f' -e create,close_write,delete $Path | while read line
    do
        rsync -Rraz --delete -e ssh ${line} root@${Backup_Server}:${Backup_Server_Path}
    done
    
    # 以下为旧版本的备份
    #主要是下面的这句了,检查一下有没有rsync进程,如果有就直接提示有在运行,写到日志中,然后再等下一步循环了
    #ps -ef|grep 'rsync'|grep -v 'grep'|grep -v 'backrsync'
    #if [ $? -ne 0 ]
    #then
    #    printlog 1 "start process..."
    #    printlog 0 "$NOWTIME: crontab start"
    #    /usr/bin/rsync -rav /home/mailbox /mailbackup/
    #    printlog 0 "Success Rsync"
    #else
    #    printlog 1 "runing...."
    #    printlog 0 "$NOWTIME: running... start"
    #fi
    
    print_end




  • 相关阅读:
    数据持久化
    在职场久了,才知道这样安排工作日程,方能实现真正的高效
    HIS系统-如何设置单病种结算方式
    HIS系统-你给我制作一个二级库吧!
    开机的一篇英文是怎么回事呢?
    系统故障之-冲动360
    每天看一遍你潦倒至今的原因
    如何配置给自己配置一台适合自己的台式机
    如何配置给自己配置一台电脑
    单网卡、双网卡如何实现同时上内网和外网
  • 原文地址:https://www.cnblogs.com/drgcaosheng/p/12186740.html
Copyright © 2020-2023  润新知