d라이브러리









'지워진 데이터' 되살리려면

기초부터 다시 시작하는 PC교시⑩

정전, 바이러스 침투, 조작 실수, 고장…. 어떤 원인으로든 정성들여 작업한 데이터가 증발한 경우처럼 허망한 때가 없다. 귀중한 자료를 지키는 요령과 데이터 소생법을 알아보자.

울고 싶어라!
"파도야 어쩌란 말이냐. 파도야 어쩌란 말이냐. 님은 물같이 끄떡도 않는데. 파도야 어쩌란 말이냐?"

컴퓨터를 사용하다 보면 이런 시 구절이 주는 안타깝고 처절한 감정이 절절이 와닿을 때가 있다. 가령 워드프로세서 프로그램으로 밤새도록 원고를 쓰고 있는데 갑자기 이상한 현상이 생겼다 하자. 원하는 명령을 내리기 위해 메뉴 호출키를 눌렀는데 컴퓨터는 아무런 반응도 없다. 다른 키를 눌러보았지만 역시 묵묵부답. 초조해진 나머지 이렇게도 해보고 저렇게도 해보았지만 결과는 마찬가지. 할 수 없이 컴퓨터를 부팅시켜보니 작업한 내용은 전혀 저장이 되지 않았고, 몇시간에 걸쳐 입력한 내용은 온데 간데 없다면….

그러나 의외로 이런 일은 적지 않다. 열심히 작업을 하고 있는데 정전이 되어 버린다면 차라리 천재지변 탓으로 돌린다. 공교롭게도 조카가 부주의하게 컴퓨터가 연결된 코드에 걸려 넘어지면서 '국지적 정전'이 일어났다 해도 결과는 마찬가지다.

그러나 이 정도는 다행일 수도 있다. 겨우 몇 시간 작업한 결과만 날아가 버렸으니 말이다. 필자는 모대학에서 역사를 강의하시는 분이 컴퓨터를 이용해 몇년에 걸쳐 입력해 둔 조선왕조실록의 데이터 베이스가 하루 아침에 날아가버린 사례를 알고 있다. 그분의 말씀으로는 그 피해액만도 수백만원에 이른다고 한다. 이분은 하드디스크를 과신한 나머지 플로피 디스크로 백업하는 간단한 안전조치를 하지 않고 있었다. 어느날 후배가 게임을 한다고 디스켓을 넣었다가 그만 악명높은 '어둠의 복수자'에 걸리는 바람에 약 2년에 걸쳐 이룩한 공부가 '도로아미타불'이 되어 버린 것이다. 이밖에도 컴퓨터 사용자에게 있어서 멀쩡하던 파일이 깨진다든지, 실수로 파일이 지워진다든지 하는 사태는 다반사라고 할 수 있다.

요즈음 자동차 운전자에게 안전띠는 권유의 차원을 넘어선 의무의 문제가 되었다. 목적지에 무사히 도착하기 위해서는 차의 성능도 좋아야겠지만 무엇보다도 안전이 담보되어야 하기 때문이다. 컴퓨터를 사용하는 경우에도 상황은 마찬가지다.

컴퓨터가 시간 많은 사람의 장난감이 아닌 한 명확한 사용 목적이 있을 수 밖에 없다. 컴퓨터 사용자는 갖가지 응용 프로그램을 이용하여 자신이 목적하는 데이터를 만들어 내게 되는데, 이를 위해서는 프로그램과 데이터의 안전한 보존이 요구된다.

작업중에는 반드시 자동 저장을

어떤 응용프로그램을 실행시켜 데이터를 산출해나가는 과정에서 안전을 도모하는 기본적인 방법은 저장과 백업이다. 컴퓨터 사용의 초보자들은 컴퓨터의 기억장치인 메모리와 저장장치인 디스크를 혼동하는 경우가 많다. 그러나 기억장치로서의 메모리는 컴퓨터를 끄거나 재부팅시키면 그 내용이 없어지는 '휘발성'을 가지고 있다.

그런데 프로그램을 사용해서 데이터를 작성하고 있을 때는 모든 것이 거의 메모리에서 이루어진다. 그러므로 작업하고 있는 내용을 파일로 저장해두지 않는다면 기존의 작업은 헛수고가 된다. 이를 방지하기 위해 어떤 프로그램들은 '자동저장'이라는 기능을 갖추고 있다 예를 들면 <;한글>;프로그램에서는 '선택사항' 메뉴에 자동저장간격을 설정할 수 있도록 해 두고 있다.

