在 Linux 系统中,一旦使用 `rm` 命令永久性地删除文件,通常是难以通过直接方法来恢复的,但这并不意味着完全没有办法恢复这些被删除的文件。下面是几种你可以尝试的方法。
方法 1: 查看 /proc 文件系统(仅限尚未重启的情况)
当进程打开一个文件句柄时,该文件句柄的信息将保存到 /proc 文件系统中对应的 `/proc/[PID]/fd/` 目录中。这意味着如果你刚刚使用 `rm` 删除了一个被某进程打开的文件(例如日志文件),你可以通过这种方式来查看它。
bash
获取删除的文件描述
find /proc regex '.\d/fd/.'
这个命令中的 需要替换为实际你误删的文件的路径或者部分文件名。
一旦找到了合适的 PID 和文件描述符号,你可以用以下命令重新连接到该文件。
bash
使用 cat 将文件内容写入到新创建的副本中。
cat /proc/PID/fd/FDNUMBER > filenamerecovered
或者你也可以使用 cp 来复制文件:
cp /proc/PID/fd/FDNUMBER /path/to/new_location/
方法 2: 试用 testdisk 或 foremost 工具恢复已删除的文件
TestDisk & PhotoRec 以及 Foremost 都是可以恢复误删或意外擦除的数据的专业数据恢复工具。
安装:
在大多数基于 Debian 的发行版上(如 Ubuntu),可以使用:
bash
sudo aptget install testdisk photorec
对于 Fedora/RHEL 系列:
bash
sudo yum install testdisk
恢复步骤(对于 TestDisk & PhotoRec 的典型流程)
1. 选择要恢复分区或整个磁盘。
如果你不确定,可以选择磁盘而不仅仅是分区。
2. 在 "Analyse" 或 "Proceed" 模式下选择 "Quick Search" 或 "Deep Search".
3. 识别要恢复的未使用的或丢失的分区,然后按 P 进行预览。
4. 若需要完全恢复分区,则使用 W 写入磁盘,但如果只是希望从未分配的空间中找回数据的话则不需要这个步骤。
5. 推荐使用 PhotoRec (随 TestDisk 一起),选择正确的存储选项。
恢复:
它们支持广泛的文件类型恢复,包括常见的文本文件、图像等。
PhotoRec 会在当前目录创建 `recup_dir` 和 `RECOVERED_FILES` 目录用于保存所恢复的数据。
请注意: 操作前最好停止任何对丢失文件所在的卷进行写操作,以防新的活动导致数据碎片化加剧,加大数据恢复的难度。恢复后的文件可能并不是原始状态,因此建议检查所有恢复的重要文档。
尽管如此,在许多情况下尤其是当文件已彻底从硬盘物理上移除(比如被另一个文件覆盖了之前的空间)时,数据恢复可能会变得异常困难,甚至几乎是不可能的。因此,最好的做法是在未来预防这类情况的发生。你可以考虑使用版本控制软件(如 Git)管理项目文件,这样就能回溯到之前的更改点;还可以启用文件系统级别上的备份机制。
发表评论