0514-86177077
9:00-17:00(工作日)
shell腳本備份
創(chuàng)建備份腳本
backup.sh
#!/bin/sh #$# 參數(shù)個數(shù) #提示說明 if [ $# -lt 3 ]; then echo "==============================================" echo "Usage: $0 ( commands ... )" echo "commands:" echo "example:" echo " > $0 bakDir bakAllName oriDirOrFile" echo " bakDir:備份文件件" echo " bakAllName:完整備份的名稱" echo " oriDirOrFile:源文件或者文件夾" echo "==============================================" exit -1 fi #將參數(shù)賦值給變量 = 兩邊不能有空格 bakdir="$1" bakName="$2" bakAllName="$2.tar.gz" oriDirOrFile="$3" #保存天數(shù) 默認7天超過指定天數(shù)重新 全量備份 if [ -n $4 ];then bakDays=7 else bakDays=$4 fi echo $bakAllName echo $bakdir #判斷全量備份文件是否存在 if [ ! -f "$bakdir$bakAllName" ];then #如果沒有全量備份份文件 echo "--------all-bak---------" bakdir=$bakdir$bakAllName zl="" else #已經(jīng)備份了全量 #獲取全量備份的時間 bakAllDate="`ls --full-time $bakdir$bakAllName |cut -d ' ' -f 6`" #獲取當(dāng)前時間 nowDate=`date "+%Y-%m-%d"` #算出時間差單位是秒 senconds=$(($(date +%s -d $nowDate) - $(date +%s -d $bakAllDate))); #計算出天 day=$(($senconds/60/60/24)) #增量備份但是超過備份時間需要跟新全量的備份 if [ $day -gt $bakDays ];then echo "備份時間已經(jīng)超過備份周期了" bakdir=$bakdir$bakAllName else echo "還沒超過備份周期" echo " temp-bak" #增量備份文件地址 tempDir="$bakdir$bakName`date '+%m-%d'`.tar.gz" #獲取全量備份文件的日期 compareDate="`ls --full-time $bakdir$bakAllName |cut -d ' ' -f 6`" echo "$compareDate" #獲取全量備份文件的時間 compareTime="`ls --full-time $bakdir$bakAllName |cut -d ' ' -f 7`" echo "$comcompareTime" #shell 格式轉(zhuǎn)換成yyyy-MM-dd HH:mm:ss compareTime=`date -d $compareTime "+%F %T"` echo "$compareTime" #差量備份比較時間基準 zl="-N "$compareTime"" bakdir=$tempDir fi fi echo "--------start-bak---------" echo $zl echo "$bakdir" #使用tar差量打壓縮包 tar "$zl" -czvf $bakdir $oriDirOrFile
創(chuàng)建任務(wù)調(diào)度
創(chuàng)建可執(zhí)行文件
touch execBakUp.sh chmod u+xrw execBakUp.sh
添加內(nèi)容
編輯任務(wù)調(diào)度 crontab -e 秒 時 日 月 周 0 02 * * * sh /opt/execBakUp.sh >> $(date "+%Y-%m-%d".log) 每天凌晨 2點 執(zhí)行execBakUp.sh
crontab -e
0 02 * * * sh /opt/execBakUp.sh >> $(date "+%Y-%m-%d".log)
說明
參數(shù)說明:
增量備份:
tar -cvzf text.tar.gz /bak -N i_time
i_time是時間點
獲取文件時間:
ls --full-time $bakdir$bakAllName |cut -d ' ' -f 6
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
標簽:迪慶 武威 麗江 日喀則 蚌埠 紹興 西寧 安康
上一篇:Linux系統(tǒng)如何修改防火墻配置
下一篇:Linux下shell腳本監(jiān)控Tomcat的狀態(tài)并實現(xiàn)自動啟動的步驟
Copyright ? 1999-2012 誠信 合法 規(guī)范的巨人網(wǎng)絡(luò)通訊始建于2005年
蘇ICP備15040257號-8