由备份不能正常执行所想到的

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

备份脚本共有两个 :A-bck.sh  B-bck.sh 分别对项目 A B 的数据进行备份 , 分别在 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, 内容参照我的原脚本
为了区分项目 , 他将 A B 两个项目的备份分开放在 /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,
上级目录 A B 的修改时间并不会改变
举例 假设 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 51CTO博客,原文链接:http://blog.51cto.com/yahoon/200603,如需转载请自行联系原作者
 
相关文章
|
机器学习/深度学习 编解码 计算机视觉
一文读懂深度学习中的各种卷积 !!
一文读懂深度学习中的各种卷积 !!
490 0
|
缓存 API 流计算
Flink--7、窗口(窗口的概念、分类、API、分配器、窗口函数)、触发器、移除器
Flink--7、窗口(窗口的概念、分类、API、分配器、窗口函数)、触发器、移除器
|
弹性计算 运维 架构师
阿里云推出“百炼计划”训练营,“训战结合”精准提升伙伴能力
阿里云组织的首场面向合作伙伴的“百炼计划”训练营在山东省圆满收官。
|
Java Spring 容器
Spring的AOP失效场景详解
Spring的AOP失效场景详解
1742 0
|
IDE Java 测试技术
IDEA安装并使用通义灵码
本文介绍了“通义灵码”这一智能编码助手的功能特点,并提供了在IDEA中安装和使用的详细步骤,旨在帮助提升编程效率和代码质量。
IDEA安装并使用通义灵码
|
人工智能 自然语言处理 算法
GPT-4无师自通预测蛋白质结构登Nature子刊!LLM全面进军生物学,AlphaFold被偷家?
【9月更文挑战第17天】近日,《自然》子刊发表的一篇论文展示了GPT-4在预测蛋白质结构方面的惊人能力,这一突破不仅揭示了大型语言模型在生物学领域的巨大潜力,还可能影响传统预测工具如AlphaFold的地位。研究人员发现,GPT-4仅通过自然语言处理就能准确预测蛋白质的三维结构,包括常见的氨基酸序列和复杂的α-螺旋结构。实验结果显示,其预测精度与实际结构非常接近。这一成果意味着自然语言处理技术也可应用于生物学研究,但同时也引发了关于其局限性和对现有工具影响的讨论。论文详情见:https://www.nature.com/articles/s41598-024-69021-2
282 8
|
机器学习/深度学习 自然语言处理 开发者
大语言模型应用框架介绍
大型语言模型(LLM)是在大规模文本数据上训练而成,用于执行自然语言处理任务的深度学习模型,如文本分类、问答、总结和生成等。尽管LLM如ChatGPT、GPT-3、LaMDA等备受关注,但其泛化能力和特定任务优化方面仍有限制。为此,应用框架如LangChain应运而生,提供了更优化的解决方案。学习LLM应用框架可循序渐进,掌握其应用场景及常见框架,构建具体应用。
|
存储 传感器 物联网
|
JSON JavaScript 前端开发
Vue项目使用Cookie,以Json格式存入与读取Cookie,设置过期时间以及删除操作
这篇文章介绍了在Vue项目中如何使用JavaScript操作Cookie,包括设置、读取、设置过期时间以及删除Cookie的方法。
745 0
|
安全 网络安全 数据安全/隐私保护
什么是双因素身份验证 (2FA)?
【4月更文挑战第14天】
2303 2