zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    大二软件工程概论自主学习(第十一周)
    课堂练习1
    数据库的学习
    界面作业
    怎样连接连接数据库
    异常处理
    继承与多态
    String课后作业
    请查看String.equals()方法的实现代码,注意学习其实现方法。
    课后作业
  • 原文地址:https://www.cnblogs.com/sincoolvip/p/9182850.html
Copyright © 2011-2022 走看看