이곳은 백업 블로그 입니다. 현재 캐플이 활동 중인 블로그는 CAppleBlog.co.kr 입니다. 최신 정보들은 새로운 블로그에서 확인해 보세요. ^^

- 이곳은 기존 블로그들의 글을 한군데로 모아 놓은 백업 블로그입니다.

- 현재 링크는 대부분 올바르지 않으며 이러한 링크들은 모두 cappleblog.co.kr 로 이동합니다. (※ 링크 주의)

- 블로그와 커뮤니티는 서로 다른 공간입니다.(로그인을 따로 해야합니다.)

- 저는 윈티티(WinTT)이자 신비(ShinB)이며 캐플(CApple)입니다. 편한대로 불러주세요.

SDelete 의 소개와 기술


기억 저 너머 언저리에 자리해 기억이 날듯 말듯 안 나는 사람을 오랜만에 다시 마주쳤을 때의 느낌은 어떨까요? SDelete 라는 프로그램을 다시 접한 지금 저의 심정과 비슷할 것 입니다. 오랜 시간 사용할 일이 없어 잊어버렸던 프로그램이라 대충 그러한 프로그램이 존재한다는 기억만 어렴풋이 나고 도무지 생각이 안 나던 프로그램이었는데 댓글을 통해 다시 이 프로그램을 접하게 되었습니다. 오랜만에 다시 손에 쥔 프로그램이니 잊어버리지 않게 차분하게 한 번 정리를 해 보도록 하겠습니다. ^^





지금 소개해드리는 프로그램은 파일을 안전하게 완전히 삭제하는 유틸리티입니다. 명령줄 유틸리티로 처음 접하시는 분을껜 다소 어려워 보이더라도 배워두시면 분명 써먹으실 때가 있으실 겁니다. ^^ 파일은 아래의 링크에서 다운로드 받으시거나 제가 첨부한 파일을 다운로드 받으시면 됩니다.




파일을 다운로드 받으셨으면 윈도우 폴더의 System32 폴더로 복사해 두시면 이후 명령 프롬프트 어디에서든 마음껏 실행하실 수 있으실 겁니다.



윈도우에서의 파일 삭제란 파일과의 연결을 끊는 것에 불과합니다. 즉, 디스크에 기록되어 있는 실제 파일은 여전히 남아있고 파일에 할당되었던 연결만이 끊겨 우리에게 마치 파일이 존재하지 않는 것 처럼 보이는 것이지요. 이러한 데이터는 다시 다른 데이터로 덮어씌워지기 전 까지는 언제든지 복구될 가능성이 남게 됩니다.

SDelete 는 바로 이러한 윈도우의 불성실한 삭제 태도를 개선하여 파일에 대한 연결을 끊는 것 뿐만 아니라 실제 디스크에 기록된 데이터까지 말끔하게 삭제하여 해당 파일을 더이상 복구하지 못하게 완전히 파괴 해주는 프로그램입니다.

SDelete 가 파일을 삭제하는 알고리즘은 바로 미 국방성의 표준 기밀 문서 삭제 알고리즘인 DOD 5220.22-M 규격(SDelete implements the Department of Defense clearing and sanitizing standard DOD 5220.22-M, to give you confidence that once deleted with SDelete, your file data is gone forever.) 을 따릅니다.

DOD 5220.22-M 규격이란 미국방성에서 기밀 데이터를 파괴할 때 사용하는 삭제 규격으로 쉽게 말해 "니가 복구해 볼려면 해 봐라" 라는 의미입니다. 좀 더 자세한 정보를 원하시는 분들은 아래의 글을 참고해 보시길 바랍니다.


Symantect GDisk 디스크 삭제 요건 문서에서 발췌

NISPOM의 Section 8-306 의 하드 디스크 지우기 및 기밀 문서 삭제 지시와 관련하여 d 의 작업을 진행합니다. d 의 작업이란 아래와 같습니다.

디스크(파티션)의 주소를 지정할 수 있는 모든 위치를 0x35 로 덮어씁니다.
디스크(파티션)의 주소를 지정할 수 있는 모든 위치를 0xCA 로 덮어씁니다.
디스크(파티션)의 주소를 지정할 수 있는 모든 위치를 가상의 임의 문자로 덮어씁니다.
디스크(파티션)의 주소를 지정할 수 있는 모든 위치를 디스크에 Verify Sectors 명령을 사용하여 하드웨어에서 확인합니다.

위의 과정을 6 번 더 반복합니다. 이 DoD 5220.22-M 은 미 국방성 표준 기밀 문서 삭제 알고리즘 입니다.



어떤가요? 이제 SDelete 가 하는 작업이 정확하게 무엇인지 아시겠죠? 파일 하나 삭제하는데 위와 같은 데이터를 7 번 덮어써서 삭제하는게 바로 SDelete 가 하는 작업입니다. 말 그대로 "니가 한 번 복구해 봐라" 라는 의미이죠.

