来搜索这个问题的朋友们,大多是已经发生误删除动作了,笔者曾经 rm -rf ./*  .没有敲进去,变成rm -rf /*,然后灾难发生了,是公司的软件代码服务器,结果自然不用我说了......

本文两个目的,一是事后补救,二是未雨绸缪

1.如何恢复

可以搜索 extundelete会有相关博文介绍

https://blog.51cto.com/plong/1743705

2.如何避免

首先,习惯,要删除当前目录下所有东西 ,请使用 rm -rf * ,千万别rm -rf  ./*。再者就是工作及时提交到服务器。

然后,拿到一台新ubuntu电脑或者登录到unbuntu服务器上进行代码编辑编译等工作时,可进行如下动作保险:

a. 安装好extundelete,安装safe-rm,配置safe-rm config,把系统目录以及~/下.bashrc .vimrc等重要配置文件保护起来

b. 如果是服务器,给员工开辟账号,配置好权限,仅让账号读写自己的~/ 目录下的东西,其他一律禁止读写,有些员工有sudo权限,这条可能不能万无一失,看c

c.配置.bashrc 添加alias rm='safe-rm',使用safe-rm代替rm。

以上是使用safe-rm 代替rm,这样使得即使sudo也不能删除 safe-rm中配置不能删除的目录和文件

另外还可以在safe-rm的基础上来个脚本用来找回删除的文件:

写个脚本代替rm,脚本如下:

#!/bin/bash
d=`date +%Y%m%d%H%M`
read -p "Are you sure delete the file or directory $1? y|n:"  c
if [ $c == "y" ] || [ $c == "Y"]
thenmkdir /-PATH-/.$drsync -aR $1/   /-PATH-/.$d/usr/local/bin/safe-rm -rf $1
elif [ $c == "n"] || [ $c == "N"]
thenexit 0
elseecho "Please input y or n"
fi

注意:脚本中-PATH-为一处可读写目录,最好位于~/目录外面。

将脚本保存为 rm.sh,放置到~/目录外面的新建的tools目录下,然后在.bashrc中添加alais rm='/absolute-path/rm.sh'

这样不仅删除有提示,即使删除了的文件和文件夹可以在/-PATH-/下面找回来

更加简单办法就是:

在设置好系统的关键目录的权限之后 使用 trash代替rm,这样所有删除的东西都放到垃圾箱里(我没用过)

ubuntu环境下rm -rf误删除问题相关推荐

  1. UBUNTU环境下编译的openwrt

    UBUNTU环境下编译的openwrt 请执行这个命令以安装编译依赖包:sudo apt-get update 然后再输这个: sudo apt-get install gcc g++ binutil ...

  2. 如何抢救恢复 rm -rf 误删除的文件?

    Linux中有一种可怕的误操作 -- rm -rf 误删除文件.对于数据库而言,如果误删除了数据文件,而数据库进程还没挂掉的话,可以尝试抢救一下.注意误rm后千万不要去重启数据库.对于其他文件,下面方 ...

  3. Ubuntu 环境下交叉编译运行正点原子的程序

    Ubuntu 环境下交叉编译运行正点原子的程序 在校学生,求职过程中对方要求在Ubuntu环境下交叉编译stm32的程序,我觉得很有意思,因为之前就听说过可以在Linux环境下运行stm32的程序,因 ...

  4. Ubuntu环境下挂载新硬盘 --硬盘要挂载在某个文件夹下面

    Ubuntu环境下挂载新硬盘 Ubuntu环境下挂载新硬盘 可以参考这两个教程,在挂载的时候,下面的代码报错 sudo mount -t ext4 /dev/sdb /devdata 原因是硬盘要挂载 ...

  5. linux鼠标触摸屏应用程序,在Ubuntu环境下实现插入鼠标自动关闭触摸板

    本文将为你介绍在 Ubuntu 环境下也能实现插入鼠标自动关闭触摸板的功能. 如果你经常在笔记本上用鼠标,你就会对因为偶尔碰到触摸板而打断自己的操作而憋屈了.当你用外接鼠标的时候关闭触摸板就是一个很好 ...

  6. ubuntu环境下如何解决svn提交出现can‘t check path ‘/home/...‘

    在ubuntu环境下用svn提交代码出现这个错误 can't check path '/home/...' 因为我们提交有限制 我一开始是这样写的 svn commit -m $  ' norevie ...

  7. linux 下 storm环境搭建,Storm在Ubuntu环境下的单机部署

    Storm在Ubuntu环境下的单机部署 目录 查看Ubuntu 安装JDK 安装Pythod 安装Zookeeper 安装ZeroMQ 安装Jzmp 安装Storm 查看Ubuntu是32位还是64 ...

  8. 【转载】Ubuntu环境下配置Android Studio

    之前学习Android开发的时候,一直跟各种教程一样,使用的是Eclipse+ADT,主要是比较方便,容易上手,特别是对于习惯用Eclipse开发java的朋友来说,上手更是好无压力.但毕竟Eclip ...

  9. ubuntu安装python环境_AirSim 无人驾驶教程(1)Airsim 在Ubuntu环境下的安装

    AirSim 无人驾驶教程(1)Airsim 在Ubuntu环境下的安装 说实话我自己内心是不看好无人驾驶的短期普及的,但是通过对无人驾驶的研究可以实现对一些科学知识的掌握和探索.通过无人驾驶的仿真环 ...

最新文章

  1. 【CI3.1】CI框架简单使用方法
  2. NAR:UNITE真菌鉴定ITS数据库——处理未分类和并行分类(数据库文章阅读模板)
  3. Google AI与Deepmind强强联合,加速神经网络稀疏化进程
  4. MATLAB和Python读取wave文件的波形对比
  5. linux shell 日志环境变量 HISTFILESIZE 和 HISTSIZE的区别
  6. JavaScript实现职责链模式
  7. rman备份rman-00554 ,rman-04005错误
  8. Python中np.sum()对axis的个人理解,超详细
  9. 用VB无窗口透明Usercontrol编写透明浮动按钮
  10. C# mvc4.0 MD5测试
  11. OpenCV---圆检测
  12. faststone capture没声音
  13. matlab一键计算平均值与标准偏差
  14. day0学习开始,起于markdown
  15. iOS appicon 与 launchImage 尺寸一览
  16. 用python制作动态二维码印刷价格_用一行Python代码制作动态二维码
  17. 百度地图开发点连线形成路径
  18. 字符串数组(String []) 去掉重复值的方法
  19. Windows Server2008 R2搭建域环境(步骤最详细)
  20. 利用python实现短信和电话提醒功能

热门文章

  1. 架构设计(二):数据库复制
  2. 数学物理方程:球函数
  3. Intel I210网卡
  4. 如何求FIRST集和FOLLOW集
  5. MariaDB允许远程连接
  6. iOS - 版面实现记录二
  7. Android 锁屏时间
  8. PowerISO 5.2官方中文+keygen
  9. 选用MOS管ASE10N65SE-ASEMI应当注意哪几方面
  10. mysql lat lon_lon lat是什么意思