0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

做最优秀的Linux运维工程师,从删库开始!

马哥Linux运维 ? 来源:YXQ ? 2019-06-05 17:44 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

shell 作为一门 linux 下使用广泛的系统语言,语法简单,上手容易,但是想要用好,少犯错误,也不是那么容易的一件事,可谓虽是居家旅行之良药,但也是杀人灭口之利器~

今天就来聊聊 linux 下一个常见的问题:如何避免误删目录。下文会详细的讲述不同的场景下误删目录,以及相应的解决方案。

1、变量为空导致误删文件

base_path=/usr/sbin

tmp_file=`cmd_invalid`

# rm -rf $base_path/$tmp_file

这种情况下如果 cmd 执行出错或者返回为空,后果将是灾难性的,那如何防范呢?

(1)利用 shell 的变量扩展功能,如果变量为空赋给默认值或者抛出异常退出脚本:

echo ${base_path:?var is empty}/${tmp_file:?var is empty}

-bash: tmp_file: var is empty

(2)人肉判断变量是否为空:

[[ ${tmp_file} == "" ]] && echo 1

1[[ -z ${tmp_file} ]] && echo 1

1

(3)如果变量未定义还可以开启 set 选项

# cat a.sh

set -u

b=

echo $b

echo $a

echo 1

# bash a.sh

a.sh: line 4: a: unbound variable

2、路径含有空格导致误删文件

史上最经典的要数下面这个bumblebee项目了,这个项目本来不出名,不过,程序在其安装脚本install.sh里的一个bug让这个项目一下子成了全世界最瞩目的项目。

那我们该如何防范这种问题呢?

(1)良好的编程习惯:变量加引号防止扩展

path="/usr/local /sbin"

# rm -rf $path

rm -rf "$path"

(2)对变量进行语义检查

比如检测是否含有空格等特殊字符,不通用,不推荐这么做

3、目录或文件含有特殊字符导致误删文件

ll

总用量 8

drwxrwxr-x 2 work work 4096 11月 24 18:57 '~'

-rw-rw-r-- 1 work work 34 11月 24 19:49 a.sh

# rm -rf ~

那我们该如何防范这种问题呢?

(1)良好的编程习惯:变量加引号防止扩展

rm -rf "~"

(2)如果不确定,删除之前 echo或 find一下,看变量被扩展成啥了

echo rm -rf "~"

rm -rf ~

echo rm -rf ~

rm -rf /home/work

4、cd 切换目录失败,导致文件被误删

cd ooxx_path_not_exsit

rm -rf *.exe

恭喜这种情况下你的当前目录下匹配文件都会被误删,那我们该如何防范这种问题呢?

(1)使用逻辑短路操作

cd path && rm -rf *.exe

(2)检测 path 是否存在

[[ -d ~ ]] && echo 1

1

5、终极解决方案

不要使用 root 操作系统资源,这样至少不会删除系统文件。

6、在登录 shell 下使用友好的提示符

友好的命令提示符能时刻提醒操作者当前在哪个路径下,避免错误的路径下操作文件。

上文到此就结束了,列举了一些常见的case和解决方案,希望能对大家有所启发。

最后我们来说说删库跑路的事儿:

IT界的一个老梗,一次某论坛的数据库管理员抱怨自己老板一直虐待他,结果他一气之下就删库跑路了……于是就有了从删库到跑路这个梗......

当删库成为一种时尚

6月初,位于荷兰海牙的一家云主机商verelox.com,一名前任管理员删光了该公司所有客户的数据,并且擦除了大多数服务器上面的内容,带来了巨大的损失。

2017-04-05,位于纽约的云服务商 Digital Ocean 遭遇了一次长达4小时56分钟的停机事故,事故的原因是主数据库被删除了(primary database had been deleted),由于配置错误,本应指向测试环境的任务被指向了生产环境,测试任务包含的环境初始化过程删除了主生产数据库。(不以规矩不成方圆:Digital Ocean也删除了他们的数据库)

2月11日,网络剪报服务商 -Instapaper 遭受了超过31小时的服务中断,声明需要一个星期的数据库恢复时间,然而经过10天的恢复,也仅仅恢复了6个星期的数据。(云服务真的靠谱吗? AWS 用户中断31小时仅恢复6周数据)

2月1日,除夕刚刚过完,荷兰的一个DBA在数据库复制过程中意外地删除了一个错误的服务器上的目录,删除了一个包含300GB的实时生产数据的文件夹。300G的数据库被删成4.5G,由于没有有效的备份,尝试了所有5个恢复工具都没有完成恢复。在丢失数据并恢复失败后,服务器彻底崩溃。五重备份无一有效,还有哪些 rm -rf 和GitLab类似的忧伤?

1月20日,大约一定是受到川普上任的影响,突如其来的服务器故障影响了一大批炉石玩家,恢复时间长,由于意外断电,导致数据库损坏,不得不通过游戏回档恢复数据库的使用。

而若操作者具有较高级别的权限,数据库面临的灾难则是巨大的。Lucchese前IT主管,在离职的时候收集了IT部门所有职工的用户名和密码然后伪装成一台办公室打印机创建了一个密码账号,并在其办公室内使用该账号进行了一系列的违规操作,给企业带来了严重的损失。Venzor后来被捕,并面临最高达10年的监禁生活以及25万美元的罚款。

