shell-整理目錄下的備份文件並生成壓縮包


背景:

CI構建下來的備份應用包在服務器上保留幾十個,空間占用大,看着不好看,可能還用不着,所以准備正好練練手吧!

其實CI上可以設置少保留幾個,但是我沒管。我只是想練練腳本

先來看一下我的服務器源目錄的文件夾放置:44個挺多的

 

再來看一下我的結果:

 

 代碼不長,但是shell我用的手生。語法都是靠查靠找。實在艱辛才湊起來的

整體思路:

1、找出符合日期的關鍵字的文件夾

2、移動1找出來的文件夾,然后壓縮

這里我用了自定義輸入時間的邊界來循環執行,使所有時間都可以兼顧得到。

#!/bin/bash
#這一批按日期打包mrobot_xsp_0601_1910
#需要處理的文件所在目錄
FROM_FILE=/app/script/data
#zip包存放目錄
TO_ZIP=/app/script/bak
#判斷源文件目錄是否為空
if test ! -d $FROM_FILE
then
        mkdir -p $FROM_FILE
fi
#判斷zip存放目錄是否為空
if test ! -d $TO_ZIP
then
        mkdir -p $TO_ZIP
fi

#從命令入參獲取開始時間和結束時間
START_DATE=$1
END_DATE=$2
#查找開始獲取START_DATE關鍵字名稱的文件夾
while [ $START_DATE -le $END_DATE ]
do
	#fileList=$(ls $FROM_FILE/* |grep "${START_DATE}")
	fileList=$(ls -l $FROM_FILE |awk '/^d/ {print $NF}'|grep "${START_DATE}")
	len=${#fileList[@]}
	if test $len -gt 0;then
		mkdir -p $TO_ZIP/$START_DATE
		#有此種需要備份的目錄,進行數組for循環,把文件夾拷貝到bak里面,並進行歸類壓縮
		for filename in ${fileList[@]}
		do
			if test -s $FROM_FILE/$filename ;then
				cp -rp $FROM_FILE/$filename $TO_ZIP/$START_DATE
				rm -rf $FROM_FILE/$filename
			fi
		done
		zip -rqm $TO_ZIP/${START_DATE}.zip $TO_ZIP/${START_DATE}
	fi
	#START_DATE+1還得繼續
	START_DATE=$(date -d "2018$START_DATE+1days" +%m%d)
done

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM