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
如果您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】
本文版权归作者和博客园共有,欢迎转载