我不小心从应用程序中删除了目录/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 处打开了目录,因此,如果我dd
或cat
它,我将能够恢复整个树/path/to/dir
。
网上有很多关于如何使用lsof
恢复已删除的文章常规的文件,但没有用于恢复已删除的文件目录。
非常感谢您的快速回复!
答案1
不幸的是你无法做你所寻求的。
虽然目录可以保持打开状态,但驻留在目录中的文件不是目录本身的一部分。该目录仅存储文件名。除此之外,随着文件被删除,目录也已被修改以删除这些文件。
简而言之,除非每个单独的文件都保持打开状态,否则无法以这种方式恢复它们。