rm 误删除后,我们还能做些什么?

2019年12月20日11:10:52 发表评论 1,706 views
广告也精彩

rm -rf 可以优化系统,提升性能,这么认真的胡扯,居然有人相信,我的天啊~~~~~~

rm 误删除后,我们还能做些什么?

事件简述

某年某月某日,一个小运维开始在清除日志的时候,多敲了个空格,就这样葬送了一生。

事故过程

rm -rf / workspace/www/logs/

还好是在测试环境执行的,否则估计要跑路了。

画外音:一个“多了一个空格”的bug,看懂了么?

曾经我也干过类似的傻事,写过这样删除日志的脚本:

cd ${log_path}
rm -rf *

进入到日志目录,然后把日志都删除。

画外音:看上去没有任何问题?当目录不存在时,悲剧就发生了。

如何避免类似的删除根目录的“惨剧”发生,有这样一些建议:

处理方案

一、命令替换

在生产环境把rm -rf 命令替换为mv,再写个定时shell定期清理。

画外音:模拟了回收站的功能。

二、收拢权限

帐号权限的分离,线上分配work帐号,只能够删除/home/work/logs/目录,无法删除根目录。

画外音:大公司一般线上权限管理比较规范,小公司就未必了,搞不好所有的小伙伴都有权限在线上乱搞。

三、使用&&

可以通过“&&”,将

cd ${log_path}
rm -rf *
合并成一个语句
cd ${log_path} && rm -rf *

当前半句执行失败的时候,后半句不再执行。

画外音:这个小技巧很赞。

四、判断目录是否存在

制定编码规范,对目录进行操作之前,要先判断目录是否存在。

画外音:靠人的自觉来保证规范的执行,总感觉有些不太靠谱。当然,规范是有必要的。

五、给linux 添加回收站

自行百度即可。。。
https://www.cnblogs.com/zhenghongxin/p/5566500.html

六、使用工具

extundelete工具仅可以恢复EXT类型的文件,无法恢复CentOS 7系统默认采用xfs类型的文件。针对xfs文件系统目前也没有比较成熟的文件恢复工具,所以建议提前做好数据备份,以避免数据丢失。

xfs类型的文件可使用xfsdumpxfsrestore工具进行备份恢复。若系统中未安装xfsdump与xfsrestore工具,可以通过yum install -y xfsdump命令安装。xfsdump按照inode顺序备份一个xfs文件系统。

文件删除原理简述

删除一个文件,实际上并不清除inode节点和block的数据,只是在这个文件的父目录里面的block中,删除这个文件的名字。Linux是通过Link的数量来控制文件删除的,只有当一个文件不存在任何Link的时候,这个文件才会被删除。

当然,这里所指的是彻底删除,即已经不能通过回收站找回的情况,比如使用rm -rf来删除数据。针对Linux下的EXT文件系统,可用的恢复工具有debugfs、ext3grep、extundelete等。 其中extundelete是一个开源的Linux数据恢复工具,支持ext3ext4文件系统,确认下文件系统 df -T;。

七、快照回滚

存储快照,是一种数据保护措施,可以对源数据进行一定程度的保护,通俗地讲,可以理解为----后悔药

创建时间轴

rm 误删除后,我们还能做些什么?

快照回滚原理

rm 误删除后,我们还能做些什么?
回滚操作的前提条件是,锁定源卷(暂停对待回滚的逻辑地址上的IO操作),然后通过查映射表,将快照卷上的对应数据回拷到源卷中;

更多相关信息可以查看公有云快照存储白皮书。

最后祝愿大家一生平安,远离背锅,

社区&读者交流

运维博客:逗哥架构师博客

  • QQ精品交流群
  • weinxin
  • 微信公众号
  • weinxin
广告也精彩
admin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: