shell周期差量備份文件夾的實現(xiàn)代碼
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ù) 默認(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)備份了全量
  #獲取全量備份的時間
  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"
      #差量備份比較時間基準(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
秒 時 日 月 周
0 02 * * * sh /opt/execBakUp.sh >> $(date "+%Y-%m-%d".log)
每天凌晨 2點 執(zhí)行execBakUp.sh
說明
參數(shù)說明:
- $#:添加的參數(shù)個數(shù)。
 - $1~$n:添加到Shell的各參數(shù)值
 - $0:Shell本身的文件名
 - $*和$@:傳遞給腳本或函數(shù)的所有參數(shù)。
 
增量備份:
tar -cvzf text.tar.gz /bak -N i_time
i_time是時間點
獲取文件時間:
ls --full-time $bakdir$bakAllName |cut -d ' ' -f 6
- ls --full-time text.txt:顯示文件完整時間
 - cut -d ' ' -f 6空格分隔 顯示第6列
 
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
欄 目:Linux/apache
本文標(biāo)題:shell周期差量備份文件夾的實現(xiàn)代碼
本文地址:http://www.jygsgssxh.com/a1/Linux_apache/10627.html
您可能感興趣的文章
- 04-02linux中jobs命令 shell jobs命令
 - 01-10Shell腳本之Expect免交互的實現(xiàn)
 - 01-10shell之分離解析腳本的實現(xiàn)方法
 - 01-10shell之正向解析腳本的實現(xiàn)方法
 - 01-10Shell腳本實戰(zhàn)之DNS主從同步腳本實例
 - 01-10Linux下shell通用腳本啟動jar(微服務(wù))
 - 01-10Shell腳本的條件測試和if條件語句使用方法
 - 01-10開發(fā)者常用及實用Linux Shell命令備忘錄(小結(jié))
 - 01-10Linux配置SSH和Xshell連接服務(wù)器的教程(圖解)
 - 01-10shell腳本實現(xiàn)ssh-copy-id批量自動發(fā)送公鑰到遠(yuǎn)程主機(jī)
 


閱讀排行
本欄相關(guān)
- 04-02linux關(guān)閉串口命令 關(guān)閉linux端口命令
 - 04-02linux文件命令重命名 linux重命名文件名
 - 04-02linux中jobs命令 shell jobs命令
 - 04-02linux命令注入過濾 linux 代碼注入
 - 04-02linux依次執(zhí)行命令 linux命令的執(zhí)行過程
 - 04-02linux命令注銷vnc linux命令行注銷用戶
 - 04-02linux命令免輸入 linux配置免密登錄
 - 04-02軟交換linux命令 軟交換網(wǎng)絡(luò)主要協(xié)議
 - 04-02linux命令歷史記錄 linux查看歷史記錄的
 - 04-02linux命令頁面 linux命令頁面中文
 
隨機(jī)閱讀
- 04-02jquery與jsp,用jquery
 - 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
 - 08-05DEDE織夢data目錄下的sessions文件夾有什
 - 01-11ajax實現(xiàn)頁面的局部加載
 - 01-10delphi制作wav文件的方法
 - 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
 - 08-05織夢dedecms什么時候用欄目交叉功能?
 - 01-10C#中split用法實例總結(jié)
 - 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
 - 01-10使用C語言求解撲克牌的順子及n個骰子
 


