현재 기록 중인 삭제된 파일을 복구합니다.

현재 기록 중인 삭제된 파일을 복구합니다.

대용량 파일을 다운로드하기 시작했는데 얼마 전 실수로 삭제했습니다. cping 을 통해 현재 콘텐츠를 가져오는 방법을 알고 있지만 /proc/<pid>/fd/<fd>다운로드가 아직 진행 중이므로 다른 곳에 복사하면 불완전하게 됩니다.

다운로드가 완료되었지만 다운로더가 파일을 닫기 전에 파일을 구출할 수 있나요?

답변1

팔로우 모드에서 사용하면 tail원하는 것을 할 수 있습니다.

tail -n +0 -f /proc/<pid>/fd/<fd> > abc.deleted

방금 간단한 테스트를 했는데 여기서는 작동하는 것 같습니다. 파일이 바이너리인지 여부는 언급하지 않았습니다. 나의 주요 관심사는 파일의 시작 부분에서 복사되지 않을 수도 있다는 것입니다. 그러나 -n +0 매개변수는 바이너리 파일에 대해서도 복사를 수행해야 합니다.

tail 명령은 다운로드가 종료되어도 종료되지 않을 수 있으므로 직접 종료해야 합니다.

답변2

사실 다른 생각이 있어요. 다른 명령을 사용하여 /proc/<pid>/fd/<fd>프로그램을 읽고 계속 실행하는 경우 다운로드가 완료되면 /proc/<pid2>/fd/<fd2>두 번째 명령의 해당 파일에서 복사할 수 있습니다.

한번 시도해 보세요

less /proc/<pid>/fd/<fd>

별도의 인클로저에. /proc 항목에서 less 명령을 보면 삭제된 파일이 표시되어야 합니다.

관련 정보