恢复意外删除的文件


79

我不小心从笔记本电脑上删除了一个文件。我正在使用Fedora。是否可以恢复文件?


9
您的文件系统是什么?
echox

Answers:


94

我建议不要立即安装一些实用程序。基本上,这里最大的敌人是磁盘写入。您现在想不惜一切代价避免它们。

最好的选择是编辑器创建的自动备份(如果存在)。如果没有,如果您记得.tex文件中有一些唯一的字符串,我将尝试使用grep进行以下技巧:

$sudo grep -i -a -B100 -A100 'string' /dev/sda1 > file.txt

/dev/sda1文件所在的设备替换,并用文件中'string'的唯一字符串替换。这可能需要一些时间。但基本上,这是在设备上搜索字符串,然后在该行之前和之后返回100行并将其放入file.txt。如果您需要返回更多行,只需适当调整-B-A选项即可。您可能会返回一堆额外的垃圾,但是您应该能够找回文本。

祝好运。


8
切换到Linux后的两周,有人给我看了这本书,当时我杀死了我真正需要的文本文档,这真让我
大吃一惊

18
顺便说一句,-B100 -A100可以用等效项代替-C100(C表示“上下文”)。-i如果可能的话,我绝对不会使用,但会-F取代它。
rozcietrzewiacz 2011年

可能不足为奇-我假设已重用了相同的磁盘块-此方法不适用于我意外覆盖,未意外删除的文件。
ntc2

是的,在大多数文件系统上,仅覆盖文件时就可以重用相同的块。请注意,某些应用程序在某种意义上“解决了此问题”,方法是先编写一个临时文件(使其成为单独的写操作),然后在旧文件之上重命名该文件(从用户的角度替换数据)。这样做有多种不同的原因。一直执行此操作的存储系统(包括文件系统)称为写时复制
2014年

您需要/ dev / sda1吗?您可以直接转到文件所在的目录并在没有/ dev / sda1的情况下运行吗?
coolcool1994 '16

22

有可能,这将是一个麻烦。

更新:在尝试此方法之前,请先查看Steven的答案

您将需要testdisk软件包,大量磁盘空间大量时间。

PhotoRec是TestDisk的一部分,可以从几乎所有光盘中恢复文件。PhotoRec确实支持查找.tex文件。


首先,通过运行安装testdisk

yum install testdisk

注意:另一个驱动器上将需要大量可用空间,您可以在其中保存恢复的文件。

通过在光盘photorec的可用空间上运行来恢复光盘上所有已删除的文件。

sudo photorec

并按照说明进行操作...(切记不要将文件保存到要从中进行恢复的同一张光盘中)

该过程完成后,所有恢复的文件应位于一个目录中,您应在其中运行:

find -name '*.tex' > filelist

这将输出可能是您丢失的文件列表。您将必须检查所有这些文件,因为文件名将丢失。


11
photorec是一个很好的工具,我只担心安装过程中会发生磁盘写操作。无论如何,可以将其作为可从外部媒体运行的独立可执行文件吗?
史蒂文D

1
是的,你说得很对。我不了解独立的可执行文件,但是可以尝试使用一些live-cd吗?
Stefan 2010年

2
为了减少使用Photorec恢复的文件,第三个屏幕将显示[File Opt]选择此选项。您可以从列表中选择要恢复或不想恢复的文件类型。
史蒂夫·伯丁

13

许多文本编辑器保留备份文件。如果您真的很幸运,可能会出现诸如yourfile.tex〜之类的内容,其中包括文件的先前版本。



4

无论如何,我都会尽快停止使用正在使用的设备,以避免写入任何磁盘,并启动到专用的恢复操作系统,例如LiveCD的SystemRescueCd,以便可以将磁盘以只读方式安装在为了防止进一步的数据丢失。

这些发行版包括许多其他人提到的恢复工具,您可以安装大多数丢失的工具。

为了防万一,我总是倾向于在外部USB阅读器中附有CD,其中包含SystemRescueCd的最新版本。


3

注意:我添加了有关已删除的数据库文件(MySQL服务器)的其他一些问题的答案,该问题已关闭并指向此问题。我相信它在其他一些类似情况下也很有用(只要某些进程仍保持文件描述符为打开状态)。

如果您的进程仍在运行,那么您可以在其中找到文件/proc/<pid>fd/并复制它们。SIGSTOP首先发送到流程组。复制文件。一边建立新实例,然后停止该实例,否则kill -9将其放回原处。InnoDB在运行时将自行恢复,但是如果存在MyISAM,则您将不得不手动执行此操作。


2

我不小心删除了我的sqlite db文件。

我要做的就是找出文件,

/proc/在文件浏览器中打开该位置,然后在该位置搜索已删除的sqlite db文件。

我在搜索结果中找到了该文件。从那里将文件复制到我的老地方。


0

两年前,我遇到了同样的问题,并且尝试了很多程序,例如debugfs,photorec,ext3grep和extundelete。ext3grep是恢复文件的最佳程序。语法非常简单:

ext3grep image.img --restore-all

要么:

ext3grep /dev/sda3 --restore-all --after date -d '2015-01-01 00:00:00' '+%s' --before `date -d ‘2015-01-02 00:00:00’ ‘+%s’

视频是一个迷你教程,可以为您提供帮助。


0

如果没有备份,则第三方磁盘恢复工具可能会恢复部分或全部数据,但是您必须立即停止使用计算机。现在,已破坏的文件可用于您的系统覆盖它们。一旦它们被覆盖,恢复数据的费用就非常高。我已经成功使用uflysoft数据恢复(还有其他Mac OS数据恢复应用程序)-您必须有一个“恢复驱动器”(不是主驱动器,也不是您从中寻找的驱动器),用于保存恢复的数据。您从数据恢复磁盘(系统)启动

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.