실수로 파일을 삭제해 본 적이 있으신가요? Delete 키를 눌렀거나, 터미널에서 rm 명령어를 실행했을 때 흔히 발생하는 상황입니다.
전자의 경우 휴지통(Trash)으로 이동해 해당 파일을 찾은 뒤 원래 위치로 복원하면 됩니다. 그렇다면 후자는 어떨까요? 이미 알고 계시겠지만, 리눅스 명령줄에서는 삭제된 파일이 어디에도 보관되지 않습니다. 즉, 파일은 영구적으로 제거되어 그대로 사라져 버립니다.
이 글에서는 이런 일이 발생하지 않도록 미리 예방하는 팁과, 만약 부주의로 인해 파일을 삭제했다면 활용할 수 있는 복구 도구를 소개합니다.
'rm -i' 별칭(alias) 설정으로 실수 예방하기
-i 옵션은 rm뿐 아니라 cp, mv 같은 다른 파일 조작 도구와 함께 사용할 때, 파일을 삭제하기 전에 확인 메시지를 표시합니다.
같은 이름의 파일이 이미 존재하는 위치에 파일을 복사하거나 이동·이름을 변경할 때도 마찬가지로 확인 절차가 진행됩니다.
이 확인 단계는 정말로 파일을 삭제할 것인지 한 번 더 생각할 기회를 줍니다. 물론 여기서 확인(y)을 입력하면 파일은 그대로 사라지며, 이 경우에는 어떤 방법도 사용자의 부주의를 막아주지 못합니다.
rm을 'rm -i'의 별칭으로 대체하려면 다음과 같이 입력합니다:
alias rm='rm -i'
alias 명령어를 통해 rm이 별칭으로 정상 등록되었는지 확인할 수 있습니다:
다만 이 설정은 현재 셸 세션에서만 유효합니다. 변경 사항을 영구적으로 적용하려면 아래와 같이 ~/.bashrc 파일에 저장해야 합니다(일부 배포판에서는 ~/.profile을 대신 사용합니다):
~/.bashrc(또는 ~/.profile)의 변경 사항을 현재 셸에 즉시 적용하려면 다음과 같이 파일을 다시 불러옵니다:
. ~/.bashrc
포렌식 복구 도구 – Foremost
바라건대 여러분은 늘 파일을 신중하게 관리해서, 이 도구가 외장 디스크나 USB 드라이브에서 잃어버린 파일을 복구할 때만 필요하기를 바랍니다.
하지만 시스템 내에서 실수로 파일을 삭제했고 당황하고 있다면, 침착하세요. 바로 이런 상황을 위해 설계된 포렌식 도구 foremost를 활용해 볼 수 있습니다.
CentOS/RHEL 7에 foremost를 설치하려면 먼저 Repoforge 저장소를 활성화해야 합니다:
# rpm -Uvh https://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm # yum install foremost
Debian 및 파생 배포판(Ubuntu 포함)에서는 다음 명령어 하나면 충분합니다:
# aptitude install foremost
설치가 완료되면 간단한 테스트로 복구 과정을 살펴보겠습니다. 먼저 /boot/images 디렉터리에서 nosdos.jpg라는 이미지 파일을 삭제합니다:
# cd images # rm nosdos.jpg
파일을 복구하려면 foremost를 다음과 같이 실행합니다. 이때 대상 파티션을 먼저 확인해야 하며, 이 예제에서는 /boot가 /dev/sda1에 위치한다고 가정합니다:
# foremost -t jpg -i /dev/sda1 -o /home/gacanepa/rescued
여기서 /home/gacanepa/rescued는 별도의 디스크에 있는 출력 디렉터리입니다. 삭제된 파일이 있던 드라이브 자체에 복구 결과를 저장하는 것은 절대 피해야 합니다.
복구 과정에서 삭제된 파일이 있던 동일한 디스크 섹터를 덮어쓰게 되면 복구가 불가능해질 수 있습니다. 따라서 복구 작업을 시작하기 전에는 시스템 사용을 최소화하고 모든 쓰기 작업을 중단하는 것이 매우 중요합니다.
foremost 실행이 끝나면, 복구에 성공한 파일(성공한 경우에 한함)은 /home/gacanepa/rescued/jpg 디렉터리 안에서 확인할 수 있습니다.
추가 팁: 최신 배포판 사용자라면
Repoforge 저장소는 현재 운영이 중단된 상태이므로, 최근 배포판에서는 testdisk, photorec, extundelete 같은 대안 도구를 고려해 보는 것이 좋습니다. 특히 PhotoRec은 Foremost와 마찬가지로 파일 시그니처 기반 복구를 지원하며 대부분의 배포판 기본 저장소에서 설치할 수 있습니다.
마무리
이번 글에서는 파일을 실수로 삭제하는 일을 방지하는 방법과, 불행히도 삭제가 발생했을 때 복구를 시도하는 절차를 살펴보았습니다. 단, foremost는 파티션 크기에 따라 실행 시간이 상당히 오래 걸릴 수 있다는 점을 미리 참고하세요.
궁금한 점이나 추가 의견이 있다면 언제든지 댓글로 남겨주세요.