리눅스에서 파일을 안전하게 삭제하는 8가지 간단한 방법

여성이 노트북 화면을 바라보며 머리를 감싸고 있는 모습.

하드 디스크의 내용을 완전히 지우는 방법을 살펴보았지만, 하나, 두 개 또는 수십 개의 파일을 영구적으로 삭제하고 싶을 때는 어떻게 될까요? 이 가이드는 리눅스에서 파일을 완전히 삭제하기 위한 가장 인기 있는 솔루션 몇 가지를 보여줍니다.

목차

    1. 휴지통 우회하기
    1. shred 사용하기
    1. 단일 파일에서 dd 사용하기
    1. wipe 사용하기
    1. Secure Delete 사용하기
    1. GUI 방식: Bleachbit 사용하기
  • 자주 묻는 질문

참고: 현재 시중에 나와 있는 대부분의 SSD는 TRIM을 지원하여 여유 공간을 관리합니다. 이는 펌웨어의 기능으로, 내용을 재할당합니다. Ext3/4 및 Reiser FS와 같은 리눅스의 저널링 파일 시스템과 결합하면, 개별 파일의 복구를 넘어서는 삭제는 보장할 수 없습니다. 이러한 경우의 유일한 해결책은 불행히도 SSD의 모든 내용을 완전히 삭제하는 것입니다.

1. 휴지통 우회하기

파일을 삭제하면 휴지통(즉, 재활용 통)으로 이동합니다. 원하신다면 휴지통 폴더를 우회할 수 있습니다. 이렇게 하면 삭제된 파일이 휴지통에 남아 있지 않고 완전히 사라진 것으로 표시됩니다. 여전히 복구 가능하지만, 휴지통에서 접근할 수 있는 것보다 한 단계 나아간 것입니다.

: 파일을 휴지통으로 보내는 것을 여전히 선호하신다면, 시스템이 정기적으로 휴지통을 자동으로 비우도록 설정할 수 있습니다.

홈 디렉토리의 내용을 보여주는 Dolphin 창.

KDE가 포함된 Kubuntu와 같은 리눅스 배포판에서 파일을 삭제하려면 기본 파일 관리자 Dolphin을 실행합니다. “메뉴 -> 구성 -> Dolphin 구성 -> 휴지통”을 클릭하여 관련 설정에 도달합니다. 휴지통을 완전히 비활성화하는 옵션은 없지만, 대부분의 경우를 커버하는 멋진 트릭을 사용할 수 있습니다: 크기 제한을 활성화하고 가장 작은 값으로 줄입니다.

Dolphin의 휴지통 할당량 설정을 보여주는 창.

우리의 디스크에서는 이것이 10.97 MiB로 변환되었습니다. Dolphin은 이 값을 초과할 경우 휴지통의 내용을 지웁니다. 일반적인 데스크탑 사용으로는 아마도 매 시간마다 발생할 것입니다. Nautilus나 Nemo와 같은 다른 파일 관리자도 휴지통을 완전히 우회하는 옵션을 제공합니다.

시스템의 추가 휴지통 설정을 보여주는 nemo 창.

장점

  • 쉽게 할 수 있음
  • 파일을 영구적으로 삭제하기 전에 유예 기간을 제공

단점

  • 디스크에 남아 있는 메타데이터를 제거하지 않음
  • 파일에서 데이터를 지우지 않음

2. shred 사용하기

우분투의 어떤 변형을 실행 중이라면, shred는 아마도 이미 포함되어 있을 것입니다. 즉시 사용하여 리눅스에서 영구적으로 삭제하고 싶은 민감한 파일을 완전히 삭제할 수 있습니다.

“image.png”를 영구적으로 삭제하고 싶다면, 다음을 사용하세요:

