매우 오래 오래된 CD를 복구를 위한 방법 정리(공유)입니다.

요즘 컴퓨터 조립에는 CD, DVD 드라이브를 전혀 고려하지 않아 사용하시는 분이 적을 듯합니다.

하지만 한때 백업용 미디어로 공(blank) CD, 공 DVD를 기록하여 사용하는 것이 일반 적일 때가 있었습니다. ㅎ

그런데 이 CD-R, DVD-R 미디어의 특성에 의해 수명이 길지 않고, 백업한 자료를 읽기 힘든 상황이 된다는 것이죠!

 

그냥 포기하기에는 아까운 과거 data를 복구하는 방법을 정리(공유)합니다.

여러 가지 복구 도구가 있어나 제가 사용한 tool을 간단히 공유합니다.

 

DDRESCUE

Linux에서 CD-ROM 복구

자료를 찾아보고, 아래에서 안내하는 방법으로 시도합니다.

https://superuser.com/questions/1425275/how-to-copy-a-harmed-cd-into-an-iso-on-linux

 

How to copy a harmed CD into an ISO on Linux?

I have a CD with a defective sector, and when I try to copy it with K3B it hangs there no matter what error handling configuration I chose. Is there a way of cloning the CD into an ISO, even it ha...

superuser.com

사용법 등등 길지만 요약하면 아래처럼 linux에 설치하여 동작시킬 수 있습니다.

저는 얼마 전에 NAS용 linux를 구축하여 해당 기기(ODROID-M1)에 휴대용 DVD-R에서도 하고, Windows 10 안에서 VM(Virtual Machine)에서 Ubuntu를 사용하여서도 복원을 시도했습니다.

 

DDRESCUE 사용 준비

배포판이 없는 관계로 직접 받고(wget), 설치, 컴파일하면 됩니다 (개발 tool 설치가 필요합니다!)

lzip도 미설치라 추가 설치 했습니다.

wget http://ftp.jaist.ac.jp/pub/GNU/ddrescue/ddrescue-1.27.tar.lz
sudo apt install lzip
lzip -cd ddrescue-1.27.tar.lz | tar -xf -
cd ddrescue-1.27
./configure
sudo apt install make
sudo apt install build-essential
make

 

복구 대상 CD를 넣고 아래 명령으로 disk의 경로를 확인합니다.

(외장 드라이브는 적절히 미리 마운트 해 주세요^^)

sudo blkid

저는 아래와 같이 확인이 됩니다 (다른 드라이브 경로는 빼고 딱 CD 파일시스템인 iso9660 항목만)

/dev/sr0: UUID="2000-06-30-21-29-37-49" LABEL="VideoGIS_M-kM-^BM-^YM-kM-^OM-^Y1" TYPE="iso9660"

 

복구 시작!

그리고 최초 복구 시작 합니다 (반복 혹은 다른 시스템에 옮겨서 문제 부분만 재시도 가능하기에 여기서는 최초)

sudo ./ddrescue -n -b2048 /dev/sr0 cdimage-mydisk mapfile-mydisk
GNU ddrescue 1.27
Press Ctrl-C to interrupt
     ipos:  101908 kB, non-trimmed:        0 B,  current rate:   2097 kB/s
     opos:  101908 kB, non-scraped:        0 B,  average rate:   1377 kB/s
non-tried:  535996 kB,  bad-sector:        0 B,    error rate:       0 B/s
  rescued:  101908 kB,   bad areas:        0,        run time:      1m 14s
pct rescued:   15.97%, read errors:        0,  remaining time:          4m
                              time since last successful read:          0s
Copying non-tried blocks... Pass 1 (forwards)

한참을 동작하고 종료가 됩니다.

 

 

반복 복구 시도

추가로 반복하여 복구를 하려면(이전 결과를 재활용, 다른 시스템에서 다른 드라이브에서 시도도 포함) 아래처럼 합니다.

cdimage** 가 ISO 파일이고, mapfile**이 복구 정보입니다. 이 파일 안에 비정상적인 위치가 기록이 됩니다. 이것으로 여러 시스템에서 문제 부분만 부분 복구를 시도합니다.

sudo ./ddrescue -d -r1 -b2048 /dev/sr0 cdimage-mydisk mapfile-mydisk

 

모든 에러가 없다면 생성된 cdimage를 mount 하여 사용하거나 다른 곳으로 복사하면 됩니다.

에러가 있다면 cdimage, mapfile을 여러 시스템 혹은 동일시스템에서 반복하여 (-d 옵션) 복구 시도 합니다.

모든 에러가 없어지지 않으면 적당선에서 cdimage를 열어서 일부라도 잘 건지면 됩니다.

 

 

딱 시작에 필요한 내용만 정리했는데, 아래 사이트에서 보다 상세한 설명과 방법(시나리오)을 확인하실 수 있습니다.

https://www.gnu.org/software/ddrescue/

 

Ddrescue - GNU Project - Free Software Foundation (FSF)

Ddrescue - Data recovery tool [ English | Espa駉l | Fran鏰is | Italiano | Russkii ] Introduction GNU ddrescue is a data recovery tool. It copies data from one file or block device (hard disc, cdrom, etc) to another, trying to rescue the good parts first

www.gnu.org

 

+ Recent posts