引以为戒!!!

一、缘由:

最近看到这则新闻,很是悲伤,因为我最近也在用ansible;然而这一错误源自Ansible上糟糕的代码设计,这款Linux实用工具被用于在多台不同服务器上自动执行脚本。

开发者解释到,实际参数应该是“rm -rf {foo}/{bar}”,foo和bar是脚本中动态传递的两个变量。然而由于变量处理出错,通用语法未能成功在bash命令中插值,所以最终指令就变成了可怕的“rm -rf /”。

“rm -rf /”意味着擦除根路径“/”下挂载的所有内容而无需询问。

以前一个主管说过,在你不充分了解某个工具的原理的时候,不要太过相信依赖他。哪怕自己去写个简陋的,可以看到源码,也是比较靠谱的。深信不疑!

二、解决办法:

为了避免误删根目录,或者重要的文件,整理了以下方法:

1、safe-rm

safe-rm 是一个开源软件用来替代不×××全的rm,可以在/etc/safe-rm.conf中配置路径黑名单,定义哪些不能被safe-rm删除。

可以将 safe-rm 更名为 rm 并放在 $PATH 中比 原rm 程序靠前的位置。一些脚本中使用完全路径/bin/rm则不会受此影响。

2、建立回收站机制

它并不真正执行删除操作,而是将文件移动到一个特定目录,可以设置定时清楚回收站,或者在回收站里面的文件大小达到一定容量时(或者用时间做判断)执行删除操作以腾出空间。

可以写个shell脚本替换rm命令,或者在需要删除文件的时候使用mv命令将文件移动到回收站。

1) 在/home/username/ 目录下新建一个目录,命名为:.trash

2)在/home/username/tools/目录下,新建一个shell文件,命名为: remove.sh

TRASH_DIR="/home/username/.trash"

for i in $*; do

STAMP=`date +%s`

fileName=`basename $i`

mv $i $TRASH_DIR/$fileName.$STAMP

done

3)修改~/.bashrc, 增加一行

alias rm="sh /home/username/tools/remove.sh"

用我们自建的remove.sh替代rm命令

4)设置crontab,定期清空垃圾箱,如:

0 0 rm -rf /home/username/.trash/

每天0点清空垃圾箱

5)source ~/.bashrc 使替换立即生效

3、注意脚本中rm -rf 变量的使用

在脚本尽量不要使用 rm -rf $FOO/, 请使用 rm -rf $FOO;另外删除尽量不要写相对路径,不要带变量。

4、根文件系统设置只读挂载

noauto,ro

5、各种备份

可以异地远程备份重要的数据,采用dump的增量备份机制,LVM快照,虚拟化环境中的快照、raid5等等。

