Linux通用备份脚本

用于linux通用备份脚本

脚本使用方式注意事项

  1. SourceDir是需要备份的根目录
  2. 设置一个备份列表,名为backup.txt里面按行写着需要备份目录SourceDir下的哪些文件夹或者文件,是相对地址,例如$SourceDir下的conf文件夹就直接写一行conf
  3. 备份程序根据backup.txt来挨个备份且创建指定压缩包
  4. 不支持一个文件夹下指定不同文件打包到同一个压缩包
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    #!/bin/bash
    #author: Roger
    #date: 2019-10-10
    #作用: 定期备份文件
    #website: https://rogersnowing.cn
    ##################################################
    # 重要变量名 作用
    # SourceDir 需要备份的目录
    # LogFile 日志文件
    # BakDir1 备份上层目录
    # BakDir2 备份目录
    # RetainDay 备份档案文件保留天数
    # ProjectTxt 备份项目文件配置文件
    ##############★ 以下信息需要配置 ★##################
    DATE=`date +"%Y-%m-%d"`
    SourceDir=/Users/roger/bigdata/zeppelin-0.8.1-bin-all
    BakDir1=/Users/roger/bigdata/data/zeppelin-bakup
    BakDir2=$BakDir1/`date +"%Y-%m-%d"`
    LogFile=$BakDir1/log_`date +"%Y-%m-%d"`.log
    RetainDay=20
    ProjectTxt=$BakDir1/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天前的备份 ★##############
    if [ "$(uname)" == "Linux" ]
    then
    OldFile="$BakDir1/"$(date --date="$RetainDay days ago" +"%Y-%m-%d")
    else # 针对mac
    OldFile="$BakDir1/"$(date -v-${RetainDay}d +"%Y-%m-%d")
    fi
    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:Roger " >> $LogFile
    echo " " >> $LogFile
    exit 0
原创技术分享,您的支持将鼓励我继续创作