在刚刚过去的7月,花旗银行的前员工伦农·雷·布朗,通过非法执行命令,删除了花旗银行的内部网络上10只核心路由器上的配置文件。结果引起的故障导致全国110个分行无法正常使用网络和电话系统,占到花旗银行所有分支机构总数的约90%。

手动删库简直太low,我都是脚本自动删

又不禁想起了Google曾经轰动一时的流水线删库事件,这可是团队作案哟,这么团结真的好吗?(时移世易:遵从既往经验致 1.5PB 数据删除,Google SRE是如何应对的?)

一个 Google Music 用户汇报某些之前播放正常的歌曲现在无法播放了。Google Music 的用户支持团队通知了工程师团队,这个问题被归类为流媒体播放问题进行调查。3 月 7 日,负责调查此事的工程师发现无法播放的歌曲的元数据中缺少了一个针对具体音频数据文件的指针,于是他就修复了这个歌曲的问题。

但是,Google 工程师经常喜欢深究问题,也引以为豪,于是他就继续在系统中查找可能存在的问题,当发现数据完整性损坏的真正原因时,他却差点吓出心脏病:这段数据是被某个保护隐私目的的数据删除流水线所删掉的。Google Music 的这个子系统的设计目标之一就是在尽可能短的时间内删除海量音频数据。

该流水线任务大概误删除了 60 万条音频文件,大概影响了 2.1 万用户.

没有删过库的Linux管理员,不是好的Linux运维工程师!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11535

    浏览量

    214859
  • 运维工程师
    +关注

    关注

    4

    文章

    39

    浏览量

    8392

原文标题:Linux Shell从入门到删除根目录跑路指南

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    三大核心网络设备的要点

    作为工程师,熟练掌握网络设备的管理和维护是构建稳定IT基础架构的关键。本文将深入探讨交换机、路由器和防火墙这三大核心网络设备的要点,
    的头像 发表于 07-22 16:35 ?229次阅读

    一文掌握Linux命令

    作为一名工程师,熟练掌握Linux命令是基本功中的基本功。无论是日常工作中的系统维护,还是面试时的技术考核,Linux命令都是绕不开的核
    的头像 发表于 07-22 15:23 ?127次阅读

    自动化工具Terraform和Ansible的区别

    在现代云原生时代,基础设施即代码(Infrastructure as Code,IaC)已成为工程师的核心技能。面对复杂的多云环境和日益增长的基础设施需求,传统的手动配置方式已无法满足快速、可靠
    的头像 发表于 07-09 09:59 ?437次阅读

    Linux网络管理的关键技术和最佳实践

    在大型互联网企业中,Linux网络管理是工程师的核心技能之一。面对海量服务器、复杂网络拓扑、高并发流量,
    的头像 发表于 07-09 09:53 ?265次阅读

    做了电子工程师之后,最好拍的视频出现了#硬件设计 #电子DIY #电子工程师

    电子工程师
    安泰小课堂
    发布于 :2025年06月24日 17:45:57

    物联网工程师为什么要学Linux

    物联网工程师需要掌握Linux的主要原因可以技术生态、开发需求、行业应用及就业竞争力四个角度来分析: 一、技术生态与行业适配性 1)嵌入式开发的主流平台 物联网设备往往基于嵌入式系统开发
    发表于 05-26 10:32

    一个优秀的射频测试工程师需要具备哪些技能?

    一个优秀的射频测试工程师需要具备哪些技能?在无线技术高速发展的今天,射频(RF)测试工程师是确保通信设备性能与用户体验的关键角色。复杂的调制方案到无处不在的干扰,
    的头像 发表于 05-16 10:08 ?658次阅读
    一个<b class='flag-5'>优秀</b>的射频测试<b class='flag-5'>工程师</b>需要具备哪些技能?

    问,成为硬件工程师需要几只手?#硬件工程师 #YXC晶振 #扬兴科技 #搞笑

    硬件工程师
    扬兴科技
    发布于 :2025年04月25日 17:15:37

    “设计到生产”的蜕变:abg欧博DFM如何让工程师们“轻松上阵”?

    小白也能快速上手。 当然,abg欧博DFM软件的好远不止这些,很多工程师都说“ 用过一次就再也回不去了 ”,现在根本离不开abg欧博DFM设计和生产前的检查。 数据显示,使用abg欧博DFM的工程师, 设计效率
    发表于 04-16 15:57

    硬件工程师:回答我!#回答我 #硬件工程师 #YXC晶振 #扬兴科技

    硬件工程师
    扬兴科技
    发布于 :2025年03月25日 18:46:59

    一招拿捏电子工程师#被AI拿捏了 #电子工程师 #电子电工

    电子工程师
    安泰小课堂
    发布于 :2025年03月25日 17:30:51

    为什么嵌入式驱动开发工程师可以拿高薪?

    为什么嵌入式驱动开发工程师可以拿高薪? 嵌入式驱动开发,属于需求量大、薪资断崖式升高的热门岗位,在市场的发展驱动下成为“风口”。市场的整体需求来看,嵌入式系统的应用随着5G、物联网、大数据、云
    发表于 01-07 16:56