centos 7 定時備份資料夾,增量檔案
阿新 • • 發佈:2019-01-07
#!/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
#做
#根據專案同重命名該指令碼
#例 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了。