如下所示,在/opt/backup下是备份目录,只需要保留最新的三份备份,在此之前的备份目录都要删除。

[root@syslog-ng ~]# cd /opt/backup/
[root@syslog-ng backup]# ls -l
total 68
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180626
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180627
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180628
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180629
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180630
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180631
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180701
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180702
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180703
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180704
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180705
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180706
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180707
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180708
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180709
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180710
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180711 [root@syslog-ng backup]# /bin/ls -l |grep "^d"
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180626
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180627
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180628
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180629
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180630
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180631
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180701
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180702
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180703
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180704
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180705
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180706
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180707
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180708
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180709
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180710
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180711 [root@syslog-ng backup]# /bin/ls -l |grep "^d"|awk '{print $9}'
20180626
20180627
20180628
20180629
20180630
20180631
20180701
20180702
20180703
20180704
20180705
20180706
20180707
20180708
20180709
20180710
20180711 [root@syslog-ng backup]# /bin/ls -l |grep "^d"|awk '{print $9}'|wc -l
17
[root@syslog-ng backup]# /usr/bin/expr 17 - 3
14

处理脚本如下

[root@syslog-ng backup]# cat /opt/del.sh
#!/bin/bash
cd /opt/backup
NUM1=$(/bin/ls -l |grep "^d"|awk '{print $9}'|wc -l)
NUM2=$(/usr/bin/expr $NUM1 - 3)
/bin/ls -l |grep "^d"|awk '{print $9}'|/bin/sed -n "1,$NUM2 p"|xargs rm -rf

授予脚本执行权限

[root@syslog-ng backup]# chmod 755 /opt/del.sh

执行脚本

[root@syslog-ng backup]# sh /opt/del.sh

执行脚本后,发现保留下来的备份目录就行最新的三份了

[root@syslog-ng backup]# ll
total 12
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180709
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180710
drwxr-xr-x. 2 root root 4096 Jul 11 14:48 20180711

保留最新N份备份目录脚本的更多相关文章

  1. 使用命令行备份指定文件夹并保留最新N份

    客户需要对网站进行定期备份,并保留最近30天的文件,编写后以下脚本,通过Windows的任务计划进行调度 对比手工和任务计划调度运行情况来看,手工运行中可直接调用RAR.exe和网络进行传输,但是任务 ...

  2. Linux Shell脚本,删除旧文件,保留最新的几个文件

    删除某一目录下文件,只保留最新的几个 #!/bin/bash #保留文件数 ReservedNum= FileDir=/home/dev/saas_test/testcases/report/html ...

  3. Debian下自动备份文件并上传到远程FTP服务器且删除指定日期前的备份Shell脚本

    说明:  1.备份目录/home/osyunwei下面所有的文件到/home/osyunweibak里面,并且保存为osyunwei20120701.tar.gz的压缩文件格式(2012_07_01是 ...

  4. windows server 定期备份数据库脚本

    将以下文件保存为.bat脚本,在计划任务中添加定时任务运行此脚本即可.脚本中的备份目录,数据库目录和压缩文件目录请自行修改. @echo off rem 当前路径切换到备份数据库目录 cd D:\wa ...

  5. 完整和增量备份MySQL脚本

    本文档采用mysqldump 对数据库进行备份,mysqldump 是采用SQL级别的备份机制,它将数据表导成 SQL脚本文件,在不同的 MySQL 版本之间升级时相对比较合适,这也是最常用的备份方法 ...

  6. Mongodb之备份恢复脚本

    本分脚本: !/bin/bash #备份文件执行路径 which mongodump DUMP= #临时备份目录 OUT_DIR= #本分存放目录 TAR_DIR= #获取当前系统时间==> 2 ...

  7. mysql通过mysqldump实现备份,脚本编写

    每日三点同步mysql备份任务 crontab -e 0 3 * * * sh /home/shell/mysql_bakup.sh >> /dev/null 2>&1 my ...

  8. Centos 8 上定时备份Gitlab ,脚本实现定时备份,备份恢复

    定时备份 要求 为了能够备份和恢复,请确保你的系统上安装了Rsync yum install rsync -y 配置备份目标机器免密认证 执行ssh-keygen -t rsa 生成私钥和公钥 ssh ...

  9. Rehat一键安装mysql脚本和备份数据库脚本

    Rehat一键安装mysql脚本 ##说明:适用,Rehat 5 6 7 1.运行状态,运行成功输出mysql临时密码 2.代码如下 #!/bin/bash #获取系统信息 sudo cat /etc ...

随机推荐

  1. 计算机硬件基本知识及Linux的常用命令

    ------------------1. 计算机硬件基本知识------------------ CPU - 寄存器 - L1/L2/L3 - 内存 - 硬盘 - 互联网下载/其他存储介质传输 寄存器 ...

  2. 如何以SYSTEM用户运行CMD

    有的时候有些文件在管理员账户不能删除,这个时候需要在SYSTEM用户下删除. 可以通过以SYSTEM权限运行CMD来删除某些文件或目录的目的. 1. 从微软网站下载PSTool. 2. 以管理员运行C ...

  3. is_valid校验机制

    先来归纳一下整个流程 (1)首先is_valid()起手,看seld.errors中是否值,只要有值就是flase(2)接着分析errors.里面判断_errors是都为空,如果为空返回self.fu ...

  4. mysql ANSI_QUOTES 这个sql_mode的作用(字段可以使用双引号)

    首先sql_mode用于mysql的行为,sql_mode的多个值之间用','分隔: 如果想使用双引号就这样做: 1. 修改/etc/my.cnf文件 ,  双引号模式是ANSI_QUOTES 或   ...

  5. 10LaTeX学习系列之---Latex的文档结构

    目录 目录 前言 (一)对于Ctex宏包中的文档结构 1.说明 2.源代码 3.输出效果 4.技巧 (二)对于ctexart的文档结构 1.说明 2.源代码 3.输出效果 (三)对于ctexbook的 ...

  6. 第 15 章 位操作(fields)

    /*----------------------------------- fields.c -- 定义并使用字段 -----------------------------------*/ #inc ...

  7. 写jQuery插件该注意的

    写好jQuery插件,有一些注意的地方(持续添加). 支持UMD 现在前端开发讲究模块化,所以jQuery插件也最好能够兼顾模块化. 模块化模式大概有几种: AMD.CommonJs.UMD. AMD ...

  8. 习题 6 字符串(string)和文本

    虽然你已经在程序中写过字符串了,你还没学过它们的用处.在这章习题中我们将使用复杂的字符串来建立一系列的变量,从中你将学到它们的用途.首先我们解释一下字符串是什么 东西. 字符串通常是指你想要展示给别人 ...

  9. 最近公共祖先(LCA)模板

    第一行包含三个正整数N.M.S,分别表示树的结点个数.询问的个数和树根结点的序号. 接下来N-1行每行包含两个正整数x.y,表示x结点和y结点之间有一条直接连接的边(数据保证可以构成树). 接下来M行 ...

  10. Arduino IDE for ESP8266教程(0)配置IDE

    淘宝链接 https://detail.tmall.com/item.htm?id=540067174120&spm=a1z09.2.0.0.6f7c6509ujAvQs&_u=71q ...