불량 섹터 또는 하드웨어 오류가 있는 하드 드라이브에서 데이터를 복구하기 위한 ddrescue와 같은 오류 처리 기능을 갖춘 rsync와 같은 파일 복사 유틸리티

불량 섹터 또는 하드웨어 오류가 있는 하드 드라이브에서 데이터를 복구하기 위한 ddrescue와 같은 오류 처리 기능을 갖춘 rsync와 같은 파일 복사 유틸리티

불량 디스크 헤드, 불량 모터 또는 하드 드라이브가 엄청나게 느리고 많은 양의 데이터를 읽게 만드는 기타 문제 등 잠재적인 기계적 문제로 인해 읽지 못하는 불량 블록이나 섹터가 있는 하드 드라이브가 있습니다. 읽기 오류. 평균 50KB/초를 보고 있으며 일부 읽기는 10KB/초 미만으로 떨어지고 파일이나 섹터 전체에서 2~10분 이상(예: 시간이 초과되기 전에 rsync를 사용하세요).

속도는 매우 다양하고 파일에 많이 걸리며, 마침내 "고착 해제"되면 다시 걸리기 전에 짧은 시간 동안만 지속되는 것처럼 보입니다. 또한 드라이브는 가끔 파일 복사 소리만 들리며 매우 조용합니다(일반적으로 잠시 동안 멈추거나 풀렸다가 다시 멈추는 경우). 따라서 일반적으로 HDD 사망과 관련된 사악한 소리는 없습니다. 누군가는 문제가 잘못 정렬된 디스크 헤드로 인해 발생한 것처럼 들리며 최종적으로 데이터를 성공적으로 읽기 전에 많은 재읽기가 필요하다고 제안했습니다. 그럴듯해 보이지만 빗나갑니다...

어쨌든, rsync의 문제는 적절한 오류 처리 지원이 없는 것 같다는 것입니다. 분명히 이는 고장난 하드 드라이브에서 데이터를 복구하는 데 사용하기 위한 것이 아니었지만 소위 "데이터 복구" 유틸리티라고 불리는 모든 유틸리티는~이다이러한 용도로 사용되는 것은 일반적으로 죽어가는 하드 드라이브에서 파일을 복사하는 대신 삭제된 파일이나 엉망인 파티션을 복구하는 데 중점을 둡니다. 삭제된 파일 복구는 분명히 나에게 필요한 것이 아니기 때문에 아직 원하는 것을 찾을 수 없다는 실망감을 이해하실 수 있을 것입니다.

당연히 여기에서 "ddrescue를 사용해야 합니다!"라고 말할 수 있습니다. 글쎄, 다 괜찮고 멋지지만 이미 대부분의 데이터를 백업했기 때문에 특정 파일을 복구하고 싶습니다. ddrescue처럼 전체 파티션을 블록 단위로 복구하는 데는 관심이 없습니다. 나는 단지 특정 파일과 디렉토리를 구출하는 데에만 관심이 있습니다.

이상적으로, 제가 원하는 것은 rsync와 ddrescue 사이의 일종의 교차입니다.rsync(ddrescue에서 요구하는 두 개의 전체 파티션이 아닌)와 같은 일반 파일의 디렉터리로 소스와 대상을 지정할 수 있고, 초기 실행 시 오류가 있는 파일을 건너뛸 수 있는 방법이 있으며, 다음을 사용하여 해당 파일의 복구를 시도할 수 있습니다. 나중에 실행하면 오류가 발생합니다(물론 명령이 약간 변경됨). 재시도 횟수를 지정하는 옵션도 제공할 수도 있습니다. ddrescue가 블록과 작동하는 방식과 마찬가지로 특정 파일과 작동하는 유틸리티만 필요합니다. rsync와 같은 디렉토리.