한 가지 이러면 파일 하나 삭제하는데 너무 오래 걸리게 되는게 아닌가? 라고 자문하실 수 있으실텐데요. 이게 파티션이나 디스크 단위로 넘어가게 되면 굉장히 시간이 오래 걸리는 작업이지만 파일이나 디렉토리의 단위에서는 여러분들이 걱정하는 것 만큼 심하게 오래 걸리지는 않습니다. 그러니 걱정마시길 바랍니다. 그럼 기술적인 소개는 이쯤하고 실제로 SDelete 를 사용하는 방법에 대해서 알아보도록 하겠습니다.








SDelete 의 명령 정리


SDelete 를 통한 삭제 작업은 파일 또는 폴더(디렉토리)의 삭제와 여유 공간 삭제의 크게 두 가지로 나누어 집니다. 아래는 SDelete 의 명령과 매개 변수(스위치)들을 표로 정리해 놓은 것 입니다.

SDelete SDelete [-p passes] [-s] [-q] <File or Directory>
SDelete [-p passes] [-z|-c] [Drive Letter]
파일 및 폴더 데이터 또는 여유 공간의 데이터를 완전히 삭제합니다.

  • -p passes
    덮어쓰기 할 횟수를 지정합니다. 생략할 수 있으며 생략하면 기본값인 1 회가 적용됩니다.
  • -s
    디렉토리(폴더) 및 하위 디렉토리의 모든 파일을 삭제합니다. 디렉토리를 삭제할 때 지정해 줍니다.
  • -q
    조용한(Quiet) 모드로 작동합니다. 에러가 발생하더라도 출력하지 않습니다.
  • -z
    드라이브의 여유 공간 전체를 DOD 5220.22-M 알고리즘으로 덮어씁니다.
  • -c
    드라이브의 여유 공간 전체를 0x00(0) 으로 덮어씁니다. 가상 디스크를 최적화하는 목적으로 사용할 때 좋은 효과를 발휘합니다.



간단하죠? 파일 및 폴더의 경우는 모두 DOD 5220.22-M 알고리즘으로 삭제하니 제쳐두고 보시는 것과 같이 SDelete 는 가상 디스크의 여유 공간을 최적화할 때도 유용하게 사용할 수 있습니다. 만약 SDelete 를 가상 디스크의 여유 공간을 최적화하는 목적으로 사용하고자 한다면 DOD 5220.0-M 알고리즘이 아닌 0x00(0, 빈 데이터) 으로 덮어쓰는 -c 매개 변수를 적용해 주어야 합니다.

또한 만약 드라이브의 여유 공간의 크기가 매우 크다면 -z 매개 변수를 통해 여유 공간의 데이터를 파괴하는 작업을 진행할 때에는 충분한 시간을 가지고 하시길 바랍니다. -z 매개 변수는 여러분의 인내심을 테스트하게 될 수도 있습니다. 쉽게 이야기해서 드럽게 오래 걸린다는 말입니다. -_-; 그럼 실제로 SDelete 를 통해 파일 및 폴더와 여유 공간을 삭제하는 모습을 보여드리도록 하겠습니다.








SDelete 작업


[참고] 작업은 SDelete.exe 파일을 윈도우 폴더의 System32 폴더로(C:\Windows\System32) 복사해 두었다는 가정하에 작업을 진행합니다.

완전히 삭제해야 할 중요한 파일을 한 번 준비해 보았습니다.





이제 이 파일을 삭제해 보도록 하겠습니다. 명령 프롬프트를 관리자 권한으로 실행하신 후 다음의 명령을 내려줍니다.

sdelete c:\secrect.txt
- C:\ 의 Sectect.txt 파일을 1 회 덮어쓰기(DOD 5220.22-M 규격) 하여 완전 삭제 합니다.






약 8 MB 의 자료는 명령을 내림과 동시에 삭제가 완료된다 싶을 정도로 금세 삭제가 됩니다.



이번엔 폴더를 한 번 삭제해 보도록 하겠습니다. C: 드라이브의 Secret 라는 폴더를 한 번 삭제해 보도록 하죠. 굉장히 중요한 자료가 많은 폴더이니 덮어쓰기 횟수를 2 회로 지정해 보도록 하겠습니다.

sdelete -p 2 -s c:\secret
- C: 드라이브의 Secret 이라는 폴더와 하위 폴더 모두를 2 회 덮어쓰기하여 삭제합니다.






반드시 깨끗하게 삭제해야 하는 파일들이죠 ;;-_-) 파일의 크기에 따라 삭제하는데 오래 걸릴 수도 있습니다. ^^;



이번엔 드라이브의 여유 공간을 삭제해 보도록 하겠습니다. 그리 중요한 작업은 아니고 일반적인 복구 툴로 복구하지 못할 정도로만 삭제하면 되는 여유공간이라는 가정하에 여유 공간 전체를 0x00(0) 으로 덮어쓰는 정도로만 데이터를 파괴해 보도록 하겠습니다.

sdelete -c c:
- C: 드라이브의 여유 공간 전체를 0x00(0) 으로 덮어씁니다.






드라이브의 여유 공간을 클리닝 하는 동안 퍼센테이지를 출력해 주는데 해당 과정을 보여드리진 못했습니다. 아무튼 -c 작업의 경우 생각보다 그리 오랜 시간이 걸리지는 않습니다.



이상으로 SDelete 에 대해서 알아보았습니다. 그럼 잘 활용하시길 바랍니다. ^^

: