블로그 다운로드(1.61)

SDelete.zip

공식 사이트 http://technet.microsoft.com/ko-kr/sysinternals/bb897443(en-us).aspx


SDelete 란 마이크로소프트에서 무료로 제공하는 파일 완전 삭제 및 빈 공간 정리(보안 삭제) 유틸리티입니다. 명령형 유틸리티이기 때문에 명령 프롬프트를 통해 작업을 진행하며, 언뜻 다소 어려워 보이지만 실질적인 사용법은 매우 단순하며 쉽습니다. 그렇기 때문에 한 번만 사용법을 보시면 바로 이해하실 수 있으실 겁니다. 개인적인 평가로 특히나 빈 공간 정리 및 최적화 작업에 있어서는 최고의 효율을 자랑하는 프로그램이 아닐까 생각합니다.

프로그램은 설치가 필요 없는 SDelete.exe 단일 파일로 구성되어 있습니다. 그러니 제공하는 파일을 다운로드 받으신 후에 압축을 풀면 나오는 SDelete.exe 파일을 \Windows\System32 폴더로 넣어두시면 명령 프롬프트 어느 경로에서나 사용할 수 있습니다. 참고로 최초 실행시 아래와 같은 라이센스 동의 창이 뜨게 되며 그대로 확인하시어 사용하시면 됩니다.



과거 백업 블로그에서 소개해드린 적이 있는 프로그램이지만 버전업도 되었고, 그 때와는 조금 바뀐 부분도 있기 때문에 새로이 내용들도 좀 보충하고 다시 소개해드리도록 하겠습니다. 참고로 이러한 보안 삭제 유틸리티를 사용하기 이전에 먼저 아래의 글을 읽어 보시는 것이 좋습니다.

작성중 - 언젠간 완성 됨...

※ 보안 삭제란?

간단하게 윈도우는 파일을 삭제할 때 디스크에서 실제로 파일은 삭제하지 않고 해당 파일에 대한 정보를 담고 잇는 메타 데이터만을 삭제하는 방식을 사용합니다.(파일과의 연결만 끊는 방식) 그래서 윈도우에서 파일을 삭제하더라도 실제 파일은 디스크에 고스란히 남아 있게 되죠. 이러한 이유로 삭제한 파일을 파일 복구 프로그램들을 통해 다시 복구할 수 있는 위험이 있습니다. 그러한 위험을 없애기 위해 파일을 삭제할 때 메타 데이터 뿐만 아니라 실제 파일도 의미없는 다른 데이터로 덮어쓰기를 진행하여 완전히 삭제함으로써 파일이 복구될 가능성을 없애는 것을 보안 삭제(안전 삭제, 완전 삭제, Secure Delete, Secure Erase, Wiping)라고 합니다. 또한 이미 빈 공간 또는 드라이브나 디스크 전체에 대한 청소(Wiping) 작업도 동일한 보안 삭제 작업으로 분류됩니다.

참고로 자동 TRIM 기능이 지원되는 SSD 에서는 보안 삭제(파일 완전 삭제, 빈 공간 정리) 작업은 필요 없으며, SSD 라는 저장 매체의 특성상 SSD 에서 자체적으로 제공하는 툴이 아닌 다른 프로그램을 통한 보안 삭제 작업들은 권장하지 않습니다. 그러니 SDelete 와 같은 써드 파티 프로그램을 통해 진행하는 완전 삭제 작업은 자기 기록 방식의 HDD 에서만 적용하시길 바랍니다.

이하 글에서는 이러한 삭제 작업은 모두 보안 삭제로 통일하도록 하겠습니다.







1. SDelete 의 기본적인 명령 구조

