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
    
  • 相关阅读:
    - (NSString *)description
    3.30 学习笔记
    常用的 博客
    iOS 比较好的博客
    iOS查看一段代码运行的时间
    tableview 第一次可以查看tableview 当退出第二次却会出现Assertion failure in -[UITableView _configureCellForDisplay:forIndexPath:]
    iphone 设置全局变量的几种方法
    java操作控件加密
    关闭windows 警报提示音
    HttpServletRequest简述
  • 原文地址:https://www.cnblogs.com/sincoolvip/p/9182850.html
Copyright © 2011-2022 走看看