덮어쓴 tar 파일에서 노드/내용을 복구하는 방법

덮어쓴 tar 파일에서 노드/내용을 복구하는 방법

면책조항: 저는 질문을 잘 작성하지 못하며, 제 질문은 매우 구체적인 시나리오입니다. 그래서 저는 바로 이 상황으로 뛰어들겠습니다.

tarfile::todo/main내 파일 시스템을 탐색하고 있었는데 어떻게든 내 로컬 FS에서 두 개의 핵심 노드(및 )가 포함된 tar 파일을 다운로드하여 tarfile::todo/code동일한 파일에 기록했습니다. 다운로더가 무엇을 하고 있는지 깨달았을 때 나는 재빨리 중지하고 tar 파일을 확인했습니다. 그리고 실망스럽게도 작은 조각만 남고 나머지는 잘린 것을 발견했습니다. 왜 다른 것을 쓰기 전에 기존 파일을 백업하지 않았는지 모르겠고 session.tar가 왜 내 git 저장소에 커밋되지 않았는지 모르겠지만 이제 모든 것이 사라졌습니다. 저는 매우 조심스러운 사용자인데, 실수하면 정말 재앙이 닥칩니다.

extundelete가 여기에서 검색하여 찾은 파일을 복구하지 못한 후이것, grep과 dd를 결합하여 하드디스크에서 직접 데이터를 찾아 읽는 방법을 제공합니다.

추가 배경:

  • /home/user디렉터리는 별도의 드라이브에 마운트됩니다./dev/sdb3
  • 오늘은 파일 복구를 시도한 둘째 날입니다.
  • 다음 단락의 출력은 오늘 생성되었습니다.

grep/dd 조합을 수행한 후에는 다음과 같은 결과를 얻었습니다.이 출력. 내 파일을 다시 가져오기 위해 정확히 어떻게 사용합니까? 나는 그것을 vim 스왑 파일에 복사 .file.swp하고 with를 사용하여 복원하려고 시도했지만 vim -r그것이 vim 스왑 파일이기를 바랐지만 그렇지 않았습니다. 이 형식을 본 적이 없어서 그것이 무엇을 의미하는지 모르겠습니다.

저 할 수 있어요진짜이 데이터를 다시 가져오고 싶습니다. 앞서 말했듯이 이것은 매우 중요합니다. 그것은 내 모든 달걀을 담는 문자 그대로의 바구니입니다. 이를 잃으면 생산성과 조직에 고통스러운 타격이 될 것입니다.

답변1

글쎄요, 해결책을 찾은 것 같아요. 먼저 질문에 게시한 링크부터 시작하겠습니다.

~에서마크 플롯닉.

첫 번째 실행:

sudo grep -a -b "[text from deleted file]" /dev/[drive where it was stored]

이렇게 하면 꽤 많은 출력이 생성됩니다. 예를 들어:

13813610612: a bunch of text

해당 번호를 가져와서 dd와 함께 사용하여 전화번호에서 직접 가져옵니다.하드 디스크, 파일 시스템을 탐색합니다.

sudo dd if=/dev/[same drive from before] \
        of=./salvaged \
        count=2000 \
        skip=$(expr [number] / 512)

그래서 나는 이 기술을 사용하기 위한 스크립트를 작성했고 "tarfile"과 일치하는 약 100개의 1MB 파일을 생성했습니다.

.tar모든 것을 일반 파일에 저장하겠다는 특이한 결정이 하드 드라이브의 여러 위치에서 동일한 데이터를 발견했기 때문에 저를 구했다고 생각합니다 . 나는 필요한 모든 것을 여러 번 찾았습니다.

이제 기가바이트 이상의 임의 텍스트/이진 쓰레기를 정렬하면 됩니다.. 많은 일이 필요합니다.

관련 정보