让rm–rf 不那么危险

来源:互联网 发布:java string 字符集 编辑:程序博客网 时间:2024/03/29 16:34
命令敲得多了,常在河边走,难免会湿鞋”

前几天,一手误,敲错了命令,把在线的ORACLE数据文件给rm -rf掉了,当时大脑翁的一下,彻底蒙了,10分钟内我什么也没有坐,让自己的情绪平和下来。想了下要怎么办,还好数据库是做了定时rman备份,直接将所有的数据库文件进行了restore和recover,索性比较顺利,如果不是备份的数据库文件被删除,那可能就得用到ext3grep工具来做恢复了。

通过这次的失误,总结血的教训:

1.再次验证rm是极其危险,小心,三思,或者直接将命令改写掉

2.所有的备份必须测试有效,能够快捷恢复

3.备份是一个长期的过程

首先,搞个回收站
进入用户目录下,在 .bashrc或者.bash_profile加入如下内容

[root@db01 bak]# ll?? 8drwxr-xr-x 2 root root 4096 11-15 11:42 memdrwxr-xr-x 2 root root 4096 11-15 11:42 prudent-rw-r--r-- 1 root root 0 11-15 11:42 prudent.log[root@db01 bak]# rm *[root@db01 bak]# ls[root@db01 bak]# unrm mem[root@db01 bak]# unrm prudent[root@db01 bak]# cleartrashclear sure?[n]y-bash: /usr/bin/rm: ?????????[root@db01 bak]# unrm prudent.log[root@db01 bak]# ll?? 8drwxr-xr-x 2 root root 4096 11-15 11:42 memdrwxr-xr-x 2 root root 4096 11-15 11:42 prudent-rw-r--r-- 1 root root 0 11-15 11:42 prudent.log[root@db01 bak]#

同时在.bashrc中再添加如下函数,用来删除错误后可以直接通过回收站恢复:

cleartrash(){read -p "clear sure?[n]" confirm[ $confirm == 'y' ] || [ $confirm == 'Y' ] && /usr/bin/rm -rf ~/.trash/*}

将如上代码添加好后,重新登录用户后生效。
注:

rm 就相当于执行mv了,删除的文件会在.trash中出现

此时已经木有rm -rf了

通过unrm filename,则可以经删除的文件恢复。

通过 cleartrash,则清空回收站,从此不可再恢复。

egg:

[root@db01 bak]# ll                                                             –目录下是有两个目录和一个文件
?? 8
drwxr-xr-x 2 root root 4096 11-15 11:42 mem
drwxr-xr-x 2 root root 4096 11-15 11:42 prudent
-rw-r–r– 1 root root    0 11-15 11:42 prudent.log

[root@db01 bak]# rm *                                                  —将所有文件删除后目录为空
[root@db01 bak]# ls

[root@db01 bak]# unrm mem                                       —开始做数据恢复
[root@db01 bak]# unrm prudent
[root@db01 bak]# unrm prudent.log

[root@db01 bak]# ll                                                        —恢复完成后数据回来了。
?? 8
drwxr-xr-x 2 root root 4096 11-15 11:42 mem
drwxr-xr-x 2 root root 4096 11-15 11:42 prudent
-rw-r–r– 1 root root    0 11-15 11:42 prudent.log
[root@db01 bak]#

原创粉丝点击