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 ...
随机推荐
- Python图形编程探索系列-02-框架设计
跳转到我的博客 设计任务 在主窗口root中放置三个容器用于容纳组件,容器采用框架设计. 代码初步设计 import tkinter as tk root = tk.Tk() root.geometr ...
- PAT-A1135. Is It A Red-Black Tree (30)
已知先序序列,判断对应的二叉排序树是否为红黑树.序列中负数表示红色结点,正数表示黑色结点.该序列负数取绝对值后再排序得到的是中序序列.根据红黑树的性质判断它是否符合红黑树的要求.考察了根据先序序列和中 ...
- Codeforces Round #409 (rated, Div. 2, based on VK Cup 2017 Round 2) 题解【ABCDE】
A. Vicious Keyboard 题意:给你一个字符串,里面只会包含VK,这两种字符,然后你可以改变一个字符,你要求VK这个字串出现的次数最多. 题解:数据范围很小,暴力枚举改变哪个字符,然后c ...
- reveal查看任意APP
链接: 使用Reveal查看任意App的技巧 使用Reveal查看任意App最省步骤的技巧 如何利用Reveal神器查看各大APP UI搭建层级 使用Reveal查看别人app的UI组成 Reveal ...
- [原创]Java性能优化权威指南读书思维导图3
[原创]Java性能优化权威指南读书思维导图3
- 在C#中对枚举进行位运算--枚举组合
由于枚举的基础类型类型为基本的数值类型,支持位运算,因此可以使用一个值表示多个枚举的组合,在定义枚举时需要指定枚举数为2的幂指数方便进行位运算,即枚举数为1,2,4,8…,或1,1<<1, ...
- Spring boot 远程调试
设置远程调试,可以在正式环境上随时跟踪与调试生产故障. 依赖 在 pom.xml 中增加远程调试依赖(试了下,不加也行). <plugins> <plugin> <gro ...
- Eclipse复制项目彻底修改项目名称
一.需求 需要新做一个项目,框架还是Maven+SSM,于是就把原来的项目copy了一个,操作是直接选中原项目,CTRL+C ,然后粘贴,这个时候会让你选择工作空间和给一个新的项目名字,如下图,输入新 ...
- 图像的视差匹配(Stereo Matching)
这里要求用我们自己计算得到的视差图和给的视差图作比較来比較我们得到的视差图的好坏程度,我视差图返回的值是计算得到的视差乘以3之后的图,所以在计算时我不是两个值相差大于1,而是大于3.由于两个图像都乘3 ...
- gcc 头文件依赖关系 分析工具
http://gernotklingler.com/blog/open-source-tools-examine-and-adjust-include-dependencies/