這篇文章將為大家詳細(xì)講解有關(guān)使用shell怎么實(shí)現(xiàn)周期差量備份文件夾,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
創(chuàng)新互聯(lián)公司專注于安平網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供安平營銷型網(wǎng)站建設(shè),安平網(wǎng)站制作、安平網(wǎng)頁設(shè)計(jì)、安平網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造安平網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供安平網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。shell腳本備份
創(chuàng)建備份腳本
backup.sh
#!/bin/sh #$# 參數(shù)個(gè)數(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ù) 默認(rèn)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)備份了全量 #獲取全量備份的時(shí)間 bakAllDate="`ls --full-time $bakdir$bakAllName |cut -d ' ' -f 6`" #獲取當(dāng)前時(shí)間 nowDate=`date "+%Y-%m-%d"` #算出時(shí)間差單位是秒 senconds=$(($(date +%s -d $nowDate) - $(date +%s -d $bakAllDate))); #計(jì)算出天 day=$(($senconds/60/60/24)) #增量備份但是超過備份時(shí)間需要跟新全量的備份 if [ $day -gt $bakDays ];then echo "備份時(shí)間已經(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" #獲取全量備份文件的時(shí)間 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" #差量備份比較時(shí)間基準(zhǔn) 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)容
sh backup.sh /opt/bak/ tomcatTest /home/oriDir 5
/opt/bak/:你的備份需要放置的位置
tomcatTest:你的備份名稱
/home/oriDir:需要備份的文件夾
5:備份周期
編輯任務(wù)調(diào)度crontab -e
秒 時(shí) 日 月 周0 02 * * * sh /opt/execBakUp.sh >> $(date "+%Y-%m-%d".log)
每天凌晨 2點(diǎn) 執(zhí)行execBakUp.sh
說明
參數(shù)說明:
$#:添加的參數(shù)個(gè)數(shù)。
$1~$n:添加到Shell的各參數(shù)值
$0:Shell本身的文件名
$*和$@:傳遞給腳本或函數(shù)的所有參數(shù)。
增量備份:
tar -cvzf text.tar.gz /bak -N i_time
i_time是時(shí)間點(diǎn)
獲取文件時(shí)間:
ls --full-time $bakdir$bakAllName |cut -d ' ' -f 6
ls --full-time text.txt:顯示文件完整時(shí)間
cut -d ' ' -f 6空格分隔 顯示第6列
關(guān)于使用shell怎么實(shí)現(xiàn)周期差量備份文件夾就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。