아래는 SDelete 의 기본 명령 구조와 매개 변수 스위치를 정리해놓은 것입니다.

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

  • -a
    읽기 전용 속성을 가진 파일도 삭제합니다. 생략하면 읽기 전용 속성을 가진 파일들은 삭제되지 않습니다.

  • -p passes
    DOD 5220.22-M 알고리즘으로 덮어쓰기 할 횟수를 지정합니다. 생략하면 기본값인 1 회가 적용됩니다.

  • -q
    조용한(Quiet) 모드로 작동합니다. 에러가 발생하더라도 출력하지 않습니다.

  • -s 또는 -r
    폴더 및 하위 폴더의 모든 파일을 삭제합니다. 폴더를 대상으로할 때 지정합니다.

  • -c
    드라이브의 여유 공간 전체를 DOD 5220.22-M 알고리즘으로 덮어써 청소합니다.

  • -z
    드라이브의 여유 공간 전체를 0x00(0) 으로 덮어써 청소합니다. 가상 디스크를 최적화하는 목적으로 사용할 때 좋습니다.


스위치 자체는 크게 어려운 게 없습니다. 이제 SDelete 의 보안 삭제 작업은 크게 파일, 폴더, 드라이브 전체 빈 공간 세 가지를 대상으로 할 수 있으며, 각각의 작업에 알맞는 스위치를 적용하시면 됩니다.






2. SDelete 를 통해 파일을 완전히 삭제하기



위의 세 파일 중 001.jpg 은 일반 속성의 파일이며, 002.jpg 는 읽기 전용 속성의 파일입니다. 그리고 003.jpg 파일은 읽기 전용 속성에 절대 복구되어서는 안 되는 중요한 파일이기에 DOD 5220.22-M 덮어쓰기 작업을 총 세 번을 진행하고 싶습니다. 이럴 땐 아래와 같이 작업을 하시면 됩니다.

01. 일반 파일 보안 삭제

sdelete T:\001.jpg



02. 읽기 전용 속성 파일 보안 삭제

sdelete -a T:\002.jpg



03. 읽기 전용 속성 파일 + 3 번 반복 보안 삭제

sdelete -a -p 3 T:\003.jpg



즉, 읽기 전용 속성 파일을 삭제하고 싶을땐 -a 스위치를 포함시키면 되고, 삭제 기본값인 DOD 5220.22-M 작업의 횟수를 늘리고 싶을 땐 -p 스위치를 추가로 지정해주시면 되는 겁니다. 만약 해당 파일이 읽기 전용 속성인지 일반 속성인지 모르겠다면 그냥 무조건 -a 속성을 지정해주셔도 됩니다.






3. SDelete 를 통해 폴더 전체의 파일 모두를 완전히 삭제하기



간단하게 위 폴더와 폴더 하위에 포함된 하위 폴더의 모든 파일들을 완전히 삭제하고 싶습니다. 이 때 해당 폴더에 포함된 파일들 중에는 읽기 전용 속성을 가진 파일들도 포함이 되어 있습니다. 이럴 땐 앞서 파일의 경우와 마찬가지로 읽기 전용 속성의 파일들을 의미하는 -a 스위치와 함께 서브 폴더의 모든 파일들도 함께 삭제함을 의미하는 -s 스위치를 추가하여 작업을 진행하시면 됩니다. [만약 데이터 삭제 횟수를 지정하고 싶다면 -p 스위치도 추가하여 작업하시면 됩니다.]

참고로 SDelete 의 경우 폴더 안의 모든 파일들은 삭제하지만 폴더 자체는 삭제하지 않는 문제가 있습니다. 그래서 SDelete 로 폴더 삭제 작업을 진행한 후, RD 명령을 통해 폴더 트리도 깨끗하게 지워주는 작업을 추가로 진행하셔야 합니다.

01. 폴더 및 하위 폴더의 모든 파일들을 보안 삭제 (읽기 전용 속성 파일 포함)

sdelete -a -s T:\Picture
rd T:\Picture /s /q




추가로 윈도우에서 폴더를 생성하면 기본적으로 파일처럼 읽기 전용 속성의 체크가 해제되거나 체크된 상태가 아닌 꽉찬 상태로 생성이 됩니다. 먼저 말하지만 해당 상태는 폴더가 읽기 전용 상태임을 의미하는 게 아닙니다. 사실 윈도우는 폴더에 읽기 전용이라는 속성 자체를 설정하지 않는다고 볼 수 있습니다. 윈도우 탐색기 또한 그렇게 작동을 하고요. 그래서 Attrib -R 이나 +R 명령을 통해 폴더에 읽기 전용 속성을 강제로 부여하고 해제하더라도 윈도우 탐색기 상에서는 아무런 변화가 없는 특성이 있습니다. [하지만 또 Attrib 상에서는 확인해보면 읽기 전용 속성이 부여되고 해제된 것처럼 보입니다.] 

