![Linux: 다른 터미널에서 아직 CD로 들어가고 있는 삭제된 디렉토리 복구](https://linux55.com/image/57827/Linux%3A%20%EB%8B%A4%EB%A5%B8%20%ED%84%B0%EB%AF%B8%EB%84%90%EC%97%90%EC%84%9C%20%EC%95%84%EC%A7%81%20CD%EB%A1%9C%20%EB%93%A4%EC%96%B4%EA%B0%80%EA%B3%A0%20%EC%9E%88%EB%8A%94%20%EC%82%AD%EC%A0%9C%EB%90%9C%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%20%EB%B3%B5%EA%B5%AC.png)
/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
불행히도 당신은 당신이 원하는 것을 할 수 없습니다.
디렉터리는 열려 있을 수 있지만 디렉터리에 있는 파일은 디렉터리 자체의 일부가 아닙니다. 이 디렉터리에는 파일 이름만 저장됩니다. 이 외에도 파일이 삭제됨에 따라 디렉터리도 수정되어 해당 파일이 제거되었습니다.
즉, 각 개별 파일이 열려 있지 않으면 이 방법으로 복구할 수 없습니다.