자동저장을 하는 방법은 두가지가 있는데 그 첫번째는 잠시 키보드의 입력이 멈추어진 틈을 타서 자동으로 저장되는 방법이다. 다른 하나는 일정한 시간이 되면 자동적으로 저장이 되는 방법이다. 저장간격 명령을 내리고 자동 저장의 시간을 초단위로 정해주면 컴퓨터는 사용자가 타자를 하다가 지정된 시간만큼 키 입력을 하지 않을 때마다 작업내용을 저장한다.

프로 기사들이 바둑을 둘 때 옆에서 초읽기를 하듯이, 컴퓨터에서도 초읽기가 이루어진다. 컴퓨터는 사용자가 키입력을 멈추면 그 직후부터 초읽기를 하여 저장간격에 설정된 수치가 되면 자동으로 저장을 하는 것이 첫번째 방법인 것이다. <;한글>; 1.52까지는 이 방법에 의한 자동저장만 가능하였다. 그러나 쉬지 않고 키 입력을 하는 사람에게는 이런 방법이 별 도움이 되질 못한다. 왜냐하면 컴퓨터가 자동으로 저장할 틈을 주지 않기 때문이다.

그래서 <;한글>; 2.0판부터는 두번째 방법이 병행되도록 프로그램이 개선되었다. 즉 일정한 시간이 되면 무조건 자동저장을 실시하는 방법이 추가된 것이다. 여기서는 0분에서 60분까지의 수치가 입력 가능한데, 예를 들어 10이라는 수치를 입력해 두면 매 10분마다 자동저장이 일어 난다. 만약 저장간격을 모두 '0'이라는 수치로 잡아두면 자동저장은 이루어지지 않는다. <;한글>;뿐만 아니라 고급 기능의 워드프로세서나 데이터 베이스에서는 이와 같이 자동저장을 할 수 있도록 돼 있다.
 

<;한글>;2.0의 자동저장 장치. 자동저장은 PC의 안전띠다.
 

중요한 파일은 반드시 사본을 -BACKUP

창고에 보관한 물건이라도 언제나 그대로 있는 것은 아니다. 도둑이 들어서 가져갈 수도 있고, 쥐가 들어와서 갉아 먹을 수도 있다. 비록 하드 디스크에 파일의 형태로 존재하는 데이터라도 내용이 훼손되거나 지워질 수 있다. 특히 컴퓨터의 정보는 일반적인 데이터와 달라 조금만 훼손되도 전체를 잃게 되는 수가 많다. 그래서 데이터의 사본을 한부 이상 더 보관할 필요가 생긴다.

보통 백업이라 함은 하드 디스크와 같이 고정된 저장장치에 있는 내용의 사본을 플로피 디스크나 백업 드라이브(테이프 드라이브) 등에 별도로 보관하는 것을 의미한다. 테이프 백업 장치를 사용해 하드 디스크에 있는 내용을 신속하고 정확하게 백업해 둔다면 더할 나위 없이 좋겠지만 이런 장비는 값이 매우 비싸서 개인이 사용하기에는 부담스럽다. 그러므로 일반 사용자는 백업의 매체로 플로피 디스크를 사용하는 경우가 대부분이다.

디스켓을 이용해 데이터 파일 몇개를 백업하는 경우는 보통의 복사 명령어인 copy나 xcopy를 사용하면 된다. 그러나 하드 디스크에 있는 프로그램과 데이터 전체를 백업 한다면 도스의 복사 명령으로는 불편하기 짝이 없다. 일일이 파일을 지정하거나 디렉토리를 지정해야 한다는 점도 번거롭거니와, 크기가 제각각인 파일들을 플로피 디스크의 제한된 용량에 맞춰 저장하기도 보통 일이 아니다. 그래서 도스가 제공 하는 유틸리티인 백업 명령을 사용 하게 되는데 명령의 형식은 다음과 같다.

BACKUP <;원본 드라이브>; <;대상 드라이브>; (옵션)