아무튼, SDelete 에서는 이러한 폴더의 기본 상태를 읽기 전용으로 보는 듯합니다.

폴더의 읽기 전용 속성은 해당 폴더가 아닌 폴더에 포함된 파일들의 읽기 전용 속성을 설정하는 옵션입니다.



SDelete 의 -a 스위치라는 것은 먼저 읽기 전용 속성을 해제한 후 삭제라는 개념을 가지고 있습니다. 결론적으로 폴더에도 -a 스위치를 적용하여 읽기 전용 속성을 해제하지만 폴더엔 변화가 없고 결국엔 삭제되지 않는 것이죠. 뭐 같죠. 그냥 SDelete 작업 후에는 추가적으로 RD 작업을 통해 폴더를 지워줘야 한다라고 하고 넘어가죠.






4. SDelete 를 통해 드라이브의 빈 공간을 청소하기

SDelete 는 특정 드라이브의 빈 공간에 대한 정리 작업(보안 삭제)를 지원합니다. 참고로 이는 해당 드라이브의 모든 파일을 삭제하는 게 아닙니다. 단순히 비어있는 공간(여유 공간)에 삭제되지 않고 남아 있는 데이터들을 청소하는 작업입니다. 그래서 해당 드라이브에서 사용 중인 다른 파일들에는 아무런 영향을 주지 않습니다. [혹시나 헷갈리실까 봐요. ^^;;;]

아무튼, SDelete 는 빈 공간 정리에 DOD 5220.22-M제로필(Zerofill) 이라는 두 가지 알고리즘을 지원합니다. 이 때 DOD 5220.22-M 이 1 pass 작업에 더 많은 덮어쓰기를 진행하기 때문에 보다 강력한 방식이지만, 일반적으로 가정에선 1 pass 에 한 번의 덮어쓰기만을 진행하는 제로필만으로도 충분합니다. [당연하겠지만 DOD 5220.22-M 방식이 작업에 더 오랜 시간이 걸립니다.]


작업은 간단하게 빈 공간의 정리를 원하는 드라이브를 지정해주면 되며, 이 때 DOD 5220.22-M 알고리즘으로 정리를 진행하고 싶으면 -c 스위치를, 제로필 알고리즘으로 정리를 진행하고 싶으면 -z 스위치를 통해 작업을 진행하시면 됩니다. [* 남아 있는 빈 공간의 용량에 따라 작업에 오랜 시간이 걸릴 수 있습니다.]

01. DOD 5220.22-M 알고리즘으로 빈 공간을 정리

sdelete -c T:



02. 제로필 알고리즘으로 빈 공간을 정리

sdelete -z T:



참고로 이러한 빈 공간 정리 작업은 아래와 같이 먼저 원하는 드라이브로 이동한 뒤 드라이브 지정 없이 -c 나 -z 스위치만을 주는 방식으로도 작업을 진행할 수 있습니다.

03. 먼저 드라이브 경로로 이동한 뒤 빈 공간 정리 작업 (-c, -z 공통)

T:
sdelete -z




이제 여기에 파일 및 폴더 때와 동일하게 덮어쓰기 작업을 여러 차례 반복하고 싶으면 -p 스위치를 추가하시면 됩니다. 간단하죠?


그런데 한 가지 더 알아두셔야 할 것이 있습니다. 보통 SDelete 의 빈 공간 정리는 VHD 나 VMDK 와 같은 가상 디스크, 그 중에서도 동적 확장 방식으로 사용 중인 가상 디스크의 빈 공간을 정리하여 용량을 최적화하기 위한 용도로도 많이 사용하게 됩니다. 이렇게 SDelete 의 빈 공간 정리를 가상 디스크를 최적화하기 위한 용도에 활용할 때는 단순 제로필인 -z 옵션을 사용하는 것이 좋습니다.

