点击上方“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 下如何避免从删库到跑路的悲剧?相关推荐

  1. Linux 下谨慎使用 rm,避免从删库到跑路的悲剧发生

    我们该如何再次避免删库"跑路"等事件的再次发生? 对此,在企业首先做好权限管理以及多重审核机制的同时,CSDN 也曾教诸多程序员们如何在 Linux 下谨慎使用 rm,避免从删库到 ...

  2. linux mysql恢复数据_删库不跑路详解MySQL数据恢复

    作者:程淇铭 出处:https://segmentfault.com/a/1190000020116271 日常工作中,总会有因手抖.写错条件.写错表名.错连生产库造成的误删库表和数据的事情发生,那么 ...

  3. 从删库到跑路,就是这么迅速!程序员为了报复同事删了公司数据库

    从删库到跑路,就是这么迅速!程序员为了报复同事删了公司数据库 一只有头发的程序猿 2019-08-23 09:38 做过互联网行业的都知道,数据库对公司是至关重要的,存储了大量的数据在里面,要是没有这 ...

  4. 告别从删库到跑路,linux回收站实现

    在linux 下操作时经常需要用到rm -rf,一招不慎轻者从删库到跑路,重者到跑路机会都没有.趁放假,试着结合实际生产环境,实现一下之前一直想的win回收站机制 实现思路 alias 给rm取别名, ...

  5. mysql高级-15-数据库备份与恢复(删库不跑路)

    mysql高级 前言 1.物理备份与逻辑备份 2.mysqldump实现逻辑备份 2.1 备份一个数据库 2.2 备份全部数据库 2.3 备份部分数据库 2.4 备份部分表 2.5 备份单表的部分数据 ...

  6. 手误【删库】 == 跑路,不存在的 ——删瓦辛格

    手误[删库] ==  跑路,不存在的  --删瓦辛格 前言 今天公司服务器的宝塔打不开,让我去修(ps:宝宝委屈) 打开找一下问题所在 问题: 发现是宝塔官方的cdn好像挂掉了 解决思路: (1)本地 ...

  7. MySQL从删库到跑路(2):大爷的SQL私房菜

    大爷的SQL私房菜 夜色如墨,月凉如水,一轮皎洁的圆月高高地挂在夜空之上,平日里鼾声如雷的室友今夜也停止了打鼾,如此静谧的夜晚,李有为却辗转难眠. 时间悄然来到凌晨一点半,他已经在窗边站了53分钟23 ...

  8. mysqldump全量恢复_删库不跑路-详解MySQL数据恢复

    日常工作中,总会有因手抖.写错条件.写错表名.错连生产库造成的误删库表和数据的事情发生,那么,如果连数据都恢复不了,还要什么 DBA. 相关文章 MySQL备份策略:https://segmentfa ...

  9. MySQL从删库到跑路(5):in and not

     "哈哈哈哈,看你这几天没来上课,我还以为你去拜什么高人为师了?原来就是这个烂番薯.臭鸟蛋的小卖部大爷学装逼,你逗我玩呢?哈哈哈哈哈"  "哈哈哈哈,一个老屌丝,一个小屌 ...

最新文章

  1. C_functions
  2. python压缩包怎么安装-详解python解压压缩包的五种方法
  3. 2015.08.15冒泡排序
  4. 。net面试题(2)
  5. (10)FPGA面试技能提升篇10(MATLAB)
  6. 在layoutsubviews中设置子控件的frame,保证执行alpha和frame动画流畅度
  7. python中文意思-请问在python中**是啥什么意思?
  8. html网页制作中的问题,网页制作中注意应用HTML标签的问题
  9. user reg.php,织梦member/reg_new.php SQL注入漏洞修复
  10. 用php怎么输出一首诗,如何用一首诗总结你的2018年?
  11. Stimulsoft Reports.Java 2022.2.3 Crack
  12. 交付管理——怎样与客户打交道
  13. 升级!鹏业云计价i20(西藏)软件V11.0.27版本
  14. 星鲨StarSharks游戏打金攻略和收益详解
  15. ftp文件服务器能记录操作吗,ftp服务器操作记录
  16. ANSYS学习5——单元的选择
  17. selenium3.141 +IE浏览器环境搭建(含驱动下载链接)
  18. 解决安装pytorch出现的问题
  19. Golang系列之整数类型基本介绍
  20. 百度云 x 秒懂百科 | 做高质量的知识短视频

热门文章

  1. sqlite 无符号32_《符号与传媒》2020年总目录
  2. python web 并发 性能_Python Web Server的性能测试
  3. 链表的中间节点--快慢指针
  4. 中国可擦除可编程只读存储器行业市场供需与战略研究报告
  5. python中的递归函数是什么_Python中的递归函数是什么
  6. dell服务器t330进入不了系统,Re: 戴尔T330服务器故障
  7. Google Health将被解散,谷歌为何折戟于医疗健康?
  8. 有一个写代码很厉害的老板是怎样一种体验?
  9. 1 元购买 1000+ 册爆款电子书,错过再等一年!
  10. 用三张图看透 I/O,学习区分同异步阻塞