专栏首页Linyb极客之路运维管理之防止"rm -rf /" 误删除

运维管理之防止"rm -rf /" 误删除

大概懂点linux的程序员都知道“rm -rf /”意味着擦除根路径“/”下挂载的所有内容而无需询问。以前一个主管说过,在你不充分了解某个工具的原理的时候,不要太过相信依赖他。哪怕自己去写个简陋的,可以看到源码,也是比较靠谱的。深信不疑!

一、如何防止"rm -rf /" 误删除

为了避免误删根目录,或者重要的文件,整理了以下方法:

1、safe-rm

safe-rm 是一个开源软件用来替代不太安全的rm,可以在/etc/safe-rm.conf中配置路径黑名单,定义哪些不能被safe-rm删除。

可以将 safe-rm 更名为 rm 并放在 $PATH 中比 原rm 程序靠前的位置。一些脚本中使用完全路径/bin/rm则不会受此影响。

$ rm -rf /etc/
safe-rm: skipping /etc/

官方地址:http://freecode.com/projects/safe-rm,ubuntu可以直接apt-get安装,centos要下载源码安装。

2、建立回收站机制

  它并不真正执行删除操作,而是将文件移动到一个特定目录,可以设置定时清除回收站,或者在回收站里面的文件大小达到一定容量时(或者用时间做判断)执行删除操作以腾出空间。

可以写个shell脚本替换rm命令,或者在需要删除文件的时候使用mv命令将文件移动到回收站。  

1) 在/home/username/ 目录下新建一个目录,命名为:.trash

2)在/home/username/tools/目录下,新建一个shell文件,命名为: remove.sh

TRASH_DIR="/home/username/.trash"  

for i in $*; do  
    STAMP=`date +%s`  
    fileName=`basename $i`  
    mv $i $TRASH_DIR/$fileName.$STAMP  
done

3)修改~/.bashrc, 增加一行

alias rm="sh /home/username/tools/remove.sh"

用我们自建的remove.sh替代rm命令

4)设置crontab,定期清空垃圾箱,如:

0 0 * * * rm -rf /home/username/.trash/*

每天0点清空垃圾箱

5)source ~/.bashrc 使替换立即生效

3、注意脚本中rm -rf 变量的使用

  在脚本尽量不要使用 rm -rf $FOO/, 请使用 rm -rf $FOO;另外删除尽量不要写相对路径,不要带变量。

4、根文件系统设置只读挂载

noauto,ro

5、各种备份

  可以异地远程备份重要的数据,采用dump的增量备份机制,LVM快照,虚拟化环境中的快照、raid5等等。

附录:How do I prevent accidental rm -rf /*?

二、“rm -rf /”将数据删除怎么办?

对于linux 很多人都认为将用root权限将系统“rm -rf /”整个盘的数据将会丢失,首先请不要紧张不要对数据盘执行任何操作。如果命令正在执行请立即停止 Ctrl+c。执行“rm -rf /” 后整个系统将会逐步从根目录按照字母表表的先后顺序删除。

然后先思考下能不能跑路,如果没法跑路,就继续接着往下看吧。

执行“rm -rf /”后

  1. 立即停机,不要指望能够进入以前的系统。千万千万不要重新安装系统后再试图用软件恢复,那个时候不管用任何方式都是徒劳,切记切记!!
  2. 如果系统在本地,立即将磁盘取出,挂载到新服务器。如果在云盘,联系服务商将将系统(损坏了的系统)镜像(等同于拆下了硬盘), 然后通常云服务器都可以再将损坏了的系统进行挂载。

本文分享自微信公众号 - Linyb极客之路(gh_c420b2cf6b47),作者:linyb极客之路

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-04-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 防止“rm-rf/”误删除的5种方法

    到周四了,大家好啊,在raksmart服务器Linux系统下防止“rm -rf /”误删除,不解释了,运维应该在每台服务器都去配置这个问题以减少灾难的发生,下面...

    企鹅号小编
  • Linux Shell从入门到删除根目录跑路指南

    shell 作为一门 linux 下使用广泛的系统语言,语法简单,上手容易,但是想要用好,少犯错误,也不是那么容易的一件事,可谓虽是居家旅行之良药,但也是杀人灭...

    小小科
  • 使用trash-cli防止rm -rf 误删除带来的灾难(“事前”非“事后”)

    今天是一个难忘的日子,当时本来想清除主机上面data目录下的mysql8.0相关的数据文件的,进入mysql8.0的数据文件所在路径下,结果在执行rm -rf ...

    SEian.G
  • Linux Shell 从入门到删除根目录跑路指南

    shell 作为一门 linux 下使用广泛的系统语言,语法简单,上手容易,但是想要用好,少犯错误,也不是那么容易的一件事,可谓虽是居家旅行之良药,但也是杀人灭...

    用户1177713
  • Linux Shell 从入门到删除根目录跑路指南

    shell 作为一门 linux 下使用广泛的系统语言,语法简单,上手容易,但是想要用好,少犯错误,也不是那么容易的一件事,可谓虽是居家旅行之良药,但也是杀人灭...

    用户6543014
  • 需要谨慎使用的几个Linux命令

    运维人员经常接触的 Linux 系统比较多,在 Linux 下的管理与操作通常都是通过命令行的方式对服务器进行操作,为了操作安全,有些命令的危害是特别大的,需要...

    信安之路
  • Linux需要谨慎使用的几个命令

    运维人员经常接触的Linux系统比较多,在Linux下的管理与操作通常都是通过命令行的方式对服务器进行操作,为了操作安全,有些命令的危害是特别大的,需要谨慎使用...

    信安之路
  • Linux Shell从入门到删除根目录跑路指南

    shell 作为一门 linux 下使用广泛的系统语言,语法简单,上手容易,但是想要用好,少犯错误,也不是那么容易的一件事,可谓虽是居家旅行之良药,但也是杀人灭...

    三哥
  • 我的linux运维日记,比较下学习与工作。

    从事运维一年半,遇到过各式各样的问题,数据丢失,网站挂马,误删数据库文件,黑客攻击等各类问题,今天想简单整理一下,主要有以下几点: 1.线上操作规范 测试使用 ...

    小小科

扫码关注云+社区

领取腾讯云代金券