물론 위에 명시된 원본 드라이브 대신에 디렉토리명이나 파일명을 입력해도 된다. 예를 들어 'backup c : a :'이라는 명령을 내리면 하드 디스크 전체를 플로피 디스크에 백업해준다. 백업 명령을 사용하면 파일의 크기가 디스켓의 용량보다 크더라도 여러장의 디스켓으로 나누어 저장해준다. 그러므로 사용자는 컴퓨터가 요구하는 대로 새로운 디스켓으로 갈아 넣어 주기만 하면 된다. 백업명령에는 여러가지 선택사향(옵션)이 있는데 백업을 제대로 하려면 반드시 알아두어야 한다.

/A 백업 디스크에 이미 백업돼 있는 파일에 덧붙여(APPEND) 새로운 파일을 추가로 백업한다. 백업 되는 대상 드라이브의 디스켓에 있던 기존 백업 파일은 /A 옵션을 추가하지 않는 한 모두 지워진다.

/F : <;수치>; 백업에 사용될 디스켓이 포맷돼 있지 않을 경우에 BACKUP명령은 /F 옵션이 없어도 자동으로 디스켓을 포맷한다. 이때 FORMAT.COM이 도스의 수행 파일 검색 경로(PATH)에 설정 되어 있어야 한다. 만약 드라이브의 기본 용량과 맞지 않는 디스켓을 사용할 때는 /F 다음에 수치를 해당 드라이브의 디스크 용량에 맞춰 다음과 같은 형식으로 입력해야 한다.

5.25인치 2D - 360 또는 360K
3.5인치 2D - 720 또는 720K
5.25인치 2HD-1200 또는 1200K
3.5인치 2HD-1440 또는 1440K

/D : (mm/dd/yy) 지정된 날짜 이후에 작성한 파일만을 백업한다.

/T : (hh : mm : ss) 지정하는 시각 이후에 작성된 파일만을 백업 한다. 날짜지정을 한 뒤 추가로 사용하는 것이 좋다.

/M 이미 백업된 파일을 제외하고 백업이 안된 파일만 자동으로 백업한다. 백업 프로그램은 자신이 백업한 파일에 대해서는 아카이브비트(기록보존비트)를 0으로 돌려 놓는데 이 기록 보존 비트를 이용해 추가로 백업할 대상을 자동인식하는 것이다.

/S 서브디렉토리에 있는 내용도 백업을 하며 복원시킬 때 원래 있던 디렉토리까지 복원시킨다. 이 옵션은 하드 디스크 전체나 여러 디렉토리에 걸친 백업을 할 때 매우 유용하다.

 

DOS의 명령어 뒤에 /? 옵션을 주면 해당 명령어의 사용법을 알 수 있다. backup의 사용법
 

바늘 가는데 실 간다 -RESTORE

백업은 매우 편리하지만 불편한 점도 없지 않다. 만약 도스의 COPY 명령을 사용했다면 파일을 그대로 불러다 쓰면 되지만, BACKUP을 이용하면 많은 파일들이 하나의 디스켓당 하나의 파일 즉 BACKUP.001, BACKUP.002 라는 이름으로 저장된다. 그러므로 반드시 RESTORE 명령으로 원형을 복원시킨 다음에만 사용할 수 있다.

물론 RESTORE 명령에 적절한 옵션을 주면 부분적인 파일만 복원시킬 수도 있다. 하지만 디스켓을 넣고 DIR 명령을 내려서는 내용을 알 수가 없다. 'BACKUP'명령의 올바른 사용을 위해서는 'RESTORE'명령에 대해서도 정확히 알아야 한다.

RESTORE <;백업된 경로>; <;복원 될 경로>; (옵션)
RESTORE 명령의 갖가지 선택 사항도 BACKUP의 선택사항 못지 않게 많이 있는데 이에 대해 정리해보면 다음과 같다.
/A : 지정한 날짜 이후(After)에 만들어졌거나 수정된 파일만을 복구한다.
/B : 지정한 날짜 이전(Before)에 만들어졌거나 수정된 파일만을 복구한다.
/D 백업 디스크에 저장된 파일 중에서 '파일이름'과 일치하는 파일의 목록을 출력한다. 파일을 디스크에 복사하지는 않는다.
/E : 지정된 시각 혹은 그 이전(Earlier)에 만들어 졌거나 수정된 파일만을 복구한다.
/L : 지정된 시각 혹은 그 이후(Later)에 만들어졌거나 수정된 파일만을 복구한다.
/M 백업된 이후 수정되었거나 (Modified) 지워진 파일만을 복구 시킨다.
/N 목표 디스크에 없는 (no longer exist) 파일만을 복원시킨 다.
/S 디렉토리와 서브 디렉토리에 있는 모든 파일을 옮긴다.

