你曾经是否遇到这样的事?当你发现的时候,你已经通过删除键,或者在命令行中使用 rm 命令,错误的删除了一个不该删除的文件。

在第一种情况下,你可以到垃圾箱,搜索那个文件,然后把它复原到原始位置。但是第二种情况又该怎么办呢?你可能知道,Linux 命令行不会把删除的文件转移到任何位置,而是直接把它们移除了,biu~,它们就不复存在了。

在这篇文章里,将分享一个很有用的技巧来避免此事发生。同时,也会分享一个工具,不小心删除了某些不该删除的文件时,也许用得上。

把删除创建为 rm -i 的别名

当 -i 选项配合 rm 命令(也包括其他文件处理命令比如 cp 或者 mv)使用时,在删除文件前会出现一个提示。

这同样也可以运用到当复制,移动或重命名一个文件,当所在位置已经存在一个和目标文件同名的文件时。

这个提示会给你第二次机会来考虑是否真的要删除该文件 - 如果你在这个提示上选择确定,那么文件就被删除了。这种情况下,很抱歉,这个技巧并不能防止你的粗心大意。

为了 rm -i 别名替代 rm ,这样做:

  1. alias rm='rm -i'

运行 alias 命令可以确定 rm 现在已经被别名了:

为 rm 增加别名

然而,这只能在当前用户的当前 shell 上有效。为了永久改变,你必须像下面展示的这样把它保存到 ~/.bashrc 中(一些版本的 Linux 系统可能是 ~/.profile)。

在 Linux 中永久增添别名

为了让 ~/.bashrc(或 ~/.profile)中所做的改变立即生效,从当前 shell 中运行文件:

  1. . ~/.bashrc

在 Linux 中激活别名

取证工具-Foremost

但愿你对于你的文件足够小心,当你要从外部磁盘或 USB 设备中恢复丢失的文件时,你只需使用这个工具即可。

然而,当你意识到你意外的删除了系统中的一个文件并感到恐慌时-不用担心。让我们来看一看 foremost,一个用来处理这种状况的取证工具。

要在 CentOS/RHEL 7 中安装 Foremost,需要首先启用 Repoforge:

  1. # rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
  2. # yum install foremost

然而在 Debian 及其衍生系统中,需这样做:

  1. # aptitude install foremost

安装完成后,我们做一个简单的测试吧。首先删除 /boot/images 目录下一个名为 nosdos.jpg 的图像文件:

  1. # cd images
  2. # rm nosdos.jpg

要恢复这个文件,如下所示使用 foremost(要先确认所在分区 - 本例中, /boot 位于 /dev/sda1 分区中)。

  1. # foremost -t jpg -i /dev/sda1 -o /home/gacanepa/rescued

其中,/home/gacanepa/rescued 是另外一个磁盘中的目录 - 请记住,把文件恢复到被删除文件所在的磁盘中不是一个明智的做法。

如果在恢复过程中,占用了被删除文件之前所在的磁盘分区,就可能无法恢复文件。另外,进行文件恢复操作前不要做任何其他操作。

