您的位置:首页 > 运维架构 > Shell

shell-整理目录下的备份文件并生成压缩包

2020-01-15 10:37 936 查看

背景:

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

  • 点赞
  • 收藏
  • 分享
  • 文章举报
aopiao5855 发布了0 篇原创文章 · 获赞 0 · 访问量 1346 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: