6 주 복구 후 DDRescue 로그 파일 손상


0

나는 거의 2 개월 동안 3Tb 드라이브에서 DDRescue를 실행하고 있었고 시스템이 충돌하고 사용중인 로그 파일이 손상되었을 때 약 2.8Tb를 복구했습니다. 해당 로그 파일의 일부를 복구 할 수 있었지만 복구 된 로그의 섹터에 차이가있어 다시 시작할 때 DDRescue에서 오류를 반환합니다. 다음은 로그 파일을 볼 수있는 wetransfer 링크입니다. https://we.tl/58aSOeCOJo

손상된 데이터를 꺼내기 위해 로그 파일을 편집하려고 시도했지만 이것이 섹터의 ​​연대기에서 '갭'을 생성하기 때문에 DDRescue는 그런 것처럼 보이지 않습니다.

도움을 주셔서 감사합니다.이 드라이브를 저장하기 위해 2 개월 동안 DDRescue를 다시 실행하지 않아도됩니다.


ddrescue를 실행할 때 어떤 명령을 사용하고 있습니까?
Pimp Juice IT

ddrescue -f -d -R -r3 / dev / sde / dev / sdf /mnt/somedir/logfiles/log3.log
Arnaud Paris

로그 파일에서 마지막으로 종료 된 지점에서 ddrescue를 다시 시작하는 방법에 대한 아이디어가 있습니까? '0x2BA923A0000 0x00010000 *'라고 표시된 라인 880828에있는 것 같습니다
Arnaud Paris

"손상된 데이터를 가져 오기 위해 로그 파일을 편집하려고했습니다"-어떻게 했습니까? 이진 가비지 블록을 삭제하는 것만으로는 충분하지 않습니다. 그 뒤에 나오는 줄은 반만 유효하기 때문에 이전 줄을 반복합니다. 그것들도 삭제 했습니까?
Kamil Maciorowski

예 손상된 줄을 삭제하려고 시도했지만 작동하지 않습니다. DDrescue는 로그 파일에 삭제 한 정확한 줄 번호에 문제가 있다고 말합니다.
Arnaud Paris

답변:


1

비슷한 문제를 가진 다른 사용자에게이 답변을 적어도 부분적으로 유용하게 만들려면 여기에서 로그의 중요한 부분을 인용 해 보겠습니다.

# Rescue Logfile. Created by GNU ddrescue version 1.18.1
# Command line: ddrescue -f -d -R -r3 /dev/sde /dev/sdf /mnt/somedir/logfiles/log3.log
# Start time:   2017-08-14 10:22:44
# Current time: 2017-08-14 12:13:09
# Copying non-tried blocks... Pass 1 (backwards)
# current_pos  current_status
0x27BF0520000     ?
#      pos        size  status
0x00000000  0x02870000  +
0x02870000  0x001A0000  *
0x02A10000  0x00010200  +
0x02A20200  0x0005FE00  *
# ...                          many lines here
0x2BA92360000  0x00040000  ?
0x2BA923A0000  0x00010000  *
#                              binary garbage here
0xE4E1710000  0x00010000  *
# ...                          many lines here
0x13D75970000  0x00000200  +
0x13D75970200  0x00

이진 가비지 바로 앞에있는 행이 마지막으로 유효한 행임을 식별했습니다. 그것은 0x2BA923A0000 0x00010000 *귀하의 경우 줄 번호 880829입니다. 가비지 뒤의 줄이 더 낮은 위치 (첫 번째 숫자)를 가지기 때문에 이전 줄을 복제하는 것처럼 보입니다.

내가 했어

<log3.txt head -n 880829 > log3new.txt

실행하십시오 ddrescue( infile큰 스파 스 파일의 루프 장치이므로 중요하지 않습니다). 583658 라인에 대해 불평했습니다.

이것은 이웃과의 선입니다.

# ...
0x186C6940000  0x00000200  +
0x186C6940200 A9520200  0x0001FE00  *  # <- this line here
0x24AA9540000  0x00000200  +
# ...

이 문제를 해결하려면에서 전체 범위를 커버해야 0x186C6940200하는을 0x24AA9540000, 그래서 로그 파일은 연속이다. 길이는 0x24AA9540000- 0x186C6940200= 0xC3E2BFFE00입니다. 전체 라인 583658은 다음과 같아야합니다.

