免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5202 | 回复: 15
打印 上一主题 下一主题

一组文件保留最新日期的文件其他删除 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-01-13 13:14 |只看该作者 |倒序浏览
mysql某库开启增量备份, 每天几个g 的日志增量文件产生.  当前磁盘空间 很小,不够用. 必须每天去掉多余的增量文件.

/var/log/bin目录
-rw-rw---- 1 mysql mysql      1073742484 Jan 12 10:56 mysql-bin.000026
-rw-rw---- 1 mysql mysql      1073742686 Jan 12 14:27 mysql-bin.000027
-rw-rw---- 1 mysql mysql       572163236 Jan 13 06:02 mysql-bin.000028
-rw-rw---- 1 mysql mysql             896 Jan 12 14:27 mysql-bin.index
文件如上.

每天必须手工删除多余的文件 ,比如mysql-bin.000026  mysql-bin.000027.  保留一个最新的28.
我准备写脚本每天自动清理一次(保留一个最大的,其他的mysql-bin.0开头的去掉).

这个脚本准备如下考虑
find ./ -name "mysql-bin.0*" |wc -l
---得到3.      (有时候这里访问少,很可能是最大的28文件有可能是昨天创建的 所以不能完全按照时间判断)

现在不知道下面的操作该如何做:
如果find ./ -name "mysql-bin.0*" |wc -l
>1 , 那么保留最新日期的文件 或者mysql-bin.0开头尾数最大的如28文件
其他 mysql-bin.0开头的文件都删掉 , 这个rm 脚本该如何写

论坛徽章:
0
2 [报告]
发表于 2011-01-13 13:20 |只看该作者
ls -t mysql-bin.* | tail +2 | xargs -I{} rm {}

论坛徽章:
0
3 [报告]
发表于 2011-01-13 13:21 |只看该作者
find 有 -mtime   -mtime等參數 用于按照時間查找的  樓主 可以 看看

论坛徽章:
0
4 [报告]
发表于 2011-01-13 13:24 |只看该作者
ls -t mysql-bin.0* | tail +2
tail: cannot open `+2' for reading: No such file or directory---失败

感谢楼上
但是要说下 2是不确定的
find ./ -name "mysql-bin.0*" |wc -l
他的值是 -1  得到你的

ls -t mysql-bin.0* | tail -n  2 是ok 的

现在想知道ls -t mysql-bin.0* | tail -n  2  这里2 能否动态改变 (有时候1是7个,有时候是3个,5个等)

论坛徽章:
0
5 [报告]
发表于 2011-01-13 13:29 |只看该作者
ls -t mysql-bin.0* | tail +2
tail: cannot open `+2' for reading: No such file or directory---失败
...
liyihongcug 发表于 2011-01-13 13:24



  +2的意思是从第二行一直显示到最后一行! 适用于所有情况! 难道你的tail不支持 +n???

论坛徽章:
0
6 [报告]
发表于 2011-01-13 13:34 |只看该作者
tail +2
tail: cannot open `+2' for reading: No such file or directory

可惜不支持 的   centos  64

论坛徽章:
0
7 [报告]
发表于 2011-01-13 13:35 |只看该作者
你的系统如果tail不支持+n也无妨, 替换tail +2的方法很多, 比如

ls -t mysql-bin.* | awk 'NR >1 {print}'  | xargs -I{} rm {}

论坛徽章:
0
8 [报告]
发表于 2011-01-13 13:40 |只看该作者
回复 3# lkk2003rty


    尽量生成以时间为标记的文件,例如mysql-2010-06-19.bin  ,然后配合mtime参数,会更容易些

论坛徽章:
0
9 [报告]
发表于 2011-01-13 13:46 |只看该作者
见笑没有你的方法
我的麻烦好多
cnt=`ls -t mysql-bin.0* | wc -l`
cnt=`expr $cnt - 1`
ls -t mysql-bin.0* | tail -n $cnt |xargs -I{} rm {}

顺便给一个 find $DUMP_PATH/$DELETE -mtime $OLDER_THAN_DAYS -exec rm -f {} \; ---回复lkk2003rty (小毛孩) 的方法

论坛徽章:
0
10 [报告]
发表于 2011-01-13 14:58 |只看该作者
find . ! -newer `ls -lrt|tail -1|awk '{print $NF}'`
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP