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

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值