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