그럼 제가 여기서 공상을 하고 있는 걸까요? 아니면 이런 일을 할 수 있는 뭔가가 세상에 존재하는 걸까요? 아니면 rsync나 ddrescue를 그런 방식으로 작동시키는 방법이 있을까요? 나는 "구출"할 파일을 선택할 수 있고 초기 실행에서 오류가 있는 파일을 건너뛰고 나중에 해당 오류를 다시 시도/재시도할 수 있는 한 어떤 솔루션이든 효과가 있을 수 있다는 점에 열려 있습니다.

지금까지 다음 옵션을 사용하여 rsync를 시도했지만 시간 초과보다 오랫동안 파일에 멈춰 있는 경우가 많으며 이상적으로는 다음 파일로 이동했다가 나중에 가져온 파일로 돌아오길 바랍니다. 붙어있다. 나는 그것이 가능하다고 생각하지 않는다. 어쨌든, 지금까지 제가 사용한 것은 다음과 같습니다.

rsync -avP --stats --block-size=512 --timeout=600 /path/to/source/* /path/to/destination/

답변1

읽기가 매우 느린 3TB Hitachi가 있는데 ddrescue는 파일 수준에서 작동합니다. 그러나 디렉토리에는 없습니다. 그러나 ddrescue의 --timeout 또는 --min-read-rate 옵션이 작동하지 못했습니다.

한 번에 하나의 파일을 복구하기 위해 스크립트에서 이 작업을 수행할 수 있습니다.

cat listoffiles | while read file
pipe while> do
pipe while> ls -l "$file"
pipe while> ddrescue -n -e1  "$file" /cc/RecoveredFiles/"$file" /cc/RecoveredFiles/"$file".llog
pipe while> date
done | tee -a  /cc/RecoveredFiles/ddrescue.log

답변2

어쩌면 이 질문을 받은 이후 몇 년 동안 rsync가 변경되었을 수도 있습니다.

내 경험에 따르면 rsync현재 죽어가는 하드 드라이브에서 내용을 복사하는 작업이 훌륭하게 수행되고 있습니다.

rsync -a <src> <dest>

오류가 발생하면 빠르게 이동하고, 다시 실행하면 해당 파일을 다시 시도하기 위해 돌아갑니다.

rsync --version보고서 rsync version 2.6.9 protocol version 29

다른 답변에 관해서 :

2011년 답변은 ddrescue와 상업적으로 동등한 도구를 홍보하는 것 같습니다. 파일을 인식한다는 표시는 없습니다. 수상한. 2013년 답변은 흥미롭습니다.

답변3

좋은 질문입니다. 세부 수준이 마음에 듭니다. 이 시나리오에서 잘 작동하는 유틸리티의 경우 Filesscavenger를 사용해 보는 것이 좋습니다.퀘텍. 100개 이상의 과도한 다시 읽기가 허용되지만 더 중요한 것은 파일을 평가하는 데 시간을 낭비하지 않고 전체 내용을 이미지에 덤프한 다음 이미지를 로드하고 스캔할 수 있는 디스크 이미징 기능이 있다는 것입니다. 파일용. 이 유틸리티는 가정 사용자를 위해 50달러지만 다운로드하여 돈을 쓰기 전에 이미지에서 무엇을 복구할 수 있는지 테스트할 수 있습니다.

전문적으로 사용하는 경우 비용이 꽤 들지만 논리 및 하드웨어 RAID 어레이 지원을 포함한 중요한 기능을 얻을 수 있습니다.

이 방법도 실패하면 소프트웨어 복구 도구를 사용할 수 없는 상태일 수 있습니다. 귀하가 실험실 복구 비용을 정당화할 수 있는 경우 귀하가 있는 국가, 주 및 도시를 알려주십시오. 가까운 당사 또는 경쟁사 실험실 중 하나를 추천할 수 있습니다.

크리스

답변4

당신이 원하는프로그레시브 복사기. 전체 드라이브를 대상으로 하지만 파일 경로를 매개변수로 사용하므로 개별 파일에도 작동합니다. 나는 이것이 디렉토리에 대해서는 작동하지 않을 것이라고 생각합니다. 각 파일을 지정해야 합니다.

관련 정보