如何优雅地使用 rm 防止误删除?
IT 界的有一个老梗,一次某论坛的数据库管理员抱怨自己老板一直虐待他,结果他一气之下就删库跑路了......
于是...
据新华社北京 8 月 20 日电 ,北京一软件工程师徐某离职后因公司未能如期结清工资,便利用其在所设计的网站中安插的后门文件将网站源代码全部删除。记者 20 日从北京市丰台区人民法院获悉,徐某破坏计算机信息系统罪成立,获刑五年。
我在服务器维护的时候不小心执行了rm -rf命令......现在整台服务器被我删光了肿么办???
好吧,现在先来介绍一下rm。
rm -rf 的威力
rm是 linux 系统下删除文件的命令,-r代表删除这个下面的一切,一切的一切那种的一切。f表示不需要用户确认,直接执行。
通常这个命令都是指定文件夹用的,比如
rm -rf /home/test/
就是删除 /home/test/ 这个文件夹下面的所有东西。
但是如果后面的文件夹路径没有加对,
rm -rf /在服务器上也就意味着...
俗话说的好:常在河边走, 哪能不湿鞋。 那该怎么避免这种悲剧的发生呢?
如何避免再次跑路?
一个方案就是重定向rm命令以嫁接为mv命令, 相当于给 Linux 系统定制了一个回收站。
实现方式如下:
### 重定义rm命令 ###
# 定义回收站目录
trash_path='~/.trash'
# 判断 $trash_path 定义的文件是否存在,如果不存在,那么就创建 $trash_path.
if [ ! -d $trash_path ]; then
mkdir -p $trash_path
fi
# 定义别名:使用 rm 就调用 trash
alias rm=trash
# 使用 rl 就调用 'ls ~/.trash'
# 如果更改上面的回收站目录这里的目录也需要修改
alias rl='ls ~/.trash'
# 使用 unrm 就调用 restorefile,需要在删除目录的父目录下执行
alias unrm=restorefile
# 使用 rmtrash 就调用 claearteash
alias rmtrash=cleartrash
# 恢复文件的函数
restorefile()
{
mv -i ~/.trash/$@ ./
}
# 删除文件的函数
trash()
{
mv $@ ~/.trash/
}
# 清空回收站的函数
cleartrash()
{
read -p 确定要清空回收站吗?[y/n] confirm
[ $confirm == 'y' ] || [ $confirm == 'Y' ] /bin/rm -rf ~/.trash/*
}
最后将上述脚本写入/etc/bashrc,并立即执行命令source /etc/bashrc即刻生效。
使用
这个脚本定义了几个命令:
rl:查看回收站下的文件
unrm 文件名或目录:恢复到当前的路径下
rmtrash:清空回收站,不过会友好提示。执行 rm 不会真正删除,而是使用 mv 移动到我们指定的回收站。
实在真的想删除可以/bin/rm来进行删除。
另外,需要注意的时,之前rm指令的一些参数可能不再使用,因为rm现在其实是mv了。
# touch hoxistest
# touch 1
# mkdir haha
# ls
1 haha hoxistest
# rm 1
# ls
haha hoxistest
# 查看回收站文件
# rl
1 myftp1
# 恢复已删除文件
# unrm 1
[root@CESHI-CLM-10-254-4-48 test]# ls
1 haha hoxistest
# rm haha/
# rm hoxistest
# rl
haha hoxistest
# 情况回收站
# rmtrash
确定要清空回收站吗?[y/n]y
# rl
效果看着应该还可以吧。
例行总结
看着是还可以,但是也有一些问题,比如删除文件不能重名,若重名了会提示你是否进行覆盖。那就需要再进行特殊处理了,比如删除时加个时间戳什么的,有兴趣的动手实现下吧。
如何优雅地使用 rm 防止误删除?的更多相关文章
- 高性能Linux服务器 第6章 ext3文件系统反删除利器ext3grep extundelete工具恢复rm -rf 误删除的文件
高性能Linux服务器 第6章 ext3文件系统反删除利器ext3grep extundelete工具恢复rm -rf 误删除的文件 只能用于ext3文件系统!!!!!!!高俊峰(高性能Linux ...
- 下厨房6月26日数据丢失事故总结 MYSQL主分区被rm 命令误删除
下厨房6月26日数据丢失事故总结 MYSQL主分区被rm 命令误删除 http://tech.xiachufang.com/?p=18 在6月26日凌晨12点左右,我们在做线上数据库的备库时,误将线上 ...
- 使用 trash-cli 逃出 rm 命令误删除重要文件的阴影
今天是一个难忘的日子,当时本来想清除我们公司网站cms目录下面一些cdn推送网页后残留的垃圾文件,结果在执行rm -rf conten* 时打成了rm -rf conten *结果就悲剧了.cms目录 ...
- [rm] Linux 防止"rm -rf /" 误删除
一.缘由: 最近看到这则新闻,很是悲伤,因为我最近也在用ansible:然而这一错误源自Ansible上糟糕的代码设计,这款Linux实用工具被用于在多台不同服务器上自动执行脚本. 开发者解释到,实际 ...
- Linux中如何恢复rm命令误删除的文件之extundelete编译安装及使用
1.下载extundelete包,安装依赖 我用的是Centos系统,在安装extundelete之前需要安装e2fsprogs,e2fsprogs-libs,e2fsprogs-devel. yum ...
- 使用trash-cli防止rm -rf 误删除带来的灾难(“事前”非“事后”)
trash-cli是一个使用 python 开发的软件包,包含 trash-put.restore-trash.trash-list.trash-empty.trash-rm等命令,我们可以通过这写命 ...
- Linux防止“rm -rf /”误删除
说明:不解释了,运维应该在每台服务器都去配置这个问题以减少灾难的发生 方法: 1.safe-rm safe-rm是一个开源软件用来替代不太安全的rm,可以在/etc/safe-rm.conf中配置路径 ...
- linux下修改rm命令防止误删除
前言:相信很多朋友都遇到过在linux下用rm命令误删除文件的时候,此刻的心中仿佛有无数的羊驼在奔腾.那么怎么防止这种情况发生呢?当然是有方法的,我们可以写一个shell脚本,改变一下rm命令的作用. ...
- 用extundelete恢复rm -rf删的文件
“慎用rm -rf命令,除非你知道此命令带来的后果.”这是一条Linux用户守则,虽然大多数用户都明白这条语句的含义,但是我觉得还需要完善一下,为这条语句加 上一个使用前提:在你确认自己拥有清醒头脑, ...
随机推荐
- 服务器初识、linux安装、linux初识
电脑硬件 电源 既然是人体的心脏,保障电源供应,就需要质量好的电源,生产环境中单个核心服务器最好是双电源AB线路. 一个接220V电路,一个可能接蓄电池UPS(不间断电源) cpu 常见品牌:Inte ...
- 由link和@import的区别引发的CSS渲染杂谈
我们都知道,外部引入 CSS 有2种方式,link标签和@import. 它们有何本质区别,有何使用建议,在考察外部引入 CSS 这部分内容时,经常被提起. 如今,很多学者本着知其然不欲知其所以然的学 ...
- 基于stm32CubeMX和keil5的stm32f103学习编程
0. 准备 先用st-link连接stm32核心板与PC,用于烧录 St-link Stm32 3.3V 3.3V GND GND SWDIO DIO SWCLK DCLK 再用USB串口 ...
- Docker中安装配置Oracle数据库
本文使用的OS是Ubuntu([16.04.1_server][1])[注:Ubuntu是安装在vmware虚拟机上的]. 其他的Oracle连接工具:[sqldeveloper-4.1.5.21.7 ...
- Jmeter(三)断言和关联
Jmeter断言 断言是什么呢,它是用来检查返回结果对不对的.用来验证结果是否正确,如果正确的话,就代表这个请求的返回是正确的,如果没有的话就代表这个请求的结果和我们预期的不一致,这样我们就可以通过断 ...
- python logging模块介绍
1.日志级别 日志一共分成5个等级,从低到高分别是:DEBUG INFO WARNING ERROR CRITICAL. DEBUG:详细的信息,通常只出现在诊断问题上 INFO:确认一切按预期运行 ...
- 关于softnet的加密硬件狗 也就是所谓的赛孚耐
SuperDog-R-2.2.1.iso 上面那个文件就是光盘里面的东西.你买了他们的产品 自然后带着这个玩意. 按照默认路径安装一下. 安装完毕如下图:
- JDK环境变量配置目录jre,jvm
类路径 :CLASSPATH= .;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar JDK的路径:JAVA_HOME = C:/Program F ...
- Spark SQL慕课网日志分析(1)--系列软件(单机)安装配置使用
来源: 慕课网 Spark SQL慕课网日志分析_大数据实战 目标: spark系列软件的伪分布式的安装.配置.编译 spark的使用 系统: mac 10.13.3 /ubuntu 16.06,两个 ...
- Java并发包中线程池的种类和特点介绍
Java并发包提供了包括原子量.并发集合.同步器.可重入锁.线程池等强大工具这里学习一下线程池的种类和特性介绍. 如果每项任务都分配一个线程,当任务特别多的时候,可能会超出系统承载能力.而且线程的创建 ...