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
原文地址:https://www.cnblogs.com/sincoolvip/p/9182850.html