最近项目要上线,于是整个项目组的小伙伴都在疯狂的补文档,补运维文档的时候发现关于各种日志的清理备份脚本没有,于是,我朝linux命令下手了。由于我要写的脚本其实很简单所以只涉及到一小部分基础的命令,在此主要做个自己小总结。
首先,备份。
整理一下思路:
1、我需要把A目录下的log文件夹下的所有文件备份到B目录(因为是七天一备所以不考虑筛选日期):cp、cpio
2、每次备份到B目录下时生成一个以日期命名(如:20190826)的文件夹,log都在个20190826这个文件夹下,便于管理和查阅。:$(date +%Y%m%d)、mkdir -p多级目录创建
3、对于备份的数据,需要打个压缩包,以便节约空间。:zip、gzip、tar、bzip2
大的步骤有了,如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019082611031933.png)
然后再细一点考虑一下,如果同一天我要备份多次呢?那么需要加一个判断
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019082611074147.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTM5Mjc3OQ==,size_16,color_FFFFFF,t_70)第二,清理
1、假如源目录log下有三天的日志,我不能用rm -rf log,这样会把log文件夹也删掉,但是可以先cd进log,再rm -rf *,就会删掉下的所有文件夹及文件,但是保留log文件夹。
2、但是这样仍有一个问题,那就是假如今天我做了一半业务,然后备份完了要清理,那么把今天的日志删了,再做业务,就会导致不打印日志。所以清理时要保留今天的日志不被清理。
大体思路呢,有两个,(1)反向删除(2)遍历,判断
我用的遍历判断,遇到各种问题,代码如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190826112808247.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTM5Mjc3OQ==,size_16,color_FFFFFF,t_70)
报错一:syntax error near unexpected token `elif',因为我之前在then和elif中没有任何语句,考虑到可能是这个引起的,所以在中间加了打印语句,该报错解决
报错二:syntax error near unexpected token `done',这个我就百思不得其解了,怎么的呢,for循环还能关键字有问题?查视图,看符号,查看文档格式,均没有问题,后来一百度以通明白可能是直接复制粘贴的原因,解决。
报错三:integer expression expected,我之前的判断代码写的是if [ "$a" -ne "$b" ],后来一查发现,-ne时判断证书是否相等,于是换了 = ,解决。
这里值得说的是多层判断的写法:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019082611384681.png)
虽然写的简单,但是每一个点都可以铺开,比如压缩的几种方法异同及解压缩,潜逃循化及集中循环方式等等,路漫漫其修远兮
shell脚本:备份和清理日志
最新推荐文章于 2024-05-25 06:00:00 发布