作者
hoxis
责编
郭芮
IT界的有一个老梗,一次某论坛的数据库管理员抱怨自己老板一直虐待他,结果他一气之下就删库跑路了……
此前也曾有新闻报道,北京一软件工程师离职后因公司未能如期结清工资,便利用其在所设计的网站中安插的后门文件将网站源代码全部删除,结果因破坏计算机信息系统罪而获刑五年......
但如果我在服务器维护的时候不小心执行了rm-rf命令……现在整台服务器被我删光了肿么办???......所以程序员特别喜欢跑步锻炼。
好吧,言归正传。本文我们来讨论下,程序员如何优雅地防止数据误删。现在先来介绍一下rm。
rm是linux系统下删除文件的命令,-r代表删除这个下面的一切,一切的一切那种的一切。f表示不需要用户确认,直接执行。
通常这个命令都是指定文件夹用的,比如:
rm-rf/home/test/
就是删除/home/test/这个文件夹下面的所有东西。
但是如果后面的文件夹路径没有加对,rm-rf/在服务器上也就意味着…
解脱了......
俗话说的好:常在河边走,哪能不湿鞋。那该怎么避免这种悲剧的发生呢?
一个方案就是重定向rm命令以嫁接为mv命令,相当于给Linux系统定制了一个回收站。
实现方式如下:
最后将上述脚本写入/etc/bashrc,并立即执行命令source/etc/bashrc即刻生效。
这个脚本定义了几个命令:
rl:查看回收站下的文件;unrm文件名或目录:恢复到当前的路径下;rmtrash:清空回收站,不过会友好提示。执行rm不会真正删除,而是使用mv移动到我们指定的回收站。实在真的想删除可以/bin/rm来进行删除。另外,需要注意的时,之前rm指令的一些参数可能不再使用,因为rm现在其实是mv了。
使用示例:
效果看着应该还可以吧。
看着是还可以,但是也有一些问题,比如删除文件不能重名,若重名了会提示你是否进行覆盖。那就需要再进行特殊处理了,比如删除时加个时间戳什么的,有兴趣的动手实现下吧。
作者:不正经程序员,现在是一名小小的开发工程师,工作主要用Java、Python,平时除了喜欢钻研专业技术外,业余也会鼓捣下程序员周边,比如读书、效率工具、理财等等等等。欢迎