程序员,Linux 下如何避免从删库到跑路的悲剧?
点击上方“CSDN”,选择“置顶公众号”
关键时刻,第一时间送达!
作者简介:刘晨,网名 bisal,Oracle 技术爱好者,CSDN 和 ITPub 专家博主,拥有 Oracle 10g/11g OCP、Oracle 11g OCM、EXIN DevOps Master、SCJP 等国际认证,Oracle YEP 和 OCMU 成员,目前就职于一家央企,担任运维经理,负责某核心系统应用运维。CSDN 博客:https://blog.csdn.net/bisal
本文经授权转自作者个人公众号「bisal 的个人杂货铺」。
Linux 下有些指令非常重要,或者说非常危险,rm 就是其中之一,无论跟什么参数,需要的是谨慎的操作,以下就是个真实的教训。
1. vi 编辑文件的时候,需要执行":w"退出,但是 w 和~的键位非常近,输入":w ~"指令,于是当前路径,创建了一个名称"~"文件。
-rw-r--r--. 1 oracle oinstall 2 Feb 1 01:10 ~
2. 删除文件,执行 rm 指令:
$ rm ~
回车下来,一直 hang,以为出现问题了,于是执行 Ctrl+C。
3. 一会在看用户家目录,发现原来存储的文件,怎么找不着了?开始以为有人误删除了,于是使用 last,查看历史登录的用户信息,发现只有自己。
4. 使用 history 看下历史执行的指令:
...210 rm ~211 ls -rlht212 rm -rf ~...
5. 此时恍然大悟,忘记了"~"的含义:
$ echo ~/home/user
其实"~"代表了用户的家目录,之所以在第二步出现了 hang,因为家目录下有文件,删除需要时间,如果文件较小,执行 rm 可以立即看见提示:
$ rm ~rm: cannot remove `/home/user': Is a directory
由于~代表家目录,因此是一个文件夹不是文件,所以直接使用 rm 提示错误,需要-rf 参数,此时用户家目录下未被删除:
$ rm -rf ~rm: cannot remove `/home/user': Permission denied
此时虽然会提示错误,但当前用户家目录下,所有的文件均已被删除,只是因为权限不能删除/home/user,如果此时用的 root,我猜就可以执行。
因此可以任意执行指令 rm,是非常危险的一件事情,极有可能让你误操作,甚至未反应过来,有什么方法可以避免?
一个是要建立这种意识,就是执行这种特殊指令前,不要急于回车,静下来一两秒,再做操作,但说起来容易,做起来难,不是一朝一夕,就能建立。
另一个是可以通过技术手段,降低执行 rm 的误操作程度,网上有不少方法,其中一种方法,就是建立类似回收站机制。
1. 用户家目录下,建立隐藏文件夹.trash:
$ mkdir .trash
2. 创建 remove.sh 脚本,实现逻辑简单:
$ vi remove.sh//定义文件夹目录.trashTRASH_DIR="/home/user/.trash"for i in $*; do //定义秒时间戳 STAMP=`date +%s` //得到文件名称(非文件夹),参考man basename fileName=`basename $i` //将输入的参数,对应文件mv至.trash目录,文件后缀,为当前的时间戳 mv $i $TRASH_DIR/$fileName.$STAMPdone
3. 修改.bashrc,增加一行:
# User specific aliases and functionsalias rm="sh /home/user/tool/remove.sh"
即设置一个 rm 同名 alias。
4. 此时执行 rm:
$ rm 1
进入隐藏文件夹:
$ cd .trash
检索当前路径:
$ ls1.1517500702
其实执行 rm 1,只是将文件 1 执行 mv,存储于隐藏目录.trash,并用时间戳改名,需要的时候可以直接恢复,实现回收站机制。
5. 当然目录.trash,需要控制容量,一种方法,是可以写个定时任务,要是智能一些,就可以判断文件夹的容量,超过阈值,就执行清理操作,要是粗暴一些,可以每日定时执行清理,例如:
0 0 * * * rm -rf /home/user/.trash/*
每日 00:00 定时执行,清空隐藏目录.trash。
对于 Linux 下的一些重要指令,首先要有敬畏,意识上建立起谨慎的态度,其次可以使用一些技术手段,限制这些误操作,方法可能不少,重要的是,找到符合自己的需求,达到避免误操作的目的,这是需要积累的经验。
————— 推荐阅读 —————
点击图片即可阅读
程序员,Linux 下如何避免从删库到跑路的悲剧?相关推荐
- Linux 下谨慎使用 rm,避免从删库到跑路的悲剧发生
我们该如何再次避免删库"跑路"等事件的再次发生? 对此,在企业首先做好权限管理以及多重审核机制的同时,CSDN 也曾教诸多程序员们如何在 Linux 下谨慎使用 rm,避免从删库到 ...
- linux mysql恢复数据_删库不跑路详解MySQL数据恢复
作者:程淇铭 出处:https://segmentfault.com/a/1190000020116271 日常工作中,总会有因手抖.写错条件.写错表名.错连生产库造成的误删库表和数据的事情发生,那么 ...
- 从删库到跑路,就是这么迅速!程序员为了报复同事删了公司数据库
从删库到跑路,就是这么迅速!程序员为了报复同事删了公司数据库 一只有头发的程序猿 2019-08-23 09:38 做过互联网行业的都知道,数据库对公司是至关重要的,存储了大量的数据在里面,要是没有这 ...
- 告别从删库到跑路,linux回收站实现
在linux 下操作时经常需要用到rm -rf,一招不慎轻者从删库到跑路,重者到跑路机会都没有.趁放假,试着结合实际生产环境,实现一下之前一直想的win回收站机制 实现思路 alias 给rm取别名, ...
- mysql高级-15-数据库备份与恢复(删库不跑路)
mysql高级 前言 1.物理备份与逻辑备份 2.mysqldump实现逻辑备份 2.1 备份一个数据库 2.2 备份全部数据库 2.3 备份部分数据库 2.4 备份部分表 2.5 备份单表的部分数据 ...
- 手误【删库】 == 跑路,不存在的 ——删瓦辛格
手误[删库] == 跑路,不存在的 --删瓦辛格 前言 今天公司服务器的宝塔打不开,让我去修(ps:宝宝委屈) 打开找一下问题所在 问题: 发现是宝塔官方的cdn好像挂掉了 解决思路: (1)本地 ...
- MySQL从删库到跑路(2):大爷的SQL私房菜
大爷的SQL私房菜 夜色如墨,月凉如水,一轮皎洁的圆月高高地挂在夜空之上,平日里鼾声如雷的室友今夜也停止了打鼾,如此静谧的夜晚,李有为却辗转难眠. 时间悄然来到凌晨一点半,他已经在窗边站了53分钟23 ...
- mysqldump全量恢复_删库不跑路-详解MySQL数据恢复
日常工作中,总会有因手抖.写错条件.写错表名.错连生产库造成的误删库表和数据的事情发生,那么,如果连数据都恢复不了,还要什么 DBA. 相关文章 MySQL备份策略:https://segmentfa ...
- MySQL从删库到跑路(5):in and not
"哈哈哈哈,看你这几天没来上课,我还以为你去拜什么高人为师了?原来就是这个烂番薯.臭鸟蛋的小卖部大爷学装逼,你逗我玩呢?哈哈哈哈哈" "哈哈哈哈,一个老屌丝,一个小屌 ...
最新文章
- C_functions
- python压缩包怎么安装-详解python解压压缩包的五种方法
- 2015.08.15冒泡排序
- 。net面试题(2)
- (10)FPGA面试技能提升篇10(MATLAB)
- 在layoutsubviews中设置子控件的frame,保证执行alpha和frame动画流畅度
- python中文意思-请问在python中**是啥什么意思?
- html网页制作中的问题,网页制作中注意应用HTML标签的问题
- user reg.php,织梦member/reg_new.php SQL注入漏洞修复
- 用php怎么输出一首诗,如何用一首诗总结你的2018年?
- Stimulsoft Reports.Java 2022.2.3 Crack
- 交付管理——怎样与客户打交道
- 升级!鹏业云计价i20(西藏)软件V11.0.27版本
- 星鲨StarSharks游戏打金攻略和收益详解
- ftp文件服务器能记录操作吗,ftp服务器操作记录
- ANSYS学习5——单元的选择
- selenium3.141 +IE浏览器环境搭建(含驱动下载链接)
- 解决安装pytorch出现的问题
- Golang系列之整数类型基本介绍
- 百度云 x 秒懂百科 | 做高质量的知识短视频
热门文章
- sqlite 无符号32_《符号与传媒》2020年总目录
- python web 并发 性能_Python Web Server的性能测试
- 链表的中间节点--快慢指针
- 中国可擦除可编程只读存储器行业市场供需与战略研究报告
- python中的递归函数是什么_Python中的递归函数是什么
- dell服务器t330进入不了系统,Re: 戴尔T330服务器故障
- Google Health将被解散,谷歌为何折戟于医疗健康?
- 有一个写代码很厉害的老板是怎样一种体验?
- 1 元购买 1000+ 册爆款电子书,错过再等一年!
- 用三张图看透 I/O,学习区分同异步阻塞