만약 'BACKUP C : \HWP\*.HWP A :'이라는 명령으로 백업을 했다면 'RESTORE A : C:\HWP\*.HWP'라고 해야 원상복구가 가능하다. 복구를 하지 않고 백업된 디스크에 있는 파일의 내용만을 보려고 한다면 '/D'옵션을 덧붙이면 된다. 그러므로 부분적인 백업을 할 때에는 어떤 디렉토리에 있는 파일들을 백업하였는지를 알고 있어야 한다.

도스의 백업은 여러가지 옵션이 있어 사용이 좀 복잡한 편이다. 이런 점을 보완하기 위해 백업을 전문적으로 담당하는 유틸리티들이 시중에 많이 나와 있는데, 이중에서 많이 사용되는 것은 'BACKIT'과 'PCBACKUP' 등이다. 특히 피시툴즈를 내놓은 센트럴 포인트사에서 피시툴즈의 하나로 제공하는 'PCBACKUP'은 구하기도 쉽고 성능이 막강하며 사용도 편하다. 도스의 백업과 달리 사용하기 쉽게 메뉴 방식으로 되어 있고, 고속으로 백업이 가능하다. 또한 디스켓에 저장을 할 때 압축하는 기능이 있어 디스켓을 절약할 수 있다. 도스와 달리 PCBACKUP 등과 같은 프로그램은 백업과 복원이 하나의 실행프로그램 안에 통합되어 있다.

 

restore의 사용법
 

도스의 트릭을 알면 지워진 파일도 살릴 수 있다

불행은 예기치 않은 데서 온다. 미처 백업을 못한 파일이 지워졌다거나 백업할 틈도 없이 일이 벌어졌다면 눈앞이 캄캄해질 것이다. 그러나 파일을 지우는 도스의 'DEL'명령이나 기타 유틸리티에서 제공하는 파일의 삭제 메커니즘을 알고 있다면 걱정은 절반으로 줄어든다. 왜냐 하면 도스라는 운영체제 하에서의 파일의 삭제는 진정한 의미의 삭제는 아니기 때문이다. 도스의 삭제명령은 여러가지 이유 때문에 하나의 '트릭'을 쓰는데 보통의 사용자는 이것을 제대로 알지 못하기 때문에 '삭제=끝장'라고 생각하는 것이다.

이 트릭을 이해하기 위해 먼저 디스크상에 파일이 저장되는 방식을 알아보자. 디스크에 파일이 저장된다는 것은 단순히 어떤 물리적 위치에 특정한 파일이 자리를 잡고 있는 것 이상의 문제이다.

디스크 상에 파일이 저장 될 때에는 파일의 검색을 쉽게 하는 메커니즘이 사용된다. 즉 디스크에는 파일 관리를 위한 시스템 영역이 있고 실제의 데이터가 들어가는 데이터 영역이 있다. 시스템 영역은 다시 크게 세부분으로 나뉜다.

첫번째 영역은 '부트 레코드'라고 부르는 영역으로, 이 부분에는 그 디스크에 부팅을 가능케 하는 도스의 시스템 파일이 들어있는지 여부와 부팅을 위한 정보가 들어 있다.

두번째 영역은 '파일 할당 테이블 (file allocation table, FAT)'인데, 파일이 저장돼 있는 클러스터 번호(하드 디스크에서는 512바이트의 용량을 가진 연속된 4개의 섹터를 하나의 클러스터라고 한다)가 기록돼 있다. 파일 할당 테이블은 두벌이 마련되어 있어 만약의 경우를 대비한다.

