• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    shell周期差量备份文件夹的实现代码

    shell脚本备份

    创建备份脚本

    backup.sh

    #!/bin/sh 
    #$# 参数个数
    #提示说明
    if [ $# -lt 3 ]; then
    echo "=============================================="
    echo "Usage:   $0 ( commands ... )"
     echo "commands:"
     echo "example:"
     echo " > $0 bakDir bakAllName oriDirOrFile"
     echo " bakDir:备份文件件"
     echo " bakAllName:完整备份的名称"
     echo " oriDirOrFile:源文件或者文件夹"
    echo "=============================================="
     exit -1
    fi
    #将参数赋值给变量 = 两边不能有空格
    bakdir="$1"
    bakName="$2"
    bakAllName="$2.tar.gz"
    oriDirOrFile="$3"
    #保存天数 默认7天超过指定天数重新 全量备份
    if [ -n $4 ];then
      bakDays=7
    else
      bakDays=$4
    fi
    
    echo $bakAllName
    echo $bakdir
    #判断全量备份文件是否存在
    if [ ! -f "$bakdir$bakAllName" ];then
      #如果没有全量备份份文件
      echo "--------all-bak---------"
      bakdir=$bakdir$bakAllName
      zl=""
    else
      #已经备份了全量
      #获取全量备份的时间
      bakAllDate="`ls --full-time $bakdir$bakAllName |cut -d ' ' -f 6`"
      #获取当前时间
      nowDate=`date "+%Y-%m-%d"`
      #算出时间差单位是秒
      senconds=$(($(date +%s -d $nowDate) - $(date +%s -d $bakAllDate)));
      #计算出天
      day=$(($senconds/60/60/24))
      #增量备份但是超过备份时间需要跟新全量的备份
      if [ $day -gt $bakDays ];then
        echo "备份时间已经超过备份周期了"
        bakdir=$bakdir$bakAllName
      else
        echo "还没超过备份周期"
        echo " temp-bak"
          #增量备份文件地址
          tempDir="$bakdir$bakName`date '+%m-%d'`.tar.gz"
          #获取全量备份文件的日期
          compareDate="`ls --full-time $bakdir$bakAllName |cut -d ' ' -f 6`"
          echo "$compareDate"
          #获取全量备份文件的时间
          compareTime="`ls --full-time $bakdir$bakAllName |cut -d ' ' -f 7`"
          echo "$comcompareTime"
          #shell 格式转换成yyyy-MM-dd HH:mm:ss
          compareTime=`date -d $compareTime "+%F %T"`
          echo "$compareTime"
          #差量备份比较时间基准
          zl="-N "$compareTime""
          bakdir=$tempDir
      fi
    
    fi
    echo "--------start-bak---------"
    echo $zl
    echo "$bakdir"
    #使用tar差量打压缩包
    tar "$zl" -czvf $bakdir $oriDirOrFile

    创建任务调度

    创建可执行文件

    touch execBakUp.sh
    chmod u+xrw execBakUp.sh
    

    添加内容

    编辑任务调度
    crontab -e
    秒 时 日 月 周
    0 02 * * * sh /opt/execBakUp.sh >> $(date "+%Y-%m-%d".log)
    每天凌晨 2点 执行execBakUp.sh

    说明

    参数说明:

    增量备份:

    tar -cvzf text.tar.gz /bak -N i_time

    i_time是时间点

    获取文件时间:

    ls --full-time $bakdir$bakAllName |cut -d ' ' -f 6

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • shell编程跨服务器备份文件
    • 自动化下载并检测ftp文件备份的shell脚本
    • Shell脚本自动删除指定大小以上的备份文件
    • CentOS中使用Shell脚本实现每天自动备份网站文件和数据库并上传到FTP中
    • 3个备份系统文件并邮件发送的Shell脚本分享
    • shell备份文件、重命名文件、删除指定文件的3个脚本分享
    上一篇:Linux系统如何修改防火墙配置
    下一篇:Linux下shell脚本监控Tomcat的状态并实现自动启动的步骤
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    shell周期差量备份文件夹的实现代码 shell,周期,差量,备份,文件夹,