cp 대신 ln을 사용하여 Linux에서 열려 있지만 삭제 된 파일을 복구하는 방법은 무엇입니까?


8

다시 다운로드하기 어려운 소스에서 다운로드하는 파일이 있지만 실수로 파일 시스템 네임 스페이스 (/ tmp / blah)에서 삭제 된 파일이 있는데이 파일을 복구하고 싶습니다.

일반적으로 할 수 cp /proc/$PID/fd/$FD /tmp/blah는 있지만이 경우 파일이 여전히 다운로드 중이므로 부분 스냅 샷 만 가져옵니다. 또한 다운로드가 완료되면 다운로드 프로세스 (예 : Chrome)가 FD를 닫습니다.

inode로 복구하거나 하드 링크를 만드는 방법은 무엇입니까? 다른 솔루션? 차이가 있다면 주로 ext4에 관심이 있습니다.

답변:


11

파일을 계속 복사하려면 tail을 사용하십시오.

tail -c +0 -f /proc/$pid/fd/$fd > filename

물론 다운로드가 완료되면 테일 프로세스를 수동으로 (또는 다른 외부 수단으로) 중지해야합니다.


매력처럼 작동합니다. 당신이 필요로하는 것은 실제로 같은 파일을 열어주는 다른 프로그램 일뿐이므로 생각보다 훨씬 쉽습니다.
Yang

4

fdlink의 리눅스 커널 모듈과 간단한 응용 프로그램으로 구성된 프로젝트는, 취지는 열린 파일 기술자에 새 링크를 만들 수 있습니다. 나는 그것을 시도하지 않았습니다.


1

이것은 inode를 복구하여 작업을 수행하지는 않지만 작업을 완료합니다.

cp /proc/$PID/fd/$FD /tmp/blah
kill $PID
wget -c $URL -O /tmp/blah

또는 전체 브라우저를 종료하지 않으려면 Chrome에서 다운로드를 수동으로 중지하십시오.


문제가 너무 단순해서 다시 다운로드 / 다시 다운로드 할 수 있다면! 다시 다운로드 할 수 없다고 가정 할 수 있도록 질문을 명확하게했습니다.
Yang

문제처럼 들린다 :-) inode 기반 해킹은 너무 낮은 수준이고 파일 시스템에 따라 다릅니다.
Pavel

예, 나는 또한 이것을 내 질문에 추가했습니다. 차이가 생기면 주로 ext4에 관심이 있습니다.
Yang

1

이것에 대한 하드 링크를 원한다면 man lnfd 디렉토리에서 -s 옵션을 사용하여 (을 참조하십시오 ) 파일 ls -f번호 (주로 두 자리 숫자)를 찾아서ln NUMBER destination-file -s

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.