세번째 영역이 '루트디렉토리'라는 이름을 가진 파일 등록부이다. 파일에 관한 표준화된 정보가 기록되는 곳이 바로 이곳이다. 루트 디렉토리에는 파일명과 확장명, 파일이 생성되거나 갱신된 날짜와 시간, 크기, 속성, 파일이 저장된 클러스터의 첫부분 번호 등이 기록된다. 만약 이런 식으로 파일을 관리 하고 있는 영역이 없다면 하드디스크상에서 DIR이라는 명령이 그렇게 신속하게 처리될 수는 없을 것이다. 다시 말해 DIR 명령을 내리면 디스크 전체를 검색해서 파일명과 디렉토리명을 보여주는 것이 아니고 단지 디스크의 시스템 영역에 있는 루트 디렉토리 정보를 읽어서 화면에 나타내 주는 것이다.

그러면 이제 파일을 삭제하면 무엇이 어떻게 되나 생각해보자. 도스는 del 명령을 내리면 파일이 실제로 기록된 데이터 영역을 지우는 것이 아니다. 단지 시스템 영역의 루트 디렉토리 내에 있는 파일 이름중 첫자를 지우고 대신 16진수로 'E5'를 입력해둔다. 그리고 파일이 점유 하고 있던 파일 할당 테이블의 해당 위치에 '000'이란 값을 써넣게 된다. 그러므로 원래 데이터의 손상은 전혀 일어나지 않는다. 그러면 DIR 명령을 내렸을 때 왜 화면에 나타나지 않을까? 그것은 매우 간단하다. 도스에서는 파일이름의 첫글자가 16 진수로 'E5'이면 모든 명령의 대상에서 제외되도록 설계돼 있기 때문인 것이다.

하드 디스크상의 미아-로스트 클러스터(lost duster)

그러면 이제 복구하는 방법을 생각해보자. 복구하는 원리는 간단하다. 디스크의 시스템 영역중 루트 디렉토리를 검색해 파일이름 항목의 첫부분이 'E5'로 되어 있는 곳을 찾아가 이를 합당한 문자로 바꿔놓고 파일의 시작 클러스터 번호와 파일의 길이를 시스템 영역의 루트디렉토리에서 찾아내어 해당하는 파일 할당 테이블에 클러스터 체인을 등록해준다.

클러스터 체인(CLUSTER CHAIN)이란, 이를테면 1번부터 5번까지 5개의 클러스터를 연속으로 차지하는 파일이 있다면 1번 클러스터에는 다음번 기록위치인 2번을, 2번에는 3번이, 그리고 마지막 클러스터인 5번에는 파일의 끝을 의미하는 16진수값 'FFF'가 기록되는 방식을 말한다. 만약 파일이 연속되어 있지 않고 1번 클러스터, 3번 클러스터, 6번 클러스터, 이렇게 각각 흩어진 3개의 부분으로 니뉘어져 있다면 파일할당 테이블의 1번 클러스터 위치에는 3이라는 숫자가, 3번 클러스터 위치에는 6이라는 숫자가, 그리고 마지막으로 6번 클러스터 위치에는 파일의 끝이라는 것을 알리는 16진수값 'FFF'가 저장된다. 마치 방학 전날 비상연락망을 구축하듯 디스크 상에 파일도 이렇게 체인 방식으로 되어 있다.

가끔 디스크 상의 파일이 제대로 저장됐는지를 보기 위해 도스의 chkdsk 명령을 사용하거나 노턴 유틸리티의 NDD(노턴디스크닥터) 프로그램을 실행시켜보면 로스트 클러스터(LOST CLUSTER) 내지 로스트 체인(LOST CHAIN)이 있다고 하는 경우가 있다. 이것은 선생님이 비상연락망을 통해 한조를 소집하고자 할 때 조의 중간에 있는 한 사람이 연락불통으로 그 이후의 연락망이 마비되는 것과 같은 현상이 디스크상에서 발생하는 것을 의미한다.

파일을 복구하고자 할 때 하나의 파일이 연속된 클러스터를 차지한다면 복구는 매우 간단하게 이루어진다. 만일 파일이 연속되어 있다면 시작 클러스터와 마지막 클러스터만 알면 그만인데, 마지막 클러스터의 위치는 파일의 크기를 통해 쉽게 계산이 가능하기 때문이다. 그러나 파일이 연속되어 있지 않다면 시작 클러스터를 안다고 해도 마지막 클러스터를 찾아내는 일이 만만치 않다. 그러므로 평소에 파일이 디스크에 연속된 구조로 저장되어 있도록 해 파일의 분산화(FRAGMENTATION)을 방지해야 한다.

