리눅스 파일 삭제 rm -rf 대형사고 예방 방법

리눅스에서 가장 위험한 명령어는 의심의 여지없이 rm -rf입니다. 그러나 꼭 필요한 명령어이기도 합니다. 그래서 안전하게 사용하는 습관을 들이는 게 중요합니다.

rm -rf란?

리눅스에서 rm은 파일을 삭제하는 명령어입니다. 기본형인 rm만 단독으로 사용하면 파일만을 제거합니다. 디렉토리(폴더)는 제거할 수 없습니다.

 

rm에 -r 옵션이 붙으면 디렉토리를 통째로 삭제할 수 있는 동시에 하위 디렉토리까지 모두 삭제가 가능합니다.

 

-f 옵션이 붙으면 쓰기 권한없이 읽기 권한만 있는 파일도 강제 삭제합니다. 지정한 삭제 대상이 없는 경우에 메시지를 출력하지 않도록 합니다.

 

결론적으로 rm -rf는 폴더 삭제가 가능하고, 삭제할 때마다 일일이 물음에 대답하지 않아도 되는 편리한 삭제 명령어입니다. 그래서 가장 많이 사용되는 동시에 가장 위험한 명령어입니다. 

대형 사고의 주범은 슬레시(/)

rm -rf로 인한 사고의 주범은 /라고 볼 수 있습니다. 아래 세 명령어의 차이를 보면 이해가 됩니다.

rm -rf ./*

rm -rf /*
rm -rf . /*

점(.)하나 차이인데 어마 무시한 차이가 발생합니다. 첫 번째 명령어는 현재 있는 위치를 기준으로 하위 디렉토리를 모두 삭제합니다. 이 명령을 사용하려다가 아래의 명령어를 입력하면서 사고가 발생합니다.

 

두 번째는 / 디렉토리 및 하위 디렉토리를 모두 삭제하는 명령어, 세 번째는 현재 디렉토리(.)와 / 디렉토리 및 하위 디렉토리를 모두 삭제하는 명령어입니다. 쉽게 말해 root 계정으로 이 명령어를 수행하면 하드디스크를 포함한 os를 깨끗하게 밀어버립니다. 대형 사고입니다.

사고 예방 방법

1. 되도록 /는 쓰지 않습니다.

rm -rf로 인한 사고를 예방하려면 절대경로의 시작인 /를 사용하지 않는 게 좋습니다. 삭제하려는 위치로 이동하면 /없이도 *를 이용하면 전체 삭제가 가능합니다.

rm -rf *

2. 확장자를 패턴으로 사용합니다.

좀 더 나아가서 확장자를 붙여서 삭제하는 습관을 들이는 게 좋습니다. 예를 들어, 로그 파일을 모두 정리하는 경우에는 *.log 패턴으로 삭제하는 방법입니다. 로그 정리할 때 매우 유용합니다.

rm -rf *.log

3. -i 옵션을 활용합니다.

좀 귀찮은 방법이라 실용성엔 의문이 있지만, 파일을 삭제할 때 “진짜로 삭제하시겠습니까?” 같은 대답에 y나 n으로 답하도록 -i 옵션을 사용할 수 있습니다. 

rm -i a.txt
y

$HOME/.bashrc에 rm=”rm -i”처럼 별칭을 설정하면 rm을 실행할 때 기본적으로 -i 옵션이 호출되도록 할 수도 있습니다. 단, 이것도 -f가 붙으면 무시됩니다.

 

4. root 계정에선 가급적 rm -rf을 사용하지 않습니다.

가능한 루트 계정으로는 rm -rf를 쓰지 않는 게 좋습니다. 모든 권한이 있기 때문에 실수했을 경우 더 치명적이기 때문입니다.

반응형

댓글

Designed by JB FACTORY