이유는 간단합니다. DOD 5220.22-M 알고리즘을 사용하는 -c 옵션은 단순히 0 으로 가득채우는 제로필 -z 옵션에 비해 쓸데없이(가상 디스크에서는 굳이 필요 없는) 덮어쓰기 작업을 더 많이 진행하기 때문에, 불필요한 쓰기 작업을 유발하며 그만큼 작업 시간도 오래 걸리기 때문입니다. 또한 가상 디스크 포맷에 따라 -c 옵션을 사용하는 경우 최적화가 아닌 오히려 가상 디스크 파일의 용량을 늘리는 역효과가 발생할 수도 있습니다. 그러니 SDelete 의 빈 공간 정리를 가상 디스크를 최적화하는 용도로 사용할 때는 -z 옵션을 사용하시길 바랍니다.

참고로 아래의 박스는 아주 예전부터 SDelete 를 사용하시던 분들께서 참고하실 것을 정리한 내용입니다.

※ SDelete 1.5x 버전은 빈 공간 정리 옵션이 반대

SDelete 1.5x 버전에선 -c 와 -z 스위치의 의미가 반대였습니다. 고로 예전 버전을 사용 중이신 분들은 빈 공간 정리 작업에 알고리즘 옵션의 적용을 반대로 하고 있을 가능성이 있으니 확인해보시길 바랍니다.

SDelete 1.5x : [-c = Zerofill] [-z = DOD 5220.22-M]


SDelete 1.6x : [-c = DOD 5220.22-M] [-z = Zerofill]




※ SDelete 1.6 버전의 버그 문제

바로 이전 버전이었던 SDelete 1.6 버전의 경우 빈 공간 정리에서 드라이브를 지정하는데에 아래와 같은 버그가 있었습니다.

울릉도 호박엿 같은 상황



이것은 1.6 버전에서만 발생하는 버그로, 이게 또 윈도우 PE 3.x 에서 사용할 때는 해당 문제가 발생하지 않습니다. 아무튼, 이전의 1.5x 버전에서는 이러한 버그가 없었고, 1.61 버전은 해당 버그를 해결한 버전입니다. [이 상태로 상당히 오랜 시간 방치되고 있었습니다.] 결론적으로 1.6 버전의 버그 하나 때문에 여러 사람들 헷갈리는 상황이 발생한 셈입니다.

이건 헷갈린 우리들 잘못이 아닙니다. Mark Russinovich 이 양반이 반성해야 하는 문제입니다. 아무튼, 이렇게 1.6 버전을 버그 해결 없이 상당히 오랜 시간을 방치했고, 많은 분들을 헷갈리게 만들었죠. Russinovich 를 RussinoB!tch 로 개명시킬 뻔 했네요. 이런 앙칼진 암캐 같은 냔...

문제의 인물... 내가 애정이 있어서 뭐라고 하는 거야~ 아무튼, 좋은 툴 고마워~








5. SDelete 를 윈도우 PE 에서 활용할 때

Sysinternals 에서 제공하는 유틸리티들의 공통 사항은 최초 실행시 라이센스 동의 창이 뜬다는 것이고, 이는 SDelete 에서도 마찬가지입니다. 그래서 윈도우 PE 에서 사용하는 경우 매번 라이센스를 동의해야 하는 문제가 있죠. 배치 파일에서 사용할 땐 이것이 더더욱 문제가 됩니다. 아무튼, 이러한 SDelete 의 라이센스는 아래와 같은 간단한 레지스트리 값으로 처리가 됩니다.

[HKEY_CURRENT_USER\Software\Sysinternals\SDelete]
"EulaAccepted"=dword:00000001


이는 위의 레지스트리 값을 미리 입력하면 SDelete 실행에 라이센스 동의 창은 뜨지 않는다는 것을 의미합니다. 그래서 윈도우 PE 실행시 자동으로 실행되는 startnet.cmd 파일에 아래와 같이 Reg Add 작업을 추가하여 부팅 때마다 해당 레지스트리를 자동으로 입력하도록 만들어주면 윈도우 PE 에서 라이센스 동의 창 문제를 해결할 수 있습니다.

