• rsync 定时备份<crontab+backrsync.sh> 简陋版


    【如需要时时备份的话,看此链接:https://www.cnblogs.com/drgcaosheng/p/12186740.html】

    数据需要定时的备份至其它的目录中,但是备份之前检查检查一下是否有rsync正在运行,曾经因为数据过大,导致有很多rsync进程在跑,然后服务器有出现卡死的现象。最终写了一条bash,先检查一下是否有这个进程,然后再来进行处理,只是简单的做记录,大神勿喷


     《有小伙伴同步的时候反馈说远程的备份需要密码,其实我有偷偷的使用 ssh-keygen 生成过key,所以不需要密码的,下面是生成key的步骤》

    1. 在需要备份的服务器上面运行

    #ssh-keygen
    然后一路回车


    2.通过ssh-copy-id复制文件至远程的机器上面

    #ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.100

    输入一下密码即可

    1. 先直接设置一下crontab的定时任务

    [root@localhost mail]# crontab -l
    */5 * * * * bash /usr/local/mail/backrsync.sh
    [root@localhost mail]#

    2. 下面贴一下简单的bash的小脚本,前面是默认的常用的function,偷懒,直接复制过来了。

    #!/bin/bash
    # Filename: backrsync.sh
    
    #printlog 函数说明
    #两个参数,一,是否打印日志,二,日志内容
    #一可选,01,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<<<<<<<<<<<<<<<<<<<<<<<<<<"
    
    #主要是下面的这句了,检查一下有没有rsync进程,如果有就直接提示有在运行,写到日志中,然后再等下一步循环了 ps -ef|grep 'rsync'|grep -v 'grep'|grep -v 'backrsync' if [ $? -ne 0 ] then printlog 1 "start process..." printlog 0 "$NOWTIME: crontab start"
        checkmaildir="/umaildataback/backup"
        if [ -d ${checkmaildir} ];then
            echo "yes"
            /usr/bin/rsync -rav /home/mailbox /umaildataback/backup/
    /
    usr/bin/rsync -rav /usr/local/mail/data/mailbox /mailbackmailbox/
    /usr/bin/rsync -rav /usr/local/mail/data/backup/ /mailbackmailbox/mysqlback/
        else
            printlog 1 "No /umaildataback/backup"
        fi
    printlog 0 "Success Rsync" else printlog 1 "runing...." printlog 0 "$NOWTIME: running... start" fi
    print_end

    3,设置完了之后,再重启一下cron服务,就可以等输出了。</etc/init.d/crond restart>

  • 相关阅读:
    C语言之内存分配函数
    C语言const
    【Hihocoder 1167】 高等理论计算机科学 (树链的交,线段树或树状数组维护区间和)
    【HDU 1828】 Picture (矩阵周长并,线段树,扫描法)
    【 HDU 1255】 覆盖的面积(矩阵面积交,线段树,扫描法)
    【HDU 1542】Atlantis 矩形面积并(线段树,扫描法)
    【BZOJ 2333 】[SCOI2011]棘手的操作(离线+线段树|可并堆-左偏树)
    【20161108】总结
    【BZOJ 3110】 [Zjoi2013]K大数查询(整体二分)
    【Bzoj 3295】 动态逆序对(树套树|CDQ分治)
  • 原文地址:https://www.cnblogs.com/drgcaosheng/p/8932504.html
Copyright © 2020-2023  润新知