파일이 연속된 구조로 저장되어 있다면 지워진 파일을 복구하는 데만 유리한 것이 아니라 디스크상의 파일을 읽어들이기 위해 디스크 드라이브의 헤드가 이리저리 왔다갔다 하지 않으므로 훨씬 빨리 파일을 읽어들일 수 있다. 분산된 파일을 연속된 구조로 바꾸는(이를 OPTIMIZE, 즉 최적화라고 한다) 가장 대표적인 프로그램은 노턴유틸리티에서 제공하는 'SPEEDISK.EXE'라는 프로그램이다. 파일의 읽고 쓰기가 빈번한 하드 디스크에서는 적어도 일주일에 한번 정도는 이 'SPEEDISK'를 실행시켜 주어야 하드디스크가 느려지는 것을 막을 수 있고 파일복구에도 유리하다. 노턴 유틸리티 이외에도 피시툴즈에는 'COMPRESS'라는 프로그램이 있고 가젤 시스템의 'OPTUNE'도 널리 사용된다.

지워진 파일 복구의 명수들-unerase와 undelete

지워진 파일을 살려내기 위한 프로그램에는 노턴 유틸리티의 'UNERASE'가 비교적 널리 사용된다. 사용이 쉽고 복구가 확실하기 때문이다. 도스 5.0 이상에는 'UNDELETE'가 제공되는데 성능면에서나 사용편리성 면에서 노턴유틸리티에 못미친다.

연속된 구조가 아니라도 지워진 파일을 쉽게 복구하려면 파일을 지울 때마다 지워진 파일의 위치가 추적되게 하는 프로그램을 램에 상주시켜 파일의 상황을 추적하면 되는데, 이러한 기능을 가진 것이 바로 도스에 들어있는 MIRROR 프로그램이다. 지워지는 파일을 보호하는 또다른 방법은 하드디스크상의 일정한 영역을 쓰레기통(TRASHCAN)으로 설정해 삭제된 파일을 무조건 이곳에 보관하였다가 날짜가 지나면 자동으로 삭제해버리는 것이다. 이렇게 하면 당분간은 쓰레기통 안에 보관이 되는 것이므로 사용자가 원한다면 쉽게 파일을 복구할 수 있다. 이런 방식을 채용한 것이 노턴의 'EP(ERASE PROTECTOR)'다.

지워진 파일을 복구하는 것보다 더 쉬운 원리로 포맷해버린 디스크를 되살릴 수 있다. 일단 사용된 디스크를 포맷할 때는 디스크의 데이터 영역을 그대로 둔 채로 시스템 영역만을 초기화하게 되는데, 시스템 영역은 상대적으로 크기가 작으므로 이 부분에 관한 정보를 디스켓의 제일 마지막에 기록해두는 방식으로 작동한다. 만약 사용자가 데이터 영역에 다른 파일을 기록하지 않은 채 포맷된 것을 원상태로 돌리고 싶다면 이미 기록해 둔 시스템 영역의 정보를 원래의 시스템 영역에 그대로 복사해 넣으면 그만이다.

디스크에서 포맷된 내용을 다시 복구하는 프로그램에는 도스의 'UNFORMAT'과 노턴 유틸리티의 'UNFORMAT'이 있다. 이와 같이 파일과 디스크의 치료와 복구에는 노턴 유틸리티가 가장 강력한 성능을 발휘한다. 그러므로 컴퓨터 사용자라면 노턴유틸리티 정도는 제대로 다룰 줄 알아야 비로소 '초보자 딱지'를 뗄 수 있다.

 

노털 유틸리티의 초기화면. 제 위치에 바를 옮기면 화면 오른쪽에 프로그램의 기능을 알려준다.
 

이 기사의 내용이 궁금하신가요?

기사 전문을 보시려면500(500원)이 필요합니다.

1993년 05월 과학동아 정보

  • 이형열 대표

🎓️ 진로 추천

  • 컴퓨터공학
  • 소프트웨어공학
  • 정보·통신공학
이 기사를 읽은 분이 본
다른 인기기사는?