Linux:恢复另一个终端仍被 cd 进入的已删除目录

Linux:恢复另一个终端仍被 cd 进入的已删除目录

我不小心从应用程序中删除了目录/path/to/dir及其所有内容。

但是,我仍然打开了一个终端窗口,仍然cd/path/to/dir

Q:有没有办法递归恢复/path/to/dir

请注意,这lsof给了我这个:

$ lsof | egrep '/path/to'
bash       3113              hs  cwd       DIR              252,0     4096 42207179 /path/to
bash       3487              hs  cwd       DIR              252,0        0 42207253 /path/to/dir (deleted)

此外,如果我这样做...

$ ls /proc/3487/fd/
0  1  2  255

$ cd /tmp
$ dd if=/proc/3487/fd/255 of=recovered.dir bs=1M

...该dd命令只是坐在那里什么也不做,并且recovered.dir的大小没有增长。我在这里假设进程 3487 在/path/to/dir文件描述符 255 处打开了目录,因此,如果我ddcat它,我将能够恢复整个树/path/to/dir

网上有很多关于如何使用lsof恢复已删除的文章常规的文件,但没有用于恢复已删除的文件目录

非常感谢您的快速回复!

答案1

不幸的是你无法做你所寻求的。

虽然目录可以保持打开状态,但驻留在目录中的文件不是目录本身的一部分。该目录仅存储文件名。除此之外,随着文件被删除,目录也已被修改以删除这些文件。

简而言之,除非每个单独的文件都保持打开状态,否则无法以这种方式恢复它们。

相关内容