国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Linux Shell > 正文

shell周期差量備份文件夾的實現代碼

2020-07-27 18:43:33
字體:
來源:轉載
供稿:網友

shell腳本備份

創建備份腳本

backup.sh

#!/bin/sh #$# 參數個數#提示說明if [ $# -lt 3 ]; thenecho "=============================================="echo "Usage:   $0 ( commands ... )" echo "commands:" echo "example:" echo " > $0 bakDir bakAllName oriDirOrFile" echo " bakDir:備份文件件" echo " bakAllName:完整備份的名稱" echo " oriDirOrFile:源文件或者文件夾"echo "==============================================" exit -1fi#將參數賦值給變量 = 兩邊不能有空格bakdir="$1"bakName="$2"bakAllName="$2.tar.gz"oriDirOrFile="$3"#保存天數 默認7天超過指定天數重新 全量備份if [ -n $4 ];then  bakDays=7else  bakDays=$4fiecho $bakAllNameecho $bakdir#判斷全量備份文件是否存在if [ ! -f "$bakdir$bakAllName" ];then  #如果沒有全量備份份文件  echo "--------all-bak---------"  bakdir=$bakdir$bakAllName  zl=""else  #已經備份了全量  #獲取全量備份的時間  bakAllDate="`ls --full-time $bakdir$bakAllName |cut -d ' ' -f 6`"  #獲取當前時間  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 "備份時間已經超過備份周期了"    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 格式轉換成yyyy-MM-dd HH:mm:ss      compareTime=`date -d $compareTime "+%F %T"`      echo "$compareTime"      #差量備份比較時間基準      zl="-N "$compareTime""      bakdir=$tempDir  fifiecho "--------start-bak---------"echo $zlecho "$bakdir"#使用tar差量打壓縮包tar "$zl" -czvf $bakdir $oriDirOrFile

創建任務調度

創建可執行文件

touch execBakUp.shchmod u+xrw execBakUp.sh

添加內容

  • sh backup.sh /opt/bak/ tomcatTest /home/oriDir 5
  • /opt/bak/:你的備份需要放置的位置
  • tomcatTest:你的備份名稱
  • /home/oriDir:需要備份的文件夾
  • 5:備份周期

編輯任務調度
crontab -e
秒 時 日 月 周
0 02 * * * sh /opt/execBakUp.sh >> $(date "+%Y-%m-%d".log)
每天凌晨 2點 執行execBakUp.sh

說明

參數說明:

  • $#:添加的參數個數。
  • $1~$n:添加到Shell的各參數值
  • $0:Shell本身的文件名
  • $*和$@:傳遞給腳本或函數的所有參數。

增量備份:

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列

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 上林县| 南川市| 连江县| 望都县| 庄河市| 定南县| 唐河县| 河南省| 滁州市| 宁河县| 霍林郭勒市| 察隅县| 墨脱县| 吉林市| 大荔县| 陆良县| 萝北县| 丹棱县| 昌图县| 邻水| 喀喇沁旗| 博白县| 永靖县| 上饶县| 宝兴县| 华容县| 云龙县| 景泰县| 房山区| 平定县| 绍兴县| 龙海市| 讷河市| 拜城县| 达孜县| 社旗县| 青河县| 元氏县| 共和县| 彩票| 铜陵市|