ForFour

[운영체제]Linux rm command 근데 이제 rf를 곁들인.. 본문

개념 챙기기

[운영체제]Linux rm command 근데 이제 rf를 곁들인..

for_four 2021. 5. 12. 10:34

Linux

Linux는 1991년 9월 17일  리누스 토르발스가 처음 출시한  운영 체제 커널인 리눅스 커널에 기반을 둔 오픈 소스 유닉스 계열 운영 체제 계열이다. - [위키백과]

 

리눅스는 오픈소스이기 때문에 누구나 배포판을 만들 수 있습니다. 유명한 배포판으로는 데비안, 우분투, 페도라가 있습니다.
리눅스도 gui(데스크탑) 버전이 있기는 하지만 서버용으로 리눅스를 쓴다면 대부분 terminal(CLI) 환경에서 작업을 합니다.

 

명령어

terminal환경에서 작업을 주로 하기 때문에 linux os에서 자주 사용하는 명령어들이 있는데 ls(local system?), cd(change directory) 등의 명령어가 있고, rm(remove) 명령어를 통해 파일을 삭제할 수 있습니다.

 

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head -20

위의 shell 구문을 통해서 지금까지 내가 썼던 top 20 명령어를 확인할 수 있는데 저는 이렇게 나오네요. 

지금 사용하고 있는 mac에서 한 번 해봤습니다.

rm options

rm 명령어는 파일이나 폴더를 삭제할 때 사용하는 명령어인데 아래와 같이 명령어에 옵션을 추가할 수 있습니다. 

 

*추가로 terminal 환경에서 `man rm`명령어를 입력하면 rm의 상세를 볼 수 있습니다.
-f : 파일 강제 삭제
-d : 디렉토리 삭제 #rmdir로 빈 디렉토리 삭제 가능
-i : 파일을 삭제할 때마다 메시지 출력
-r , -R : 하위 디렉토리를 포함하여 삭제. abbr.Recursive

rm -rf

rm -rf /

옵션은 중첩이 가능합니다. 따라서 `rm -rf`와 같은 명령어를 쓸 수 있는데 하위 폴더까지 재귀적으로 ‘싹 다 강제로 제거’라는 뜻입니다.

 

보통 linux에서 파일을 현재 디렉토리의 파일을 날리고 싶을 때 `rm -rf ./*` 명령어를 사용합니다.  현재 디렉토리(.)의 모든 파일(*)을 삭제하라는 뜻인데 정신줄을 놓고 타이핑을 하다가 `rm -rf /*`라고 명령어를 입력하는 대참사가 가끔 발생합니다. 

 

/앞에 아무것도 없으면 root 디렉토리라는 뜻이기 때문에 현재 컴퓨터의 있는 모든 파일, 그리스 신화의 에릭식톤처럼 자기 자신까지 없애버려 껍데기밖에 남지 않는 상태가 되어버립니다. 최신 버전들은 시스템적으로 저 명령어를 막아놨다고 합니다. ㅎ

 

[ $[ $RANDOM % 6 ] == 0 ] && rm -rf / || echo *찰칵*
위처럼 미친 러시안룰렛을 할 수도 있습니다 … ㅠ

다시 돌아갈래ㅠㅠㅠㅠ

어떻게 다시 되돌릴 수 없을까요? ㅠ 아마 rm -rf / 명령어는 .. 이미 소생불가의 상태일 겁니다.. 

 

`rm rf /` 어쩔 수 없다고 치고 rm으로 삭제한 다른 파일들은 어떨까요?

 

어떤 방법이든 개발자들은 방법을 찾아내기 때문에 방법이 없지는 않을 것이라고 생각했습니다. 
또 파일이 삭제되고 복구하는 원리를 생각해보면 데이터를 삭제하는 것이 아니라 링크를 끊는 것이기 때문에 다시 이을 방법만 있다면 파일이 복구되지 않을까요?

 

rm rf 복구 구글링을 해보면 다양한 방법들 다양한 의견들이 너무나도 많은 것 같습니다.
‘백업을 했어야지..’ , ‘그냥 포기하는 게 편하다.’ , ‘파일 시스템에 따라서 다르다.’ 등등..

 

결말 - 새드엔딩

최대한 다양한 글들을 보며 가벼운 rm undo 방법이라도 조사를 해보려고 했으나 현재 시도해볼 수 있는 방법, 긍정적인 답변이 있는 자료를 찾기가 힘들었습니다. ㅠ

 

그나마 긍정적인 자료는 그나마 안전설계된 프로그램이었습니다. - [trash-cli]

 

 

정말 불가능한 것인지 아니면 조사능력이 부족했던 것인지. 나중에 조금 더 내공이 생겼을 때 이 글을 수정하며 명확한 해결방법에 대해 추가할 수 있었으면 좋겠습니다.ㅠ

 

 

결론은 역시 돌고돌아 정답은 꾸준한 백업인 것 같습니다.

command line - Do we have an undo in Linux?

 

 

*ext3grep - ext3 복구
다음의 글은 파일시스템 ext3에서 복구를 해주는 방법을 설명하고 있습니다. 읽어보셔도 좋을 것 같습니다

 

 

*잘못된 정보가 기재되어 있다면 언제든 댓글달아 주세요 ㅎ

Comments