리눅스 삭제 금지 - linugseu sagje geumji

리눅스에서 파일 및 디렉터리를 삭제하는 명령어는 rm을 이용하면 된다. 리눅스에서는 파일을 한 번 삭제를 하면 윈도와는 달리 휴지통이라는 개념이 없어서 복구를 할 수 없으니 신중히 사용해야 합니다.

1. 단일 파일 지우기

단일 파일은 rm 명령어 뒤에 파일명을 같이 입력하면 됩니다.

bitnami@172-26-14-3# rm 파일명
리눅스 삭제 금지 - linugseu sagje geumji

2. 여러 개 파일 지우기

파일명을 띄어쓰기 구분자로 계속 나열해주면 여러개의 파일을 지울 수 있습니다.

bitnami@172-26-14-3# rm 파일명 파일명 파일명 파일명 ...
리눅스 삭제 금지 - linugseu sagje geumji

3. 확장자명으로 전부 지우기

리눅스에서 * 문자는 전체를 의미 합니다. 반대로 a.* 이렇게 명령어를 날리면 a. 으로 시작 되는 모든 파일을 지울 수 있습니다.

bitnami@172-26-14-3# rm *.txt
리눅스 삭제 금지 - linugseu sagje geumji

4. 하위 디렉토리까지 강제로 지우기

리눅스에서는 폴더 하위에 파일이 있거나 다른 폴더가 있다면 삭제를 진행할 수 없습니다. 강제 옵션을 이용하여 지워주면 한 번에 지울 수 있습니다.

bitnami@172-26-14-3# rm -rf 폴더명
리눅스 삭제 금지 - linugseu sagje geumji

개요

rm 은 매우 위험한 명령어라 주의깊게 사용해야 한다.

 컨디션이 괜찮고 평온한 일상일 때야 실수할 확률이 적겠지만 연이은 야근으로 체력과 집중력이 떨어졌거나 장애 처리등으로 고도의 스트레스를 받거나 작업중에 전화가 계속 오는등 실수를 유발할  있는 환경에서는 작은 실수가 큰 참극을 부를수 있다.

예로 개인 폴더에서 hidden 인 파일들을 삭제하려고 명령어를 입력했다고 가정해보자.

하지만 오타나 실수로 아래 명령어를 쳤고 하필 root 로 로그인중이었다면 해당 시스템에 치명적인 손실을 입힐 수 있다.

실수를 저지르고 이를 통해 배우고 성장하는 건 꼭 필요하지만 rm –rf 로 운영 중인 서비스를 날리는 것은 말하기 부끄러운 실수인 것도 사실이다.

"rm -rf /" 등으로 인한 초대형 사고를 예방하기 위한 좋은 작업 습관을 정리해 본다.   

비파괴적인(Non-Destructive) 명령어로 검증

rm -rf 같이 파괴적인(Destructive) 명령어를 사용할 일이 있다면 ls등 비파괴적인 명령어를 먼저 수행하여 지우려는 대상이 맞는지 확인 후에 수행한다..

예로 /opt/removeme 를 지워야 한다면 다음과 같은 순서로 진행하면 된다.

  1. ls 로 대상 확인

  2. bash command history 기능을 이용하여 좀전에 입력한 ls 명령어 호출(키보드의  화살표 누름)
  3. Ctrl-A  눌러서 조금전에 호출한 line 시작으로 이동

  4. "ls -l" 을 "rm -rf " 로 수정후 실행하고 정상적으로 수행되었는지 확인. 

파괴적인 명령어 사용전 비파괴적인 명령어로 확인하는 습관은 SQL 작업을 할 경우에도 유용하게 사용할 수 있다.

예로 UPDATE나 DELETE 구문전에 SELECT로 영향받는 레코드의 수를 확인한 후에 SELECT에 사용한 WHERE 조건을 재활용하여 UPDATE, DELETE 구문을 생성하면 된다.

rm 을 안전 옵션으로 실행 

 일반적인 리눅스 배포판에는 GNU의 coreutil package 의 rm 명령어가 포함되어 있고 여기에는 --preserve-root 이라는 옵션이 있다. 이 옵션을 사용하면 실수로 rm -rf / 를 수행해도 다음과 같은 에러를 내며 수행을 거부한다.    

$ rm -rf /


rm: it is dangerous to operate recursively on ‘/’
rm: use --no-preserve-root to override this failsafe

CODE

다음과 같이 .bash_profile이나 .profile 같은 쉘 초기화 설정 파일에 rm 명령어를 -i(interactive) 옵션과 --preserve-root 옵션을 추가하여 alias 지정하는 것을 추천한다. 

alias rm='rm -i --preserve-root *' 

CODE

안전하게 설계된 삭제 프로그램 사용

일반적인 rm 대신 안전하게 설계된 trash-cli 을 사용한다.