본문 바로가기
일하는 중에

심볼릭 링크 때문에 디렉토리 삭제가 안될 때는 too many levels of symbolic link

by likebnb 2010. 10. 8.


too many levels of symbolic link

리눅스, 유닉스 계열의 운영체제에서 종종 만날 수 있는 상황이다.

실로 다양한 상황들이 있겠지만 필자가 만났던 상황은 다음과 같다.
tar로 아카이빙 되어 있는 파일들을 특정 디렉토리에 풀었다가 더 이상 필요치 않아 지우려는데
디렉토리가 비지 않아 지워지질 않는다면서 뱉어낸 에러 메시지 중 일부분이었다.

그냥 무시한 채로 놔둬도 상관이 없다면 좋겠지만 du 등의 유틸리티를 사용할라치면
또 다시 문제가 불거지게 된다. 운영체제 입장에선 상당히 성가신 존재가 되어버린 것이다.
말 그래도 심볼릭 링크의 늪에 빠져 들어 허우적대는 꼴이 되어버리는 것이다.

문제의 메시지를 우리 말로 의역을 해보자면
심볼릭 링크 안에 또 심볼릭 링크가 있고, 그 안에 다시 심볼릭 링크가 있는데
이런 식으로 계속 반복되는 것이 그 깊이를 알 수 없을 정도라는 말이다.

하지만 자세히 들여다보면 이 메시지 안에 문제를 풀 열쇠가 주어져 있다. 그 열쇠는 다름 아닌 바로 symbolic link 이다.

이 때는 rm -rf 식의 명령은 도움이 되질 않는다. unlink 라는 명령을 사용하라. 
물론 명령 뒤엔 링크를 해제 할 디렉토리나 파일명을 넣어주어야 한다. 

예를 들어 문제의 디렉토리가 undeleted.symbolic.link.tmp 식의 이름을 가졌다면 다음과 같이 unlink를 해주면 말끔하게 사라진다.

# unlink  undeleted.symbolic.link.tmp


혹시라도 이런 상황을 만나게 되면 분명 유용한 팁이 될 것이다.