shred -uvz -n 4 image.png
  • u는 shred에게 파일을 덮어쓰기 전에 제거하라고 지시합니다.
  • v는 자세한 정보를 표시합니다.
  • z는 데이터가 차지했던 공간을 제로로 채워 복구 가능성을 더욱 줄입니다.
  • -n 4는 다섯 번의 삭제 패스를 의미합니다: shred는 기본적으로 한 번의 패스를 수행하며, “-n”을 사용하면 추가 보안을 위해 필요한 추가 패스 수를 지정할 수 있습니다. 일반적인 합의는 다섯 번의 패스가 대부분의 사람들에게 충분하다는 것입니다.

5회 패스의 shred 명령을 보여주는 터미널 창.

여러 파일이나 폴더의 내용을 삭제하려면 와일드카드를 사용하세요:

shred -uvz -n 1 Pictures/images_0?.jpg  
shred -uvz -n 4 Pictures/*.*

첫 번째 경우에서 “?”는 단일 문자를 위한 와일드카드이며, shred는 “images_01.jpg” 및 “images_02.jpg”와 같은 파일을 삭제합니다.

두 번째 경우에서 shred는 “Pictures” 디렉토리의 모든 파일을 이름이나 유형에 관계없이 삭제합니다.

장점

  • 단일 파일을 철저히 삭제함
  • 여러 파일을 포함할 수 있는 glob 매칭 가능

단점

  • 일부 옵션 플래그가 불명확함
  • 완료하는 데 오랜 시간이 걸림

팁: 와일드카드 작동 방식을 배우려면 머신에서 정규 표현식을 시도해 보세요.

3. 단일 파일에서 dd 사용하기

Data Definition (dd) 프로그램은 오늘날 거의 모든 리눅스 배포판에서 발견되는 또 다른 유틸리티입니다. 그러나 shred와 달리 dd의 가장 큰 장점 중 하나는 리눅스에서 파일을 삭제하는 방법을 세밀하게 조정할 수 있다는 것입니다.

dd를 사용하려면 파일의 정확한 크기를 바이트 단위로 알아야 합니다:

ls -l /path/to/your/file | awk '{print $5}'

파일 바이트 크기를 보여주는 터미널 창.

기존 파일에 대해 dd를 실행할 수 있습니다. 예를 들어, 이 명령은 파일을 널 문자로 채웁니다:

dd status=progress bs=your_file_size count=1 if=/dev/zero of=/path/to/your/file

dd가 작동 중인 터미널 창.

널 문자로 파일을 채우는 것 외에도, dd를 강제로 파일을 의사 난수 데이터로 지우도록 할 수 있습니다:

dd status=progress bs=your_file_size count=1 if=/dev/urandom of=/path/to/your/file

dd가 랜덤 데이터를 공급하는 터미널 창.

이제 일반 rm 명령을 사용하여 파일을 삭제할 수 있습니다:

rm /path/to/your/file

장점

  • 다재다능 – 파일 삭제 이상의 작업 가능
  • 파일 삭제를 세밀하게 조정 가능

단점

  • 구문이 구식임, 심지어 명령줄 프로그램으로도
  • 블록 크기에 대한 충분한 이해가 필요함

알아두면 좋은 점: 특정 파일을 삭제한 것에 대해 후회한다면, 리눅스에서 삭제된 파일을 복구하는 방법을 배우세요.

4. wipe 사용하기

Wipe는 또 다른 훌륭한 대안입니다. 배포판의 소프트웨어 센터에서 검색하여 설치하거나 다음을 사용하세요:

sudo apt install wipe

wipe에 대한 정보를 보여주는 터미널 창.

사용법은 shred보다 거의 간단합니다. wipe를 사용하여 리눅스에서 파일을 삭제하려면 다음을 실행하세요:

wipe Pictures/deleteme.png

기본적으로 wipe는 추가 보안을 위해 너무 많은 시간 소모 패스를 사용하므로 귀찮을 수 있습니다. 또한 삭제에 대한 확인을 요청합니다.

기본 wipe 세션을 보여주는 터미널 창.

f 플래그를 사용하여 확인을 없애고 r을 사용하여 하위 디렉토리로 재귀적으로 들어갑니다. c는 필요할 경우 chmod를 지시하며(파일이나 디렉토리에 쓰기 권한이 설정되어 있지 않을 때), q는 더 빠른 삭제를 위해 패스 수를 줄일 수 있습니다. q를 사용할 때는 소문자입니다. 대문자 “Q”를 뒤따라 요구하는 패스 수를 지정할 수 있습니다. 예를 들어, 이전의 간단한 명령은 다음과 같이 변경됩니다:

wipe -rfcq -Q 5 Pictures/deleteme.png

장점

  • 명령줄 경험이 적어도 사용하기 쉬움
  • 합리적이고 안전한 기본 매개변수

단점

  • 기본 매개변수가 대부분의 사용자에게 너무 엄격할 수 있음
  • 활성 저널링과 잘 작동하지 않을 수 있음

5. Secure Delete 사용하기

SRM은 HDD에서 데이터를 안전하게 제거하는 데 특화된 Secure Delete 제품군의 도구 중 하나입니다. 이 작업에 가장 적합한 도구로 여겨집니다.

우분투 및 호환 배포판에 전체 Secure Delete 제품군을 설치하려면 다음을 사용하세요:

sudo apt install secure-delete

secure-delete 설치를 보여주는 터미널 창.

그 후, 다음을 사용하여 파일을 삭제할 수 있습니다:

srm Pictures/deleteme.png

안전 삭제 프로세스를 보여주는 터미널 창.

파일의 내용을 제로로 덮어쓰는 z 플래그를 사용하여 추가 보안을 위해, 그리고 프로세스에 대한 자세한 정보를 얻기 위해 v를 사용하고 싶을 것입니다. 디렉토리 및 하위 디렉토리를 처리할 때는 재귀 모드를 위해 r 플래그도 포함하세요. 38번의 재작성이 너무 많다면, l 플래그를 사용하여 패스 수를 “단지“ 두 번으로 줄여 필요한 시간을 줄일 수 있습니다. 이렇게 하면 이전 명령이 다음과 같이 변경됩니다:

srm -rlvz Pictures/deleteme.png

장점

  • 옵션이 이해하기 쉽고 직관적임
  • 파일 삭제가 매우 안전하고 철저함

단점

  • 완료하는 데 오랜 시간이 걸림
  • RAID를 사용하는 시스템에서 잘 작동하지 않음

6. Perl로 리눅스에서 파일 삭제하기

도구를 사용하는 것 외에도, Perl과 같은 간단한 프로그래밍 언어를 활용하여 리눅스에서 파일을 삭제할 수 있습니다. 예를 들어, 다음 코드 한 줄은 파일의 내용을 문자 “0:”로 대체합니다:

perl -i -pe 's/[^*]/0/g' /path/to/your/file
  • -i 플래그는 Perl에게 제공된 파일을 처리하도록 지시합니다.
  • -pe 플래그는 프로그램에게 파일의 내용을 위한 반복 루프를 생성하도록 지시합니다.
  • 's/[^*]/0/g'는 치환 명령입니다. [^*] 연산자는 파일 내의 모든 바이트와 일치하며, 0은 각 바이트를 대체합니다.

파일을 지우는 Perl을 보여주는 터미널 창.

작업이 완료되면, rm을 사용하여 수정된 파일을 제거할 수 있습니다:

rm /path/to/your/file

장점

  • Perl을 알고 있다면 새로운 구문을 배울 필요가 없음
  • sed 치환과 같은 친숙한 추상화를 사용함

단점

  • 명령은 파일에 대해 단일 패스만 수행함
  • 임의 데이터로 내용을 대체하는 것은 안전하지 않을 수 있음

알아두면 좋은 점: 기본 시스템 작업을 위해 sed를 사용하여 치환 및 파일 스트림에 대해 더 많이 이해할 수 있습니다.

7. GUI 방식: Bleachbit 사용하기

명령줄을 피하고 싶다면, Bleachbit은 데이터를 안전하게 지우기 위한 최고의 솔루션 중 하나입니다. (Bleachbit은 리눅스 시스템을 정리하는 능력으로 더 잘 알려져 있습니다.) 기본적으로 이 도구는 필요하지 않은 “중복 파일”을 찾아내고 처리하는 데 특화되어 있습니다. 그러나 일반적으로 잊혀진 기능인 파일을 수동으로 “shred”하여 복구 불가능하게 만드는 기능도 포함되어 있습니다.

Bleachbit의 Discover 창.

소프트웨어 센터를 통해 또는 다음을 사용하여 우분투 호환 배포판에 설치하세요:

sudo apt install bleachbit

“메뉴 -> 기본 설정”을 클릭하고 “복구를 방지하기 위해 파일의 내용을 덮어쓰기” 옵션을 활성화하여 보안을 강화하세요.

안전 삭제를 보여주는 Bleachbit 창.

메인 인터페이스로 돌아가서 “메뉴 -> 파일 샤레드”를 클릭하고 팝업 요청에서 아무것도 아닌 상태로 만들고 싶은 파일을 선택하세요. “삭제”를 클릭하고 Bleachbit에게 당신이 하려는 일에 확신이 있음을 확인하세요.

저널링 파일 시스템의 사용과 각 HDD의 펌웨어가 내용을 “관리”하는 방식을 알 수 없다는 점을 항상 염두에 두어야 하며, 최선의 해결책은 전체 HDD를 지우는 것이며, 더 나아가 장치를 물리적으로 파괴하는 것입니다.

장점

  • 사용하기 쉬움
  • 기본적으로 안전하게 설정할 수 있음

단점

  • 디스크 삭제를 수행할 수 없음
  • 여유 공간을 지우지 않음

8. dd로 여유 공간 지우기

안전한 삭제는 파일을 복구하기 어렵게 만들지만, 여전히 디스크의 메타데이터를 사용하여 복원할 수 있습니다. 이 문제를 해결하려면 머신에서 사용 가능한 모든 여유 공간을 지워야 합니다.

리눅스에서 이를 수행하는 가장 쉬운 방법은 dd를 사용하여 전체 하드 드라이브를 채울 파일을 만드는 것입니다:

dd status=progress if=/dev/zero of=/home/$USER/wipefree

여유 공간 삭제 명령을 보여주는 터미널 창.

작업이 완료되면 시스템에 “여유 공간” 파일을 디스크에 커밋하도록 지시해야 합니다:

sync

마지막으로, rm을 사용하여 “여유 공간” 파일을 제거하세요:

rm /home/$USER/wipefree

리눅스에서 파일 삭제하기 18 여유 공간 파일 삭제

장점

  • 파일을 제거하지 않는 간단한 명령
  • 모든 남아 있는 메타데이터를 지움

단점

  • 완료하는 데 오랜 시간이 걸림
  • 파일을 직접 삭제하지 않음

: “저장 공간 부족” 메시지를 피하려면 정기적으로 디스크 공간을 확인하고 관리하세요.

자주 묻는 질문

리눅스에서 원격 파일을 안전하게 삭제할 수 있나요?

원격 파일을 안전하게 삭제하는 것은 가능하지만, 원격 리눅스 시스템이 디스크 내의 파일을 백업하지 않을 것이라는 보장은 없습니다. 모든 원격 디스크와 시스템이 안전하지 않다고 가정하는 것이 좋습니다.

리눅스에서 파일을 안전하게 삭제한 후 완전히 사라지나요?

시스템이 이전 파일의 일부 메타데이터를 여전히 보유하고 있을 가능성이 있습니다. 예를 들어, 스왑 파티션은 시스템에서 안전하게 삭제된 정보가 포함될 수 있습니다.

이를 완화하려면 재부팅하고 디스크에 새 파일을 생성하세요.

파일을 삭제할 때 더 많은 패스가 더 좋나요?

반드시 그렇지는 않습니다. 대부분의 경우, 다섯 번의 패스는 데이터 복구 도구가 파일을 재생성하는 것을 방지해야 합니다. 다섯 번 이상의 패스에서 파일을 복구하는 것은 가능하지만, 매우 전문화된 도구와 프로그램이 필요합니다.

이미지 출처: Unsplash. 모든 수정 및 스크린샷은 Ramces Red에 의해 작성되었습니다.