두 개의 파티션이 있는 SDD가 있습니다. 첫 번째는 32G이고 두 번째는 드라이브의 남은 공간을 차지합니다. 첫 번째는 Ubuntu가 설치된 루트 파티션입니다. 두 번째는 일반 수납공간이다.
실수로 다음 명령을 사용하여 이 sdd에 dd를 지정했습니다.
dd if=/2g-ubuntu.iso of=/dev/sda
3G 미만의 연속 데이터가 물리적 디스크 시작 부분에 기록되므로 이 덮어쓰기는 두 번째 파티션에 도달하지 않습니다. 그래서 즉시 드라이브를 마운트 해제하고 읽기 모드로만 마운트했습니다. 두 번째 파티션의 inode와 영역에는 아무 것도 기록되지 않았으므로 해당 파일은 영향을 받지 않았습니다.
testdisk는 슈퍼블록이 손상되었다고 알려줍니다.
모든 백업 슈퍼블록을 읽으려고 시도했지만 그 슈퍼블록도 손상되었습니다.
따라서 파일을 복구하려면 inode와 해당 영역 데이터를 읽는 데 의존해야 하는 것 같습니다.
디스크의 해당 부분을 가리키고 모든 파일을 수집할 수 있는 프로그램이 있습니까? testdisk를 봤는데 파일 형식만 찾는 것 같은데 판단하지 않고 모든 파일을 찾으려면 필요합니다.
문제 해결 - dd를 사용하여 손실된 파티션 찾기
from subprocess import Popen, PIPE
count = 0
skip32Gigs = 0
while 1:
dd_args = ["dd", "if=/dev/sda", "bs=512", "skip=" + str(skip32Gigs+count), "count=4"]
file_args = ['file', "-"]
print 'dd_args', dd_args
dd_process = Popen(dd_args, stdout=PIPE)
file_process = Popen(file_args, stdin=dd_process.stdout, stdout=PIPE)
dd_process.stdout.close()
out, err = file_process.communicate()
print out.split(), err
if "Linux" in out.split():
break
count += 1
트리플 엑스