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
shell-整理目录下的备份文件并生成压缩包的更多相关文章
- 生成解决方案,主项目的bin目录下没有其他项目生成的dll
问题说明: 我的项目组成: 主项目为:TaskUtlity 在生成解决方案的时候在TaskUtlity的bin目录下老是找不到ProBonus项目生成的dll. 解决方案: 1.打开sln文件,找到P ...
- linux怎么实时查看目录下是否有文件生成
inotify-tools 是为linux下inotify文件监控工具提供的一套c的开发接口库函数,同时还提供了一系列的命令行工具,这些工具可以用来监控文件系统的事件. inotify-tools是用 ...
- shell获取目录下所有文件夹的名称并输出
获取指定目录/usr/下所有文件夹的名称并输出: shell代码: #!/bin/bash #方法一 dir=$(ls -l /usr/ |awk '/^d/ {print $NF}') for i ...
- shell获取目录下(包括子目录)所有文件名、路径、文件大小
一例shell脚本:取得目录下(包括子目录)所有文件名.路径与文件大小. 代码,shell脚本: lsdir.sh #!/bin/bash # #site: www.jquerycn.cn funct ...
- Linux shell 获取目录下时间最新的文件的文件名
ls -lt /dirname/ | grep filename | head -n 1 |awk '{print $9}' 逐条解释: ls -lt /dirname/ 列出此目录下的所有文件并按照 ...
- shell 搜索指定目录下所有 jar 文件生成csv文件
虽说比较简单,但希望分享给大家.按需求改成想找的:例如txt,xls 等. 脚本名 扫描的路径 文件名 testFind.sh / testFind.txt (如果未配置环境变量 ./testFi ...
- [SHELL]输出目录下所有的可执行文件,批量创建用户
#!/bin/bash IFS=: for folder in $PATH #PATH变量分隔符为: do echo $folder echo ------------------ for file ...
- shell获取目录下最新的文件,文件是以日期命名
如果你为每个文件按日期命名的格式都一致的话,那么 "ls -l" 命令列出的文件列表就是默认按文件名称(日期先后)排序的.那么最后一个就是最新的,文件名可以用以下方式获取.file ...
- eclipse 项目中的java文件没有在WEB-INF目录下的classes中 生成相对应的编译后的类
1.首先确定project->Build Automatically是否勾选上: 2.执行完第一步之后测试一下看是否能编译,如果还是不能,则进行手动编译: 3,进入clean对话框,选择Cle ...
随机推荐
- 洛谷.1501.[国家集训队]Tree II(LCT)
题目链接 日常zz被define里没取模坑 //标记下放同线段树 注意51061^2 > 2147483647,要开unsigned int //*sz[]别忘了.. #include < ...
- Python3正则表达式(4)
正则表示式的子模式 使用()表示一个子模式,括号中的内容作为一个整体出现. (red)+ ==> redred, redredred, 等多个red重复的情况 子模式的扩展语法 案例1 tel ...
- 在web中实现当前变量和前一个的比较
/*if (attribute == null) {// 如果缓存中没有存过UploadTimeObj对象,那么创建对象,并将该对象存入缓存中 UploadTim ...
- 《JavaScript-The Definitive Guide》读书笔记:字符串常用方法
concat() 连接多个字符串,返回合并后的字符串. var s1="a"; var s2="b"; var s3="c"; consol ...
- ClassLoader加载资源时的搜索路径
先来个例子: /** * 测试classloader加载路径在哪里<p> * main3 */ public static void main3(String[] args) { Prop ...
- 配置sonar和jenkins进行代码审查
转自: http://www.cnblogs.com/gao241/p/3190701.html, 版权归原作者所有. 本文以CentOS操作系统为例介绍Sonar的安装配置,以及如何与Jenkin ...
- GO开发环境搭建
GO开发环境搭建 1)下载GO SDK,并安装 https://golang.google.cn/dl/ 2)下载GO IDE:GOLAND,并安装 3)设置GOROOT和GOPATH 4)新建一个工 ...
- 你真的会用Gson吗?Gson使用指南(2)
注:此系列基于Gson 2.4. 上一篇文章 你真的会用Gson吗?Gson使用指南(1) 我们了解了Gson的基础用法,这次我们继续深入了解Gson的使用方法. 本次的主要内容: Gson的流式反序 ...
- Socket编程的UDP与TCP,应用在哪些地方
随着网络技术飞速发展,网速已不再是传输的瓶颈,UDP协议以其简单.传输快的优势,在越来越多场景下取代了TCP,如网页浏览.流媒体.实时游戏.物联网. 1,网速的提升给UDP稳定性提供可靠网络保障 CD ...
- oracle获取今年在内的前几年、后几年
前几年 select to_char(sysdate, 'yyyy') - level + 1 years from dual connect by level <= num num:即想获取几 ...