1. 程式人生 > >centos 7 定時備份資料夾,增量檔案

centos 7 定時備份資料夾,增量檔案

#!/bin/bash  
#做  
#根據專案同重命名該指令碼  
#例 amountebak.sh or pandawillsbak.sh  
#該指令碼放 $bakpp定義絕路徑部  
#$bakpp找相應備份檔案  
#例 /usr/backup/amountebak.sh or /usr/backup/pandawillsbak.sh  
########## Init Path ########  
# 面引數必須定義引數 $bakpp、$project、$projectpp  
TAR=/bin/tar  
# 存放備份檔案專案名稱區  
bakpp=/apps/beifen/"$project"  
# 需要備份資料夾資料夾路徑  
project=djk  
projectpp=/apps/apache-tomcat-8.5.9/webapps/vlis/ 
# parament for varible  
ym=`date +%Y%m`  
ymd=`date +%Y%m%d`  
# 儲存備份檔案目錄月份區級目錄$bakpp定義  
monthbakpp=$bakpp/$ym  
gidpp=$monthbakpp  
gidshot=gid$project$ym  
# 完全備份檔名  
fullname=$ym  
# 增量備份檔名  
incrementalname=$ymd  
# Record the location of the log  
log=$bakpp/$project.log  
############ chk_full #######################  
# 檢查完全備份否存存建立  
#this function check fullbackup file exist or not , if not then create fullbackup now  
chk_full()  
{  
if [ -e "$monthbakpp"/"$project"_"$ym"_full.tar.gz ];then  
echo ""$project"_"$ym"_full.tar.gz file exist!! ====`date +%Y-%m-%d-%T` " >>$log  
else  
tar_full  
fi  
}  
######### chk_incremental ########  
# 檢查增量備份否存  
chk_incremental()  
{  
while [ -e "$monthbakpp"/"$project"_"$incrementalname"_incremental.tar.gz ]  
do  
incrementalname=`echo "$incrementalname + 0.1" | bc `  
done  
}  
######## tar_incremental #######  
# 執行增量備份  
tar_incremental()  
{  
cd $projectpp  
echo "BEIGIN_TIME=====`date +%Y-%m-%d-%T` ==== CREATE "$project"_"$incrementalname"_incremental.tar.gz" >> $log  
sleep 3  
$TAR -g $gidpp/$gidshot -zcf $monthbakpp/"$project"_"$incrementalname"_incremental.tar.gz $project  
echo "END_TIME========`date +%Y-%m-%d-%T` ==== CREATE "$project"_"$incrementalname"_incremental.tar.gz" >> $log  
}  
######## tar_full ###########  
tar_full()  
{  
touch $gidpp/$gidshot  
cd $projectpp  
echo "BEIGIN_TIME=====`date +%Y-%m-%d-%T` ==== CREATE "$project"_"$fullname"_full.tar.gz" >> $log  
$TAR -g $gidpp/$gidshot -zcf $monthbakpp/"$project"_"$fullname"_full.tar.gz $project  
echo "END_TIME========`date +%Y-%m-%d-%T` ==== CREATE "$project"_"$fullname"_full.tar.gz" >> $log  
}  
########### backup ##############################  
# 總體呼叫備份做相應檢查確保備份前提準備充  
backup()  
{  
if [ -d $monthbakpp ]; then  
   chk_full  
   chk_incremental  
   tar_incremental  
else  
mkdir -p $bakpp/$ym  
tar_full  
fi  
}  
########### let's begin #############  
# 先檢查$bakpp否存存先建立備份  
if [ -d $bakpp ];then  
backup  
else  
mkdir -p $bakpp  
backup  
fi  
#advice you can create a file for put backup file, eg /usr/cctcc  
#crontab  
#mini hours day month week command  
# */5 * * * * /home/mmroot/zbb/aaa.sh  
# 44 11 * * * /usr/tmp/vcan.sh  

# tar -ztf test.tar.gz 檢視備份檔案面檔案  

---------------------------------程式碼結束----------人稱可愛的分割線------------------------------------------------------

將上述檔案放到你要執行的檔案中

vi   /usr/tmp/vlisVcan.sh

上面程式碼複製貼上

根據自己需求的不同只需要修改上面程式碼中的三個位置

# 存放備份檔案專案名稱區  
bakpp=/apps/beifen/"$project" 

# 需要備份資料夾和資料夾路徑  
project=djk    

projectpp=/apps/apache-tomcat-8.5.9/webapps/vlis/  

然後在設定定時器,建立定時器檔案

vi  /usr/tmp/task

填寫定時器

* * * * *  命令  檔案 ;

分鐘 小時 天  月 星期幾

例:12 12 * * * /bin/sh /root/remove.sh                 //每天12點12分執行

儲存檔案然後利用crontab /usr/tmp/task 使生效。

檢視任務列表 crontab -l  顯示你設定的定時器就ok了。