zoukankan      html  css  js  c++  java
  • Linux 定期自动备份文件夹脚本

    根据网上代码改编而成,这个脚本分为两个文件,一个是执行文件backup.sh,另一个是备份项目文件backup.txt。backup.txt这个文件比较好理解,就是一个text文件,它的每一行表示一个项目,也就是你需要备份的目录下面的文件或目录。
    代码如下:

    #!/bin/bash
    #author:        Rekfan
    #date:          2013-01-11
    #作用:          定期备份文件
    #website:       http://blog.rekfan.com
    ##################################################
    # 重要变量名      作用
    # SourceDir    需要备份的目录
    # LogFile      日志文件
    # BakDir1      备份上层目录
    # BakDir2      备份目录
    # RetainDay    备份档案文件保留天数
    # ProjectTxt   备份项目文件配置文件
    ##############★ 以下信息需要配置 ★##################
    DATE=`date +"%Y-%m-%d"`
    SourceDir=/var/web
    BakDir1=/web_bak
    BakDir2=/web_bak/`date +"%Y-%m-%d"`
    LogFile=/web_bak/log_`date +"%Y-%m-%d"`.log
    RetainDay=20
    ProjectTxt=/web_bak/backup.txt
    ##############★   创建备份目录   ★##################
    mkdir -p $BakDir2/
    echo "backup start at $(date +"%Y-%m-%d %H:%M:%S")" > $LogFile
    echo "--------------------------------------------------" >> $LogFile
    echo " " >> $LogFile
    echo "创建备份目录【$BakDir2】成功" >> $LogFile
    cd $BakDir2
    ##############★   备份核心代码   ★##################
    ProjectList=`cat $ProjectTxt`
    for Project in $ProjectList
    do
     ProjectData=$SourceDir/$Project
     DestDir=$BakDir2/$Project
     PackFile=$Project-$DATE.tar.gz
      
     if [ -f $BakDir2/$PackFile ]
     then
      echo "backup file have exist !" >>$LogFile
     else
    cd $SourceDir
      tar -zcvf $BakDir2/$PackFile $Project > /dev/null
      echo "目录或文件 $SourceDir/$Project已经备份到 $BakDir2/$PackFile ">>$LogFile
     fi
    ##############★   删除$RetainDay天前的备份   ★##############
     OldFile="$BakDir1/"$(date --date="$RetainDay days ago" +"%Y-%m-%d")
     if [ -f $OldFile ]
     then
      rm -rf $OldFile > /dev/null
      echo "[$OldFile],Delete Old File Success!" >> $LogFile
     fi

    echo " " >> $LogFile
    done
    echo "--------------------------------------------------" >> $LogFile
    echo "backup end at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile
    echo "                                                      ----------BY:Rekfan " >> $LogFile
    echo " " >> $LogFile
    exit 0

  • 相关阅读:
    kafka与Rocketmq的区别【转】
    k8s故障解决干货文档链接
    利用local nginx搭建k8s-1.17.4高可用kubernetes集群
    生产gitlab还原步骤
    jenkins备份和还原
    ASP.NET Core3.1使用IdentityServer4中间件系列随笔(二):创建API项目,配置IdentityServer保护API资源
    使用Feign出现404错误问题
    高并发系统限流-漏桶算法和令牌桶算法
    框架-springmvc源码分析(二)
    框架-springmvc源码分析(一)
  • 原文地址:https://www.cnblogs.com/ghjbk/p/7794232.html
Copyright © 2011-2022 走看看