wpeinit
reg add "HKCU\Software\Sysinternals\SDelete" /v "EulaAccepted" /t REG_DWORD /d "1"



또는 이렇게 배치 파일로 처리하지 않고, 아예 윈도우 PE 의 레지스트리에 해당 값을 미리 추가해도 됩니다. 이 때 윈도우 PE 에서 HKEY_CURRENT_USER 레지스트리는 윈도우와는 다르게 DEFAULT 하이브 파일이 담당하고 있습니다. 그러니 원하는 WIM 이미지를 마운트한 후, 레지스트리 편집기(regeidt)를 실행하여 마운트한 폴더의 \Windows\System32\Config\DEFAULT 하이브를 로드하고 위와 같은 레지스트리 값을 생성하시면 됩니다.




간단하죠? 이 때 WIM 이미지를 언마운트하기 전 레지스트리 편집기에서 로드했던 하이브 파일은 반드시 언로드하셔야 WIM 이미지 파일을 정상적으로 언마운트하고 변경된 내용을 저장할 수 있습니다. 잊지 마세요. 여기까지 하죠. 그럼 SDelete 잘 사용하세요. 이상입니다. ^^

재미도 없고 감동도 없는 이야기 - 펼치기


 

 

신고
캐플 블로그에 공개된 글은 반드시 원본 글의 링크를 포함시키는 조건으로 자유롭게 이용하실 수 있습니다.
하지만 블로그의 발전을 위하여 되도록이면 링크로 글을 소개해주시길 부탁드립니다. ^^

