之前公司有这样的需求:
调用第三方个接口,请求和响应报文 都放在 服务器的特定目录下,按照服务名/日期(2018120)/报文.json,时间久了,会数据量越来越大,导致存储空间不足,影响到服务器的性能。当时要求把30天以前的文件全部zip压缩,并删除文件夹。节省空间。
因此要求写一个脚本解决
#!/bin/bash
function getdir(){
echo $1
##date -d '-30days' '+%Y%m%d'
targetDate=$(date -d '-30days' '+%Y%m%d')
for element in `ls $1`
do
dir_or_file=$1"/"$element
if [ -d $dir_or_file ]
then
cd $1""
if [[ $targetDate > $element ]] && [[ $element == 20* ]] && [[ ${#element} == 8 ]];
then
echo "begin folder-->" $element
zip -r "${element}".zip "${element}"
echo "rmove-->" $element
rm -rf $element
echo "end folder-->" $element
else
getdir $dir_or_file
fi
fi
done
}
###这个是要删除的文件夹地址,会递归该文件夹及其子文件夹,符合条件的压缩完成后删除文件夹。
root_dir="/nasdata/service/"
getdir $root_dir