Linux复制到home后自动删除,[rm] Linux 防止rm -rf / 误删除相关推荐

  1. Elasticsearch生命周期ILM若干时间后自动删除索引index

    Elasticsearch生命周期ILM若干时间后自动删除索引index (1)先手动在 数据 - 索引生命周期策略 里面 创建策略,假设这个策略名字叫 my-demo-test-policy.注意把 ...

  2. linux复制文件夹 实例,linux复制文件夹与文件实例介绍linux操作系统 -电脑资料

    本文章来介绍一下关于linux复制文件夹与文件的一些基础用法,有需要学习的朋友可参考一下本文章, CP命令 格式: CP [选项] 源文件或目录  目的文件或目录 选项说明:-b 同名,备分原来的文件 ...

  3. linux改完权限后 自动恢复,linux文件或目录权限修改后如何恢复(备份了权限就能恢复)...

    操作系统 RHEL5 如果你在linux上执行了如下操作 chmod -R 777 / 或者 chmod -R 700 / 那么恭喜你,你的系统即将崩溃,重启之后,你进不了图形界面,而且很多服务都起不 ...

  4. linux系统安装报firstboot错,自动安装部署LINUX

    自动安装部署Linux ----吾情灬小屁孩 QQ:8651060 下面为大家做一个可以无人值守安装rHat6. 需要:两台电脑.一台做为服务器,一台客户机. YUM源(安装包) 我们需要安装以下几个 ...

  5. 在linux中的vi中的删除操作,linux中vi和vim操作

    一.简单介绍 vi 和 vim 类似于windows的文本编辑器 所有的Linux系统都会内置vi文本编辑器 vim可以看做是vi增强版,具有程序编辑能力,支持语法高亮,代码补全,编译及错误跳转等功能 ...

  6. putty远程登录linux有啥用,putty 自动远程登录linux

    在实际的开发和学习中我们会频繁的使用某些远程登录工具,通过网络登录到linux系统中进行程序编写和调试.Putty是比较流行的工具,但是在putty下每次链接到远端linux都要重新输入用户名和密码, ...

  7. 把Word的内容复制到Excel后自动分成多列

      有些时候我们将Word文档中的内容复制后粘贴到Excel表格中后,经常会出现同一行文字都显示在一列(一个单元格)的情况,比如一些信息需要分列显示才能更直观和便于数据处理,要如何才能实现将Word复 ...

  8. linux cp 目录不存在自动创建,关于linux:Linux技巧cp命令自动创建不存在的目录和只复制修改的文件...

    复制时主动创立不存在的子目录 在 Linux 中,能够应用 cp 命令的 --path 选项指定在复制的时候主动创立不存在的子目录. 例如执行上面的命令: $ cp --path java/com/s ...

  9. 如何实现Outlook 2010 下载邮件后自动删除服务器上的邮件

    outlook2010---文件---信息---账户设置---选中要设置的帐号---双击点选要设置的邮箱---其他设置---高级---在服务器上保留邮件的副本---14天后删除服务器上的邮件副本,修改 ...

  10. linux lp0设备,P1108打印机插入Linux设备USB口后自动reset

    我安装了一台字符界面的Linux操作系统,3.10的内核,在把HP1108型号打印机插入USB口后,dmesg看到如下信息: [20934.725387] usb 2-1.2: new high-sp ...

最新文章

  1. linux mint 13 input method of chinese
  2. vscode安装Remote -WSL插件连接本地的wsl
  3. 数据结构(二)--队列
  4. 普通高中生水平就能干好的编程到底是不是高科技?
  5. 听说下雨天,子序列和孤单的你更配哦~
  6. SAP License:SAP顾问你算哪根葱?
  7. 3D数学基础:图形与游戏开发
  8. 虚拟IP技术 ip地址漂移技术
  9. Redis中Pipeline的使用
  10. linux手机刷机包制作工具_安卓10刷机包
  11. html5网页制作的基本步骤,网页制作流程介绍
  12. 百趣生物受邀参加代谢组学及脂质组学质谱技术研讨会
  13. 如何查看Mac系统的位数
  14. VS2013MFC对话框工程学习笔记二 - 了结布局和一些基本的窗口组件
  15. 程序员面试阿里、腾讯、京东等大公司,这些套路你知道吗?
  16. 网易有道能否异军突起—网易押宝
  17. OC7141 PWM 调光的线性降压 LED 恒流驱动器
  18. ecg 幅度_心电图 (ECG) 与光电容积图 (PPG) 基本工作原理,如何测量?
  19. 专家详解华尔街区块链投资和其对比…
  20. 同一个C#程序引用了2个不同版本的同一个第三方DLL

热门文章

  1. 用字母表中的位置替换每个字母。
  2. JVM笔记——技术点汇总
  3. Codeforces Round #110 (Div. 2)
  4. nw.js桌面软件开发系列 第0.1节 HTML5和桌面软件开发的碰撞
  5. System.IO.Ports.SerialPort串口通信接收完整数据
  6. Lucene系列-分析器
  7. SharePoint 2010: Claims-based Authentication
  8. NLP技术基石:从N-gram统计语言模型到BERT预训练模型演变史概述
  9. 劝你别再闷头自学NLP了!!!请收下这套自然语言处理(NLP)算法学习路线!
  10. ACL Findings | 任务共舞,小样本场景下的多任务联合学习方法初探