- 상업적인 용도의 사이트는 대상에서 제외됩니다. -
- 글에는 오류가 있을 수 있고, 추후 수정 또는 재발행될 수 있습니다. -
  1. BlogIcon ITcraft 2013.04.13 00:18 신고  댓글주소  수정/삭제  댓글쓰기
    이거 저번에 한번 소개하시지 않으셨나요..?ㅎㅎ
  2. BlogIcon vision2real 2013.04.13 01:22 신고  댓글주소  수정/삭제  댓글쓰기
    오랜동안 Tracks Eraser Pro를 사용하였고,
    Load는 좀 걸리지만 예전에 소개해주신 BCWipe가 그보다 좀 더 나은 것 같아 사용중인데,
    SDelete가 제일 나아보이는군요.
    예전 블로그에서 소개하셨을 때는 그냥 읽고 지나갔는데, 오늘부터는 이걸로 써봐야겠네요.

    BCWipe는 여러 옵션도 많고 편리하지만,
    부팅할 때 프로세스가 3개 정도 항상 떠 있어서 조금 부담스러웠거든요.

    소개 감사합니다.~~^^
  3. BlogIcon Recruiter 2013.04.23 18:37 신고  댓글주소  수정/삭제  댓글쓰기
    좋은 자료 감사합니다^^ 퍼갈께요..
    http://blog.naver.com/kjh61876
  4. Bebop 2013.06.26 14:10 신고  댓글주소  수정/삭제  댓글쓰기
    안녕하세요
    정보들이 많은 도움이 되었습니다.
    다만 몇가지 질문을 드리고 싶습니다.
    본문의 내용과 같이 sdelete.zip file 을 download 후
    window / system32 foler 에 넣은 후 licence 를 묻는 창에서 확인을 했습니다.
    그런데 그 후 DOS interface 가 사라지고 계속해서 재 실행 해 보아도 licence 확인 창은
    더이상 load 되지 않은채 DOS interface 만 순식간에 blink 되면서 사라집니다.
    정상작동 할 방법이 있는지 여쭈고 싶습니다.
    현재 운영체제 Window xp/ service pack 3/ 32bit /HDD 운영체제 입니다.
    • BlogIcon CApple 2013.06.27 07:03 신고  댓글주소  수정/삭제
      명령 프롬프트에서 SDelete 명령을 내려도 그렇다는 말씀이신가요? 그렇다면 정확한 원인이 무엇인지는 저도 잘 모르겠네요. SDelete.exe 파일을 System32 가 아닌 Windows 폴더 하위에 넣어 보시거나, 또는 특정 경로에 넣어두신 후 해당 경로에서 명령을 내려보시길 바랍니다.
    • Bebop 2013.06.27 10:31 신고  댓글주소  수정/삭제
      답변 감사드립니다~
      그런데..folder 를 바꾸어 봐도 SDelete 명령이 아니라 그명령을 실행할 수 있는 프롬포트 창 자체가 깜박 거리면서 사라집니다.
      전혀 명령을 내릴 수 없는 상태죠..창이 열리지 않으니..ㅜ
    • BlogIcon CApple 2013.06.27 10:34 신고  댓글주소  수정/삭제
      그러니까 현재 명령 프롬프트를 실행한 후 그곳에서 SDelete 명령을 내리면 실행했던 명령 프롬프트가 닫혀져 버린다는 이야기인가요? 그거라면 저도 정확하게 원인이 무엇인지 모르겠습니다. 다시 다운로드를 받아보시거나 이전 버전을 구해보시는 게 좋을 듯 합니다.

      p.s 이건 정말 혹시나 해서 물어보는 건데요. 윈도우 탐색기에서 그냥 SDelete.exe 를 더블 클릭해서 실행하시는 건 아니죠?
    • Bebop 2013.06.27 11:04 신고  댓글주소  수정/삭제
      네..다시 다운받아서 실행해보니.
      라이센스 확인창은 더이상 실행되지 않고
      응용프로그램을 실행할수 없다고만 나오네요..
      컴퓨터 보안상태와 관련이 있을수도 있는것인가요?
    • BlogIcon CApple 2013.06.27 11:31 신고  댓글주소  수정/삭제
      글쎄요. 해당 오류에 관해서 제가 마땅히 드릴만한 정보가 없네요... 도움을 드리지 못해 죄송합니다.
    • Bebop 2013.07.15 17:33 신고  댓글주소  수정/삭제
      아닙니다 답변 감사드립니다. vista 방법이 먹히는것 같아 그렇게 실행중입니다.
  5. 박재천 2013.11.21 18:47 신고  댓글주소  수정/삭제  댓글쓰기
    Sdelete에 매우 많은 도움을 얻었습니다. 근데 제가 궁금한게 있습니다.

    현재 테스트 노트북에서 SDelete -z 옵션으로 하루에 2번 이상 빈공간
    삭제를 테스트 했는데. 갑자기 Culd not create free-space
    cleanup file: ???? ?????. 1 drives zapped 라는 문구의 에러와
    동시에 빈공간 삭제가 안되는데요.

    원인이 뭔지 모르겠습니다. 해당 드라이브가 읽기모드로 변경되벼러서
    그런건지 ㅠㅠ 도움을 얻고 싶습니다.
  6. 플로토 2014.10.09 22:43 신고  댓글주소  수정/삭제  댓글쓰기
    좋은 글 잘 봤습니다 (__)

    근데 궁금한게 있는데

    알려 주신대로 Sdelete로 빈공간을 DOD 5220.22-M 로 했는데도 불구하고

    recover 같은 복구 프로그램에 계속 복구 파일이 잡히는 이유는 뭔가요?

    복구해서 열어보니 사용 불가라곤 나오는데

    파일명이나 이런건 다 확인이 가능하더라고요


    조언 부탁 드립니다 (__)
  7. 신재영 2015.02.06 13:03 신고  댓글주소  수정/삭제  댓글쓰기
    Program Files 에서 지우고 싶은데 Program [띄우고] Files 로 하니까 따로 구분하더라구요.. 이부분은 어떻게 해결하나요??

댓글을 달아 주세요

- 댓글에선 예의를 지켜주시기 바라며, 블로그지기는 댓글에서 따로 활동하지 않습니다.

* 티스토리 사용자는 여기를 클릭하시면 로그인 됩니다.

BBCode 안내   굵게 밑줄 기울임 취소선   취소선 취소선 취소선 취소선   왼쪽 정렬 가운데 정렬 오른쪽 정렬   코드박스 인용구 이미지   이미지 업로드-Imgur.com