GNU-Linux

소소한 사고, sudo rm -rf ~

동건 2018. 3. 9. 01:02

사고 내용

sudo rm -rf ~

굉장히 불쾌하게 머리가 하얘지는 것을 느꼈다.


사건의 발단

pipenv가 문제였다.

ESL 공부용 jupyter notebook 환경을 pipenv로 관리하고 있었다. Neural network 체험을 위해 pybrain을 설치했다가, pybrain은 유지가 잘 되지 않고 있다고 하길래 다시 지우고 pytorch를 설치하려고 했다. 그런데

  1. pipenv uninstall pybrain이 끝나는 걸 기다리고 기다리다가 20~30분이 지나도록 dependency lock 작업이 끝나지 않아서 중단했다.
  2. "괜찮아, 가상 환경 새로 날리고 다시 설치하지 뭐." 그리곤 pytorch 설치 기다리다가 또 중단.

미친 듯이 느려서 그냥 virtualenv를 쓰기로 결심하게 되었다. 오랜만에 다시 돌아가려니 손에 익질 않는다. 뭔가 좀 편하게 virtualenv를 사용하고 싶어서 환경 변수를 이래 저래 해서 시험해보다가 그만

~/.local $ VENV='~/.local/virtualenvs' virtualenv ${VENV}/testenv
# ~/.local/virtualenvs/testenv가 돼야 하는데
# ~/.local/~/.local/virtualenvs/testenv가 돼버림
# 내가 진짜로 잘못한 것은? 따옴표였다.

보시다시피 나의 현재 위치는 ~/.local. 나의 한 시간을 날린 pipenv 때문에 짜증 + virtualenv 다시 찾아보려니 짜증내다가 1초 만에 사고를 냈다. 심지어 그냥 rm -rf ~를 실행했다가 터미널에 출력되는 Permission Denied 에러를 보고 반사적으로 sudo까지 붙여서 한 번 더 실행했다. 손은 눈보다 빨랐다...


원래 썼어야 할 명령

sudo rm -rf "~"

아니면 좀 더 확실하게

sudo rm -rf "./~"


대처 내용

다행히

  1. Root /를 지우지는 않았다.
    만약 그랬다면 깔끔하게 오늘 하루 생산적이기를 포기하고 탱자탱자 재설치했을 듯 하다. (이참에 gentoo?)
  2. 내가 개인적으로 작업하고 있는 거나 회사 일 관련해서 모두 github repository로 올라가 있었기 때문에 치명적인 손해랄 것은 없었다. 작업 중이던 ESL 섹션 몇 장은 날아가긴 했지만, 뭐 이 정도면 선방했다.
  3. 그럼 마지막 문제는 $HOME에서 귀엽게 숨어있는 dot file들. 정말 다행히도 나는 그 설정 내역을 잘 정리해서 github에 올려두고 업데이트하고 있다! 정신 차린 후 바로 clone해서 퍼다 날라서 복구 완료했다. 만약 여기서 복구가 안 됐다면 나는 아직 이 글을 못 쓰고 있을 수도 있었다.


잃어버린 것도 있다

  1. gpg 키가 날아갔다.
  2. 모아둔 배경화면을 다시 찾아서 다운 받아야 했다. 이것도 구름 너머 어딘가에 올려둬야 겠다.



나에게도 이런 일이 벌어질 줄은 몰랐다. 오늘의 교훈,

  1. 홈 디렉토리가 아닌 ~가 생겼다면 잠깐 정신을 차리자.
  2. 개인 설정도 항상 잘 챙겨놓자.
  3. gpg를 쓸 거면 제대로 쓰자 (특히 개인키는 이동식 매체에 따로 보관).




pipenv 때문이야

반응형