ddrescue
| ddrescue | |
|---|---|
| Original author(s) | Antonio Diaz Diaz |
| Initial release | 12 August 2004 |
| Written in | C++ |
| Operating system | Unix-like |
| Type | Data recovery |
| License | 2014: GPL-2.0-or-later[a] 2007: GPL-3.0-or-later[b] 2004: GPL-2.0-or-later[c] |
| Website | www |
GNU ddrescue는 디스크 드라이브, DVD, CD, 및 기타 디지털 저장 매체를 위한 데이터 복구 도구입니다. 그것은 디스크 섹터와 같은 원시 스토리지 블록을 한 장치나 파일에서 또 다른 장치나 파일로 복사하는 동시에, 부분적으로 읽은 블록에서 양호한 섹터를 스크랩함으로써 데이터 손실을 최소화하기 위해 지능적인 방식으로 읽기 오류를 처리합니다.
GNU ddrescue는 C++ 프로그래밍 언어로 작성되었고, 원래 2004년에 출시된 오픈-소스 소프트웨어로 제공됩니다. 그것은 역시 대부분의 리눅스 배포판에서 구성 요소로 바이너리 형식으로 제공됩니다.
Description
ddrescue는 디스크 드라이브 및 기타 저장 장치에서 데이터를 복사하여 장애가 발생하더라도 추가 손상을 최소화하기 위해 정교한 알고리즘을 사용합니다.[1] 그것은 자유와 오픈 소스 소프트웨어에서 블록-크기-변경 알고리즘을 가장 정교하게 구현한 것으로 고려되고,[2][3] 필수 데이터 복구 도구로 여겨집니다.[4][5]
복사 프로세스의 상태는 복구 알고리즘의 여러 단계의 진행을 지원하는 맵 파일 (이전에는 로그 파일이라고 불림)에 기록되고, 복구 중단을 용이하게 하고, 더 많은 데이터를 복구하기 위해 필요에 따라 복구를 반복합니다. 그 프로그램은 이전에 발생하지 않은 추가 오류가 이전에 복구된 블록을 파괴하지 않도록, 배드 블록 대신 출력에 영들을 쓰지 않습니다. 이렇게 하면 결함이 있는 여러 개의 CD 또는 DVD 복사본을 하나의 백업 파일로 병합할 수 있습니다. 맵 파일 덕분에, 두 번째 및 연속 복사본에서 필요한 블록만 읽습니다.
Algorithm
ddrescue의 알고리즘은 매뉴얼에 설명되어 있습니다. 대체로 다음과 같습니다:[6]
- 모든 각 블록은 "non-tried" 블록으로 시작됩니다.
- (Copying) 매체의 "good" 부분을 빠르게 복사하기 위해 시간 제한을 갖는 큰 블록에서 정규 복사가 수행됩니다. 시간이 초과된 부분은 시간 제한을 두고 역방향으로 재시도됩니다. 그런-다음 남아있는 블록에는 시간 제한 없이 순방향 대형-블록 통과가 적용된 다음, 역방향 대형 블록 통과가 적용됩니다. 남아있는 블록은 문제가 있고 "non-trimmed" 블록, 즉 트리밍 위한 후보로 고려됩니다.
- (Trimming) 트리밍되지 않은 각 블록에 대해, 처음부터 섹터별로 복사하여 실패한 첫 번째 위치를 찾아 불량 섹터로 표시합니다. 그런-다음 끝에서부터 섹터-별로 복사하여 마지막으로 실패한 위치를 찾습니다. 알려진 배드 섹터에 인접한 임의의 가장자리는 트리밍 후보로 고려되지 않습니다. 남아있는 섹터는 "scraping"을 위한 후보입니다.
- (Scraping) 남아있는 "non-scraped" 블록에 대해, 그것들을 섹터별로 복사합니다. 실패는 불량 섹터로 표시됩니다.
- (Retrying) 선택적으로 재시도 제한에 도달할 때까지 섹터별로 앞으로 읽은 다음 뒤로 읽음으로써 남아있는 불량 섹터를 살펴봅니다. 기본값은 전혀 재시도하지 않는 것입니다.
인터럽트가 발생될 때 진행 상황이 맵파일에 저장됩니다. 시작하는 동안 수행해야 할 작업을 결정하기 위해 맵파일을 읽습니다.
Fill mode
ddrescue에는 역시 블록 상태를 덮어쓸 것임을 설명하는 선택기 문자열을 사용하여, 제공된 맵파일을 사용하여 출력 파일의 일부를 선택적으로 덮어쓸 수 있는 채우기 모드도 있습니다. 그것은 아무것도 구조하지 않습니다. 용도는 다음과 같습니다:[6]
- "BAD-SECTOR_" 텍스트를 여러 번 반복하여 맵 파일에서 불량 섹터에 해당하는 이미지의 부분을 채웁니다.[6]
- 맵 파일에서 복사되지 않은 부분에 해당하는 이미지 부분을 "NON-RESCUED-SECTOR_"라는 텍스트로 여러 번 반복하여 채웁니다.[6]
- 보증 교체를 위해 그것을 제조업체에 보내기 전에 맵에서 불량이 아닌 섹터에 해당하는 소스 디스크 (블록 장치는 *nix 시스템에서 하나의 파일입니다)의 부분을 영으로 채우고 모든 양호한 부분을 지웁니다.[6]
- 불량 섹터를 강제로 다시 매핑하기 위해 맵에서 불량 섹터에 해당하는 소스 디스크 부분을 영으로 채웁니다.[6]
Unrelated recovery tools
GNU ddrescue는 디스크 스토리지에서 스토리지의 블록을 복사하는 dd의 파생물이 아니지만, 전략적, 알고리즘 방식으로 작동하지 않습니다.
GNU ddrescue는 비슷한 이름의 프로그램 dd_rescue와도 다릅니다.[7]
See also
Notes
References
- ^ "GNU ddrescue Manual". The GNU project. Retrieved 6 September 2013.
- ^ "Disk drive recovery: ddrescue, dd_rescue, dd_rhelp". John Gilmore. Archived from the original on 30 May 2013. Retrieved 6 September 2013.
- ^ "Damaged Hard Disk". www.cgsecurity.org. Archived from the original on 14 November 2023. Retrieved 6 September 2013.
- ^ "Best Data Recovery Tools - Top 10 List". Geekyprojects. Retrieved 6 September 2013.
- ^ "12 essential system recovery tools". PC Plus (Issue 303). 22 January 2011. Retrieved 6 September 2013.
- ^ a b c d e f "ddrescue - Manual". The GNU project. Retrieved 6 September 2013.
- ^ Kurt Garloff's dd_rescue