Ddrescue

GNU ddrescue는 디스크 드라이브, DVD, CD 및 기타 디지털 저장 매체를 위한 자료 복구 도구이다. 이 프로그램은 부분적으로 읽힌 블록에서 양호한 섹터를 긁어모아 데이터 손실을 최소화하도록 지능적인 방식으로 읽기 오류를 처리하면서, 디스크 섹터와 같은 저장 장치의 로우 블록(raw blocks)을 한 장치나 파일에서 다른 장치나 파일로 복사한다.

GNU ddrescue는 C++ 프로그래밍 언어로 작성되었으며, 2004년에 처음 출시된 오픈 소스 소프트웨어로 제공된다. 또한 대부분의 리눅스 배포판에서 구성 요소로서 바이너리 형태로 제공된다.

 설명 
ddrescue는 정교한 알고리즘을 사용하여 디스크 드라이브 및 기타 저장 장치에서 데이터를 복사하며, 장치에 결함이 있는 경우 추가 손상을 가능한 한 적게 입히도록 설계되었다. 이는 자유 오픈 소스 소프트웨어 중에서 가장 정교한 블록 크기 변경 알고리즘 구현을 가진 것으로 평가받으며, 필수적인 자료 복구 도구로 간주된다.

복사 프로세스의 상태는 맵 파일(이전에는 로그파일이라 불림)에 기록되며, 이는 복구 알고리즘의 여러 단계를 진행하는 데 도움을 주고, 복구 작업을 중단했다가 더 많은 데이터를 복구하기 위해 필요에 따라 반복하는 것을 용이하게 한다. 이 프로그램은 불량 블록 대신 출력 위치에 0을 쓰지 않으므로, 이전에 발생하지 않았던 추가 오류가 이미 복구된 블록을 파괴하지 않도록 한다. 이를 통해 CD나 DVD의 여러 결함이 있는 복사본을 하나의 백업 파일로 병합하는 것이 가능하다. 맵 파일 덕분에 두 번째 및 이후의 복사본에서는 필요한 블록만 읽어 들인다.

 알고리즘 

ddrescue의 알고리즘은 매뉴얼에 설명되어 있다. 개략적으로는 다음과 같다:

 모든 블록은 "시도되지 않음(non-tried)" 상태로 시작한다.
 (복사) 매체의 "양호한" 부분을 빠르게 복사하기 위해 시간 제한을 두고 큰 블록 단위로 일반적인 복사를 수행한다. 시간 초과가 발생한 부분은 시간 제한을 두고 역순으로 다시 시도한다. 그 후 남은 블록에 대해 시간 제한 없이 순방향 대형 블록 패스를 적용하고, 이어서 역순 대형 블록 패스를 적용한다. 남은 블록은 문제가 있는 것으로 간주되며 "트리밍되지 않음(non-trimmed)", 즉 트리밍 후보가 된다.
 (트리밍) 트리밍되지 않은 각 블록에 대해 시작 부분부터 섹터 단위로 복사하여 첫 번째 실패 지점을 찾아 불량 섹터로 표시한다. 그런 다음 끝 부분부터 섹터 단위로 복사하여 마지막 실패 지점을 찾는다. 알려진 불량 섹터와 인접한 모든 가장자리는 트리밍 후보로 간주되지 않는다. 나머지 섹터는 "스크래핑(scraping)" 후보가 된다.
 (스크래핑) 남은 "스크래핑되지 않은(non-scraped)" 블록에 대해 섹터 단위로 복사한다. 실패한 부분은 불량 섹터로 표시된다.
 (재시도) 선택적으로 재시도 제한에 도달할 때까지 섹터 단위로 순방향 및 역순으로 읽어 남은 불량 섹터를 확인한다. 기본값은 전혀 재시도하지 않는 것이다.

중단될 경우 진행 상황은 맵 파일에 저장된다. 시작 시 맵 파일을 읽어 수행해야 할 작업을 결정한다.

 채우기 모드 (Fill mode) 
ddrescue는 또한 채우기 모드를 제공하여, 제공된 맵 파일을 사용해 출력 파일의 일부를 선택적으로 덮어쓸 수 있다. 이때 덮어쓸 블록의 상태를 설명하는 선택 문자열을 사용한다. 이 모드는 데이터를 복구하지 않는다. 용도는 다음과 같다:

 맵 파일에서 불량 섹터에 해당하는 이미지 부분을 "BAD-SECTOR_"라는 텍스트를 여러 번 반복하여 채운다.
 맵 파일에서 복제되지 않은 부분에 해당하는 이미지 부분을 "NON-RESCUED-SECTOR_"라는 텍스트를 여러 번 반복하여 채운다.
 보증 교체를 위해 제조사에 보내기 전에 모든 양호한 부분을 지우기 위해, 맵에서 불량 섹터가 아닌 부분에 해당하는 원본 디스크(유닉스 계열 시스템에서는 블록 장치가 파일임)의 부분을 0으로 채운다.
 불량 섹터의 재매핑(remap)을 강제하기 위해 맵에서 불량 섹터에 해당하는 원본 디스크의 부분을 0으로 채운다.

 관련 없는 복구 도구 
GNU ddrescue는 디스크 저장소에서 저장 블록을 복사하는 dd의 파생물이 아니다. dd는 전략적이고 알고리즘적인 방식으로 작동하지 않는다.

GNU ddrescue는 또한 이름이 비슷한 프로그램인 와는 별개의 프로그램이다.Kurt Garloff's dd_rescue

 같이 보기 
 백업
 디스크 복제
 GNU 프로젝트

 내용주 

 각주 

 외부 링크 
 GNU ddrescue Manual

분류:GNU 프로젝트 소프트웨어
분류:C++로 작성된 자유 소프트웨어
분류:C++ 소프트웨어
분류:하드 디스크 소프트웨어
분류:GPL 라이선스 소프트웨어