读:Linux 删文件的真相——用 /proc 恢复被进程持有的已删除文件

💡 原文中文,约4600字,阅读约需11分钟。
📝

内容提要

在Linux中,删除文件时仅删除文件名,数据仍保留在磁盘上。只要进程仍在使用该文件,数据可以恢复。可以使用lsof命令查找持有文件的进程,并通过/proc目录恢复已删除的文件。为防止数据丢失,可以使用硬链接或绑定挂载。

🎯

关键要点

  • 在Linux中,删除文件时仅删除文件名,数据仍保留在磁盘上。

  • 只要进程仍在使用该文件,数据可以恢复。

  • 使用lsof命令可以查找持有文件的进程,关键选项是+L1。

  • 从/proc目录可以恢复已删除的文件,文件描述符仍然有效。

  • 如果进程已经退出,数据可能无法恢复,需使用数据恢复工具。

  • 可以通过创建硬链接或绑定挂载来防止数据丢失。

延伸问答

在Linux中,删除文件时实际发生了什么?

在Linux中,删除文件时仅删除文件名,数据仍保留在磁盘上,直到没有进程在使用该文件。

如何查找持有已删除文件的进程?

可以使用lsof命令,关键选项是+L1,列出link count小于1的文件。

如何从/proc目录恢复已删除的文件?

通过找到持有文件的进程的PID和文件描述符FD,可以使用cp命令从/proc/<PID>/fd/<FD>恢复文件。

如果进程已经退出,如何恢复已删除的文件?

如果进程已退出,数据可能无法恢复,需使用数据恢复工具如extundelete或photorec。

如何防止数据丢失?

可以通过创建硬链接或使用绑定挂载来防止数据丢失。

rm命令删除文件时,link count有什么作用?

link count表示有多少个目录条目指向同一个inode,只有当link count降到0且没有进程在使用时,数据才会被真正回收。

➡️

继续阅读