如果有另外一份备份数据,他还会这么尴尬吗?
Marco Marsala是一家小型主机托管公司的老板,但是他最近遇到了一个天大的麻烦——由于脚本错误,他不慎删光了所有客户的数据。更糟糕的是,由于Bash脚本代码中包含了一行变量未定义的“rm -rf {foo}/{bar}”,连备份也连带着被干掉了——而在通常情况下,备份网络理应和正常的生产力基础设施隔离开的。
这一错误源自Ansible上糟糕的代码设计,这款Linux实用工具被用于在多台不同服务器上自动执行脚本。
开发者解释到,实际参数应该是“rm -rf {foo}/{bar}”,foo和bar是脚本中动态传递的两个变量。
然而由于变量处理出错,通用语法未能成功在bash命令中插值,所以最终指令就变成了可怕的“rm -rf /”。
“rm -rf/”意味着擦除根路径“/”下挂载的所有内容而无需询问。
鉴于Marsala运行着1535个集群,其本来是能够在数小时(至数日)内恢复的。但由于未能妥善实现生产环境和备份环境的隔离,备份档也全没了。
不得已之下,他只能上网发帖求救,然而没人能救得了他了。当然,也许最好的建议是给律师打个电话,那样或许还不至于赔得太惨。