1. 程式人生 > >Bash之定時備份歸檔檢驗並刪除

Bash之定時備份歸檔檢驗並刪除

bash自動指定日備份檢驗

一、介紹

生產線上有一臺bi ftp服務器(用來接受遊戲的數據),每個遊戲按指定格式上傳到以年月日的目錄中,如:20170628 這樣的目錄,每天一個目錄,因此數據日積月累導致inode和磁盤空間不斷的被消耗,另外有的項目下線,因此這些都需要把這些數據打包歸檔起來以節省空間;


二、解決方案

使用Bash寫了一個小工具只需要填寫指定目錄,多長日期之前的 兩項運行工具,即可對指定目錄下指定時間以前的數據進行打包,並在檢驗打包好後,刪除原備份目錄。以下是代碼:

#!/bin/bash
rootdir=/data1/games/zgws        #需要歸檔整理的目錄
declare -i Ago=20170301          #指定日期前
cd $rootdir
for d in $(ls):
do
    if [ ! -d $d ];
      then
         continue
    else
        set -i $d
        if [ $d -le  $Ago ]
          then
            echo $d
            tar czvf  ${d}.tar.gz $d
            declare -i tarhow=$(tar tvf ${d}.tar.gz |wc -l)     #檢驗歸檔後的文件個數
            declare -i srchow=$(ls $d |wc -l)                   #原目錄中文件個數
            let tarhow=($tarhow -1)
            if [ $tarhow -eq $srchow ]
               then
                 echo "$d tar OK,$d has $srchow files,and belong tared has $tarhow ,time at: $(date +%F-%H-%M-%S)" >>tarlog.log        #保存檢驗日誌
                 rm -r $d
            else
                 echo "$d tar failed!"
                 break
            fi
        fi
    fi
done


三、使用中用到的問題

可以修改做成定期去執行,主要就是日期問題,但不建議,另外主要是通過目錄統一“年月日”格式,其他的不行,要歸檔的目錄中不可以有隱藏文件及.開頭的文件,否則會產生檢驗不通過。



本程序僅供參考,和個人備忘,如有不當之處歡迎指正!

本文出自 “學地止境” 博客,請務必保留此出處http://dyc2005.blog.51cto.com/270872/1942717

Bash之定時備份歸檔檢驗並刪除