就在几天前,农历2019年的第一起删库跑路事件伴随着新年的爆竹声粗现了。
长图预警
对于一个程序员(尤其是负责运维开发的程序员)来说,“删库跑路”基本跟“粮仓着火”一个性质,都能让人在极度的刺激中打出一波GG。
对于删库跑路,稍微有点资历的程序员都是谨慎谨慎再谨慎,生怕一个不小心把整个公司和自己的身家性命全赔了进去。
然而,每年总有那么几个初出茅庐,同时心地单纯的铁憨憨在前辈们的鼓动下将数据库连同自己的职业生涯一同删除掉。
而说到删库跑路,某个人人谈之色变的指令就不得不提。它就是:rm -rf /
同时,它也是让众多小白误入歧途的罪魁祸首。
那么,rm -rf /到底是什么东东呢?
在linux系统中,“/”的含义大概如下图。
/是目录层的分割与标识符,是选取和分隔文件的重要符号。
rm是linux系统中删除命令,-r则是指删除这个指令下面的一切。
一切的一切那种一切。
而-f指的是“就算文件属性为只读也可直接删除,无需确认”。因此-rf指令的作用是保证你能绕过多余的步骤顺利删除掉你想要删除的目录文件。
当然也不排除你不想删掉的那部分。
因为指令始终是人输入的,那就不可避免地会出现失误,比如/后面的变量出错导致通用语法无法成功在bash命令中插值,再比如你想输入rm -rf ./时少输入了一个“.”。一旦出现这样的失误,并且没有对被删除的数据进行事先的备份,那么后果就只能是:
这酸爽的感觉,简直就像是上(po)天(chan)了一样。
往小了说,rm -rf /只是一串常见的删除指令,用得好的话可以极大地方便日常数据管理,就算不小心误删了数据库也有事先的备份来做补救。
往大了说,如果操作失误,rm -rf /很可能会成为个人职业生涯甚至公司命运走向bad ending的导火索。
不巧的是,这样的bad ending几乎隔不了多久就会发生一次。
早在几年前,外国一个名叫Marco Marsala的男子就不小心通过rm -rf /指令将自己名下的主机托管公司推向了破产。
由于bash脚本中“rm -rf {foo}/{bar}”里面的“foo”和“bar”没能实现插值,运行时被认成了rm -rf/指令,导致该公司托管的1535名用户的数据信息被销毁。又因为该男子没有实现生产环境和备份环境的有效隔离,因此连备份档案都没有了。
去年4月,VPS 服务商 **Kuriko *因为员工误输入了rm -rf /(“*****”指目录下的所有文件)指令,导致宿主机上所有数据丢失。
作为赔偿,Kuriko对所有开通的月付用户补偿1自然月使用时长,对半年付用户补偿2自然月使用时长。
而直到现在,Kuriko的官网首页底部还张贴着删库事件的相关告示,可见影响力之大。
当然,删库的方法肯定不止rm-rf/一种,去年9月,顺丰的一个工程师在使用navicat-mysql客户端管理工具时因错选了RUSS数据库打算删除R执行的 SQL,但因为没注意到光标回跳到RUSS库的实例上就直接回车,导致RUSS库直接被删除。实实在在地演示了一遍《MySQL 从删库到跑路》。
不过,最让网友们惦记的,仍然还是rm-rf/。
作为一名DBA,当你感到迷茫时,就执行rm -rf /*吧。你会发现世界一下子就安静了,整个人也轻松了。最重要的是你再也不用为工作而烦恼,可以充足的时间去远方旅游,因为此刻你的脑子里想的肯定不是工作......
而是跑路。
不想去旅游的话,千万要记得备份哦。
网友评论