일하는 중에

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

likebnb 2010. 10. 8. 12:34


too many levels of symbolic link

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

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

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

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

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

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

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

# unlink  undeleted.symbolic.link.tmp


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