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 ...
随机推荐
- ajax批量删除功能的实现源代码
效果展示: 完整代码如下: <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charse ...
- 11.7 NOIP模拟赛
目录 2018.11.7 NOIP模拟 A 序列sequence(two pointers) B 锁lock(思路) C 正方形square(埃氏筛) 考试代码 B C 2018.11.7 NOIP模 ...
- 提升PHP安全:8个必须修改的PHP默认配置
很明显,PHP+Mysql+Apache是很流行的web技术,这个组合功能强大,可扩展性强,还是免费的.然而,PHP的默认设置对已经上线的网站不是那么适合.下面通过修改默认的配置文件加强PHP的安全策 ...
- VMware workstation12 密匙
VMware workstation12 密匙:5A02H-AU243-TZJ49-GTC7K-3C61N
- iptables防火墙企业级模板
目前公司业务已大多迁移至内网使用或者使用云主机,防火墙也渐渐不用了,在博客上记录一下,以免以后突然有用却找不到模板了.此防火墙脚本执行时默认清空旧的防火墙规则.放行本地loop网卡,DNS服务,NTF ...
- 动态ip、静态ip、pppoe拨号的区别
pppoe拨号 pppoe拨号上网,又叫做ADSL拨号上网.宽带拨号上网.指现在有很多我的E家用户,送的无线猫,阉割了PPPOE拨号功能,必须要从电脑上拨号才能上网.还有大街上的WIFI热点也很多,如 ...
- SVN clean失败解决方法【转】
原文地址:http://blog.csdn.net/victory08/article/details/42100325/ svn执行clean up后出现提示:svn cleanup failed– ...
- C# 2015关键字
关键字是对编译器具有特殊意义的预定义保留标识符. 它们不能在程序中用作标识符,除非它们有一个 @ 前缀. 例如,@if 是有效的标识符,但if 不是,因为 if 是关键字. 本主题中的第一个表列出的关 ...
- 奇怪吸引子---Hadley
奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...
- IntelliJ IDEA 2017.3/2018.1激活与汉化
本文以IntelliJ IDEA 2017.3以及2018.1为例进行讲解.(持续更新:2018年5月28日) 适用版本(其它版本未测试): IntelliJ IDEA 2017.2.6.2017.3 ...