!["/proc"의 정보에서 파일을 복구할 수 있는 방법이 있습니까? [복사]](https://linux55.com/image/175511/%22%2Fproc%22%EC%9D%98%20%EC%A0%95%EB%B3%B4%EC%97%90%EC%84%9C%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EB%B3%B5%EA%B5%AC%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%B4%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
방금 인터뷰에서 물었습니다. 누군가 /var/log/apache/access.log
아파치 로그 파일을 작성하는 동안 실수로 삭제한 경우 복원할 수 있습니까?
내 대답 후에 면접관은 inode
파일 시스템에서 아파치 프로세스 세부 정보를 복구한 /proc
다음 파일을 복구할 수 있다고 말했습니다. 전화통화라서 제대로 이해를 못했어요.
그럼 누군가 이것을 설명할 수 있나요?
답변1
불행하게도 새 이름을 파일 시스템의 inode에 연결할 수 있는 방법은 없습니다.
하지만 파일 내용을 새 파일에 복사할 수 있습니다.
# in shell 1
bash -c 'echo $$; exec cat >delfile'
27225
따라서 파일을 열어두는 프로세스의 PID를 확인해야 합니다. 그런 다음 삭제된 파일의 파일 설명자를 확인합니다.
# in shell 2, same directory
$ rm delfile
$ ll /proc/27225/fd
insgesamt 0
lrwx------ 1 hl hauke 64 20. Jun 00:38 0 -> /dev/pts/4
l-wx------ 1 hl hauke 64 20. Jun 00:38 1 -> '/crypto/home/hl/tmp/delfile (deleted)'
lrwx------ 1 hl hauke 64 20. Jun 00:38 2 -> /dev/pts/4
그런 다음 내용을 복사할 수 있습니다.
cp /proc/27225/fd/1 restored_file