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

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

内容提要

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

🎯

关键要点

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

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

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

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

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

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

🔎

延伸解读

数据恢复的关键时机

在Linux中,删除文件后,数据仍然保留在磁盘上,直到所有进程关闭文件描述符。因此,恢复数据的最佳时机是在文件被删除后,进程仍在运行时。若进程已退出,数据可能无法恢复,需使用专业的数据恢复工具。

使用lsof命令的技巧

使用lsof命令查找持有已删除文件的进程时,关键选项是+L1。此选项可以帮助用户快速识别那些已删除但仍被进程占用的文件,避免不必要的数据丢失。

预防数据丢失的策略

为了防止数据丢失,可以使用硬链接或绑定挂载。硬链接允许多个目录条目指向同一数据块,即使一个被删除,数据仍然可通过其他链接访问。绑定挂载则允许在不同路径下访问同一文件,提供了更灵活的保护方式。

延伸问答

在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且没有进程在使用时,数据才会被真正回收。

🏷️

标签

➡️

继续阅读