SourceDir是需要备份的根目录- 设置一个备份列表,名为
backup.txt里面按行写着需要备份目录SourceDir下的哪些文件夹或者文件,是相对地址,例如$SourceDir下的conf文件夹就直接写一行conf - 备份程序根据
backup.txt来挨个备份且创建指定压缩包 - 不支持一个文件夹下指定不同文件打包到同一个压缩包
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
#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
Linux通用备份脚本
原创技术分享,您的支持将鼓励我继续创作