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에 디렉터리가 열려 있다고 가정합니다 . 따라서 나 dd또는 cat그라면 전체 트리를 복원할 수 있습니다 /path/to/dir.

lsof삭제된 항목 복구를 사용하는 방법에 대한 많은 기사가 인터넷에 있습니다.정기적인파일이지만 삭제된 파일을 복구하는 데 사용되지 않음목차.

빠른 답변에 진심으로 감사드립니다!

답변1

불행히도 당신은 당신이 원하는 것을 할 수 없습니다.

디렉터리는 열려 있을 수 있지만 디렉터리에 있는 파일은 디렉터리 자체의 일부가 아닙니다. 이 디렉터리에는 파일 이름만 저장됩니다. 이 외에도 파일이 삭제됨에 따라 디렉터리도 수정되어 해당 파일이 제거되었습니다.

즉, 각 개별 파일이 열려 있지 않으면 이 방법으로 복구할 수 없습니다.

관련 정보