0x186C6940200 0xC3E2BFFE00 ?

여기서 ?시도하지 않은 블록을 의미합니다.

나는 고쳤다

sed -i '583658s/.*/0x186C6940200 0xC3E2BFFE00 ?/' log3new.txt

결과 로그 파일은 유효합니다 ddrescue.


편집하다

내가 가지고있는 문제는 DDrescue가 2041GB 만 복구하는 동안 충돌이 발생하는 동안 2800GB 이상이었고 마지막 800GB를 복구하는 데 몇 주가 걸렸다 고 생각한다는 것입니다.

사실 우리는 그것이 같은 800GB인지 알 수 없습니다. 우리가 소개 한 이러한 시도되지 않은 블록이 정확히 어디에 있는지 보여주는 도구 ddrescueview ( ddrescueviewUbuntu에서 패키지로 사용 가능한 GUI 포함 )가 있습니다. 현재 위치는 다른 곳에 있습니다.

ddrescueview 스크린 샷


쓰레기 후의 정보가 그 정보와 관련이 있는지 궁금합니다. 로그 파일에 포함시킬 수있는 방법이 있습니까?

이 "쓰레기 후"부분, 마지막 129289 줄을 분리했습니다.

tail -n 129289 log3.txt > extra.txt

이 명령은 당신에있는 선이 표시됩니다 extra.txt있지만에서를 log3new.txt:

diff --suppress-common-lines extra.txt log3new.txt | grep -e '^<'

출력은

< 0x13D75970200  0x00

가비지가 원래의 가비지 앞에 있지 않은 이후의 마지막 (불완전한) 줄만 의미합니다 log3.txt. 죄송합니다. log3new.txt이미 귀하가 얻을 수있는 최선 인 것 같습니다 .


고마워 카밀, 그것은 매우 도움이되었습니다! 로그 파일을 수정하여 DDrescue에서 승인했습니다. 내가 가지고있는 문제는 DDrescue가 2041GB 만 복구하는 동안 충돌이 발생했을 때 2800GB 이상이었고 마지막 800GB를 복구하는 데 몇 주가 걸렸다 고 생각한다는 것입니다. 쓰레기 후의 정보가 그 정보와 관련이 있는지 궁금합니다. 로그 파일에 포함시킬 수있는 방법이 있습니까? 도와 주셔서 감사합니다!
Arnaud Paris

@ArnaudParis 나는 대답을 확장했다.
Kamil Maciorowski

알겠습니다 ... 2.04Tb부터 프로세스를 다시 시작해야 할 것 같으며이 800Gb가 복구하는 데 가장 오래 걸리지 않았기를 바랍니다. 모든 설명에 대해 다시 한 번 감사드립니다. 전체 프로세스가 훨씬 명확 해졌습니다. 이제 내가 가진 모든 것에 대한 또 다른 질문은 복구중인 디스크가 RAID 배열의 일부 이며이 배열의 모든 드라이브가 3Tb라는 것입니다. 복사하려는 드라이브는 4Tb이지만 지금까지 복사 한 것을 3Tb 빈 드라이브로 전송하여 원래 드라이브와 일치하도록하려면 DDrescue를 사용하는 것이 어려울까요?
Arnaud Paris

DDrescue에는 두 개의 드라이브를 섹터별로 '비교'할 수있는 옵션이 있습니까?
Arnaud Paris

@ArnaudParis "원래의 드라이브와 일치하도록 지금까지 복사 한 것을 3Tb 빈 드라이브로 전송하려면 DDrescue와 함께하는 것이 possilbe일까요?" -- 예. 디스크가 일반 다음 건강 경우 dd또는 cat할 것, ddrescue안전한 선택은 생각입니다. - "DDrescue에는 두 개의 드라이브를 섹터별로 비교할 수있는 옵션이 있습니까?" -나는 그렇게 생각하지 않습니다. 후자에 복사 한 후이 4TB 드라이브를 새 3TB 드라이브와 비교하려는 경우 옵션 cmp과 함께 사용하십시오 -n. 비교할 바이트 수는 더 작은 드라이브의 정확한 용량입니다.
Kamil Maciorowski
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.