当 foremost 执行完成以后,恢复的文件(如果可以恢复)将能够在目录 ·/home/gacanepa/rescue/jpg` 中找到。

总结

在这篇文章中,我们阐述了如何避免意外删除一个不该删除的文件,以及万一这类事情发生,如何恢复文件。还要警告一下, foremost 可能运行很长时间,时间长短取决于分区的大小。

如果您有什么问题或想法,和往常一样,不要犹豫,告诉我们。可以给我们留言。

作者:Gabriel Cánepa
来源:51CTO

如何在Linux中恢复一个删除了的文件相关推荐

  1. linux下删除的文件怎么恢复出厂设置,如何在Linux中恢复已删除的文件(机器翻译)...

    如果您在Linux中不小心删除了一个文件,不要担心,只要该区域的磁盘尚未被覆盖,您可能仍然可以恢复它.这篇文章将告诉你如何在Linux中轻松恢复被删除的文件. Foremost能够搜索磁盘或原始图像文 ...

  2. outlook从服务器中恢复已删除项目,如何在Outlook中恢复已删除的任务

    如果我们知道有哪些装机必备的系统工具,那么在Microsoft Outlook中恢复已删除文件的任务就不会显得如此棘手,令人伤神.有几种高效的已删除邮件恢复方式,用户可以使用它们完成Outlook文件 ...

  3. linux 杀掉php,Linux_在Linux系统中使用xkill命令杀掉未响应的进程,我们如何在Linux中杀掉一个资 - phpStudy...

    在Linux系统中使用xkill命令杀掉未响应的进程 我们如何在Linux中杀掉一个资源/进程?很明显我们会找出资源的pid然后用kill命令. 说的更明白一点,我们可以找到某个资源(比如termin ...

  4. linux强制移除pdf密码,分享|如何在 Linux 中从一个 PDF 文件中移除密码

    今天,我碰巧分享一个受密码保护的 PDF 文件给我的一个朋友.我知道这个 PDF 文件的密码,但是我不想透露密码.作为代替,我只想移除密码并发送文件给他.我开始在因特网上查找一些简单的方法来从 PDF ...

  5. 如何在linux中关闭一个进程

    如何在linux中kill一个进程 刚开始学习Linux的时候,总是直接点击×来关闭程序.虽然知道这是关闭整个终端程序,但是奈何如此简单的事情对于新手来说都是很困难的.

  6. 如何在 Linux 中创建一个共享目录

    作为系统管理员,你可能有一个特定目录,你希望为 Linux 服务器上的每个用户授予读/写访问权限.在本指南中,我们将回顾如何在 Linux 中对特定目录(共享目录)上的所有用户启用写访问. 这要求设置 ...

  7. linux下如何搜索某个文件,技术|如何在 Linux 中查找一个文件

    对于新手而言,在 Linux 中使用命令行可能会非常不方便.没有图形界面,很难在不同文件夹间浏览,找到需要的文件.本篇教程中,我会展示如何在 Linux 中查找特定的文件. 第一步要做的是find 命 ...

  8. 如何在 Linux 中查找一个文件

    导读 对于新手而言,在 Linux 中使用命令行可能会非常不方便.没有图形界面,很难在不同文件夹间浏览,找到需要的文件.本篇教程中,我会展示如何在 Linux 中查找特定的文件. 第一步要做的是通过 ...

  9. Linux中是如何删除特殊名称文件

    在Linux中我的都知道,删除一个目录中的一个或多个文件或目录,可以使用rm命令,可以将某个目录及其下的所有文件及子目录均删除.对于链接文件,只是删除了链接,原有文件均保持不变. 但是我们想,如果想要 ...

最新文章

  1. python字符串和字节串有什么区别_对于Python中的字节串bytes和字符串以及转义字符的新的认识...
  2. 075_JSON.parse()
  3. 常用Apache Commons工具类备忘
  4. 关于win7禁止标准用户安装软件 AppLocker使用
  5. 论文 参考文献的格式说明
  6. SESSION 回收机制
  7. “90后”台湾籍乘务长的第一个大陆春运
  8. android手机慢,Android手机运行慢?!教你一秒“提速”50%
  9. Vue3+Vite快速搭建vue项目
  10. “大数据杀熟”背后的算法在为谁服务?
  11. 用Python画一个精确的中国地图(数据+代码10行)
  12. cts测试linux指令skip,CTS测试命令详细
  13. gRPC源码阅读及实践之 Resolver
  14. 重学JavaSE —— Map、Set、Iterator(迭代器) 简单笔记
  15. PowerPivot的杀手锏是什么?
  16. java在深圳找工作_[深圳java求职]没经验 找工作 求指点
  17. KDA的新宠儿,金贝KD6,更大算力,探索无限可能
  18. 面试题—Mybatis动态sql是什么意思?常用的标签有哪些和用途?
  19. 为什么说入职国企也能越混越好?局外人不懂,内行人明白这4点
  20. MongoDB迁移方案

热门文章

  1. UA MATH563 概率论的数学基础 中心极限定理10 Borel-Cantelli引理
  2. UA MATH567 高维统计I 概率不等式5 推广Hoeffding不等式与Khintchine不等式
  3. UA MATH575B 数值分析下VI 统计物理的随机模拟方法2
  4. SVN服务器和客户端的基本使用详细图解
  5. 如何在java中实现跨线程的通讯
  6. 前端自动化之sass实时编译及自动刷新浏览器
  7. iOS本地化项目上传到gitHub
  8. 基于简单工厂模式的计算器程序
  9. 其他软件烘培的光影贴图在unity中如何使用
  10. QEMU KVM Libvirt手册(7): 硬件虚拟化