博客统计信息

51cto博客之星
用户名:yahoon
文章数:129
评论数:708
访问量:535468
无忧币:3386
博客积分:5033
博客等级:8
注册日期:2006-04-17

由备份不能正常执行所想到的
2009-09-10 12:52:31
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://yahoon.blog.51cto.com/13184/200603
 

 
问题:
某台机器的备份脚本不能定期执行,具体表现为备份脚本运行一段时间之后,备份目录/home/dbbackup被删除,导致备份无法正常完成
 
基本情况:
机器无被入侵迹象

备份脚本共有两个:A-bck.sh B-bck.sh分别对项目AB的数据进行备份,分别在0点和1点执行
 
其中A-bck.sh是我之前所写,已经执行了很长时间没有问题
B-bck.sh是同事最近所写,在执行了一段时间之后出现这样的问题
 
脚本说明:
1.
脚本A-bck.sh的内容是将A项目的备份都放在/home/dbbackup/
定期删除7天之前的文件,删除命令写的是find /home/dbbackup/ -mtime +7 |xargs rm -r
 
2.
后来同事为B项目写备份脚本B-bck.sh,内容参照我的原脚本
为了区分项目,他将AB两个项目的备份分开放在/home/dbbackup/A//home/dbbackup/B/,并按此修改了我的备份脚本A-bck.sh中的备份路径
但是脚本里面的定期删除命令并没改,仍然是find /home/dbbackup/ -mtime +7 |xargs rm -r
 
问题原因分析:
每次脚本运行,备份文件都是产生在"/home/dbbackup/项目目录/"
系统里面标识有改动的就是"文件""/home/dbbackup/项目目录"(通过ll命令查看改动日期这两个的修改时间会变化),系统认为"/home/dbbackup"目录并没有改动(ll命令显示此目录的改动日期不变)
所以当同事将项目分了目录的7天过后,脚本运行find /home/dbbackup/ -mtime +7 出来的结果含有"/home/dbbackup/",所以此目录就被删除语句给直接删掉了
 
解决办法:
将删除语句改为
find /home/dbbackup/A/*.* -mtime +7 |xargs rm –r
find /home/dbbackup/B/*.* -mtime +7 |xargs rm -r
即将find细化到项目文件下,这样就保证搜索出来的都是特定目录下的文件了
 
原理:
一个多级目录 /A/B/C/ ,如果C下产生,修改,新建,删除文件或者目录 ,那么修改时间(1l命令显示的时间)会变化的是C,
上级目录AB的修改时间并不会改变
举例: 假设10天前,建好目录结构/A/B/C/,并设置好备份任务,C目录下每天产生备份文件,名称为1,2,3依次累加,到今天产生到文件10
那么使用find /A/B/  -mtime +7 查找修改时间在7天之前的文件,结果为
/A/B/(其修改时间是10天前,也在查找的范围内)
1,2,3(这是7天前产生的文件)
注意C不在,因为每天产生一个备份文件,C的修改时间随之更新
 
要达到只删除文件的目的,就需要具体到目录find /A/B/C/ -mtime +7 或者更加明确到文件find /A/B/C/* -mtime +7
 
教训:
每次修改脚本的时候,必须测试.
这次就是因为同事在修改我脚本的时候,并没有测试我的脚本.(因为我的脚本一直运行正常,他只是修改了一个目录而已,大意的认为没有问题)
 
 
 
 
 
 
 
 
 
 

本文出自 “yahoon的小屋” 博客,请务必保留此出处http://yahoon.blog.51cto.com/13184/200603

分享至
更多
一键收藏,随时查看,分享好友!
0人
了这篇文章
类别:linux技术圈()┆阅读()┆评论() ┆ 推送到技术圈返回首页

文章评论

 
2009-09-10 15:36:24
这是传说中的发散思维嘛 想到了这么多

2009-09-10 20:43:14
分析的深入,呵呵
博主回复:
2009-09-11 09:44:20
过奖,还以为是灵异事件呢 呵呵

2009-09-10 22:55:29
我是用的COPY命令备份的。简单!
博主回复:
2009-09-11 09:44:03
主要是要定期删除旧的备份,这一步上出了问题

2009-09-11 12:43:42
受教了!!!

2009-09-11 13:00:36
怎么文章没有图片呢?

2009-09-12 11:28:31
参考一下

2009-09-15 10:34:50
脚本的问题多啊
脚本是好的 放到cron里就不行的现象也经常发生
博主回复:
2009-09-15 10:55:06
一般与环境变量有关,尤其是java的程序

2009-12-11 09:43:25
后面加个*其实就可以了。不会删除上层目录。

 

发表评论            

【技术门诊】专家解析:软考重点难点及应试技巧
昵  称:
登录  快速注册
验证码:

请点击后输入验证码博客过2级,无需填写验证码

内  容: