让rm–rf 不那么危险

简介: “命令敲得多了,常在河边走,难免会湿鞋” 前几天,一手误,敲错了命令,把在线的ORACLE数据文件给rm -rf掉了,当时大脑翁的一下,彻底蒙了,10分钟内我什么也没有坐,让自己的情绪平和下来。
命令敲得多了,常在河边走,难免会湿鞋”

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

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

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

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

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

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

[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]# cleartrash
clear sure?[n]y
-bash: /usr/bin/rm: ?????????
[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]#

同时在.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]#

目录
相关文章
|
JavaScript 前端开发 开发者
深入理解Node.js中的事件循环和异步编程
【9月更文挑战第31天】本文旨在揭示Node.js背后的强大动力——事件循环机制,并探讨其如何支撑起整个异步编程模型。我们将深入浅出地分析事件循环的工作原理,以及它如何影响应用程序的性能和稳定性。通过直观的例子,我们会展示如何在实际应用中利用事件循环来构建高性能、响应迅速的应用。此外,我们还会讨论如何避免常见的陷阱,确保代码既优雅又高效。无论你是Node.js的新手还是经验丰富的开发者,本篇文章都将为你提供宝贵的洞察和实用技巧。
157 6
|
存储 监控 安全
安全防御之恶意代码与防护技术
恶意代码是指没有作用却会带来危险的代码。通常把未经授权便干扰或破坏计算机系统、网络功能的程序或代码(一组指令)称之为恶意程序。恶意程序包括计算机病毒、木马、蠕虫等。恶意代码的防范,不是单靠一种或几种技术就能解决的,而要靠技术、管理以及用户安全意识的共同防范,只有三者相结合才能最大程度地防止恶意代码对系统和用户信息的破坏。
615 0
|
XML Java Android开发
修改Android设备型号、版本号、去掉自定义版本显示
修改Android设备型号、版本号、去掉自定义版本显示
1943 0
|
存储 缓存 分布式计算
案例酷|吉林医保:新架构解决老问题
案例酷|吉林医保:新架构解决老问题
552 0
rm -rf / 真的能删除所有东西吗?
rm -rf / 真的能删除所有东西吗?
rm -rf / 真的能删除所有东西吗?
|
安全 Unix 程序员
程序员笑话常客:"rm -rf *" 和"rm -rf /*"的区别
"rm -rf *" 和 "rm -rf /*" 都经常出现在程序员的玩笑中,可他们的严重程度却是不一样的,一起来看看吧
8236 0
|
存储 缓存 安全
volatile(一)
volatile 这个关键字大家都不陌生,这个关键字一般通常用于并发编程中,是 Java 虚拟机提供的轻量化同步机制,你可能知道 volatile 是干啥的,但是你未必能够清晰明了的知道 volatile 的实现机制,以及 volatile 解决了什么问题,这篇文章我就来带大家解析一波。
volatile(一)
|
网络协议 关系型数据库 MySQL
整理常用Linux命令以及软件安装方式(附mysql安装执行脚本)
进入平台的第一篇文章,试试水,于是决定将常用的Linux命令进行相应的整理,并分享给大家进行参考。
544 0
|
弹性计算
ECS使用体验
使用阿里云 连接 我的笔记本和实验室服务器
ECS使用体验