왜냐하면이것버그로 인해 내 소스 파일 중 하나의 내용이 삭제되었습니다. 많이 검색해보니 명령어로 저장장치에 있는 원시 데이터를 읽을 수 있고 dd
명령어로 내 파일 데이터가 들어있는 블록의 주소도 알 수 있는데 hdparm
내 파일의 내용이 삭제되고 크기도 0이므로 hdparm
아무것도 표시되지 않습니다.
그래서 전체 파티션을 읽고 dd
출력을 필터링하여 grep
소스 파일의 한 줄을 찾았으므로 소스 파일의 내용이 내 저장 장치에 여전히 존재한다고 확신합니다. 이제 몇 가지 질문이 있습니다.
- 파일 콘텐츠를 복구하는 최적화된 방법이 있습니까?
- 파일을 삭제한 후 복구 도구를 사용하여 복구하는 것이 좋은 생각입니까?
- 내 소스 파일에서 한 줄을 찾은 후 주소를 찾는 방법이 있나요?
- 이전 블록의 주소를 찾는 방법이 있나요?
grep
필요한 줄을 찾은 후 명령이 (예를 들어) 1000줄을 인쇄하도록 강제하는 방법이 있습니까 ?- 파일이 디렉터리에 어떻게 저장되는지 잘 모르겠습니다. 디렉터리에 물리적 경계가 있습니까? 내 말은, 해당 디렉토리의 모든 내용을 읽기 위해 디렉토리의 시작 주소와 끝 주소를 찾을 수 있습니까? (폴더 전체를 읽고 싶습니다
src
.)
기본적으로 내 필드를 어떻게 다시 되돌릴 수 있나요?
노트:
- 저는 리눅스를 사용하고 있습니다.
- 내 파티션의 파일 시스템은 ex4입니다.
- 내 저장 장치는 SSD입니다.
감사해요.
답변1
매우간단히:
복잡하며 파일 시스템에 따라 다릅니다. 예를 들어 다음을 사용할 수 있습니다.디버그 파일ext2, ext3 또는 ext4 파일 시스템을 살펴보세요. 파일 시스템의 작동 방식을 읽고 inode와 로그를 이해하십시오.
소스 파일에서 특정 라인을 찾으면 이를 사용하여 블록을 식별할 수 있으며 이는 차례로 inode 또는 저널 항목을 식별하는 데 도움이 될 수 있습니다.
이 모든 것이 어떻게 작동하는지 이해하려면 최소한 며칠 동안 읽고, 이해하고, 실험하는 데 투자할 준비를 하십시오. 또한 하드 드라이브를 완전히 백업하십시오.지금, 백업을 만들 때까지 하드 드라이브를 사용하지 마십시오. 또는 파일 알림이 아직 덮어쓰여지지 않은 경우 덮어쓰여질 가능성이 높습니다.
앞으로는 소스 파일에 대한 버전 제어를 사용하는 것이 좋습니다. 그러면 VSCode 버그로 인해 일부 파일이 손실되는 것은 큰 문제가 아닙니다. 최악의 시나리오는 마지막 커밋 이후 변경 사항을 다시 실행해야 한다는 것입니다.
답변2
컴퓨터 충돌 후 삭제된 파일을 완전히 복구할 수 있었습니다ext4magic.
이는 인상적이고 매우 강력한 도구이지만 매우 기술적이기도 합니다. 그러나 위 웹사이트는 ext4 파일 시스템에 대한 지식의 보고입니다.
나는 이 일을 오래 전에 했는데 정확히 어떻게 했는지 기억이 나지 않습니다(관련된 일 이나 -r
옵션 만 기억합니다 ). 하지만 위의 링크부터 시작하는 것이 좋은 예입니다.-m
-I
사용되는 장면같은 웹사이트에서.
참고 사항: 웹사이트의 영어는 때로는 너무 비슷해서 영어가 모국어가 아닌 사람으로서 의존해야 할 때도 있습니다.딥 엘보다 이해하기 쉬운 번역을 위해 원본 독일어 텍스트를 번역하세요. 하지만 당신의 모국어가 영어이거나 심지어 독일어라면, 당신은 갈 수 있는 좋은 위치에 있을 것입니다. 이는 개발자가 응용 프로그램을 개발하고 모든 정보를 수집하는 데 수행한 인상적인 작업을 결코 감소시키지 않으며 이 문서를 자신의 능력을 최대한 발휘하기 위한 노력을 감소시키지도 않습니다!