Rav*_*avi 70 ubuntu data-recovery rm
我错误地在创建许多 c 程序文件的当前目录上运行了 rm * 。我从早上就一直在研究这些。现在我不能再抽出从早上开始创建文件的时间了。请问如何恢复。他们也不在回收站!
Tho*_*man 71
如果正在运行的程序仍然打开了被删除的文件,您可以通过/proc/[pid]/fd/[num]
. 要确定是否是这种情况,您可以尝试以下操作:
$ lsof | grep "/path/to/file"
Run Code Online (Sandbox Code Playgroud)
如果上面给出了表单的输出:
progname 5383 user 22r REG 8,1 16791251 265368 /path/to/file
Run Code Online (Sandbox Code Playgroud)
记下第二列中的 PID 和第四列中的文件描述符编号。使用此信息,您可以通过发出以下命令来恢复文件:
$ cp /proc/5383/fd/22 /path/to/restored/file
Run Code Online (Sandbox Code Playgroud)
如果您找不到带有 的文件lsof
,您应该立即重新挂载包含只读文件的文件系统:
$ mount -o remount,ro /dev/[partition]
Run Code Online (Sandbox Code Playgroud)
或者完全卸载文件系统:
$ umount /dev/[partition]
Run Code Online (Sandbox Code Playgroud)
这样做的原因是,一旦文件被取消链接,并且没有剩余的硬链接到有问题的文件,底层文件系统可能会释放先前为已删除文件分配的块,此时这些块可能会被删除。分配给另一个文件并且它们的内容被覆盖。因此,如果要进行任何恢复,停止对文件系统的任何进一步写入对时间至关重要。如果文件系统是根文件系统,或者由于其他原因无法设为只读或卸载,则可能需要关闭系统(如果可能)并继续从可以保留目标文件的实时环境中恢复系统只读。
在阻止对文件系统的写入后,无需立即尝试进行实际恢复。为了安全起见,您可能需要备份文件系统以在以下位置执行实际恢复:
$ dd bs=4M if=/dev/[partition] of=/path/to/backup
Run Code Online (Sandbox Code Playgroud)
接下来的步骤现在取决于文件系统类型。假设典型的 Ubuntu 安装,您很可能有一个ext3
或ext4
文件系统。在这种情况下,您可以尝试使用 进行恢复extundelete
。可以在备份或原始设备上安全地尝试恢复,只要它未安装(或以只读方式安装)。不要尝试从实时文件系统中恢复。这很可能会使文件系统进入不一致的状态。
extundelete
将尝试将它找到的任何文件还原到名为RECOVERED_FILES
. 从备份中恢复所有已删除文件的典型用法是:
使用旧版本:
$ extundelete /path/to/backup --restore-all
Run Code Online (Sandbox Code Playgroud)
对于较新的版本(例如 0.2.4),不要挂载您要从中恢复的设备(感谢 Ryan Lue):
$ extundelete /dev/<device-file> --restore-all
Run Code Online (Sandbox Code Playgroud)
而不是--restore-all
,您可以尝试像--restore-file <path>
或这样的选项--restore-directory <path>
Rav*_*avi 15
是的,我能够恢复我的文件。我还没有检查是否所有都恢复了,但是我检查过的一些已经恢复了。由于有许多文件可以通过该工具/命令恢复,我需要在这些文件中 grep 一些文本模式,看看哪些是我的。文件以不同的名称恢复(可能由系统生成)。我从另一个论坛得到了解决方案,命令是 photorec
sudo photorec
Run Code Online (Sandbox Code Playgroud)
这将打开一个基于文本的窗口。我遵循了说明,是的,它很棒。
归档时间: |
|
查看次数: |
412196 次 |
最近记录: |