2011년 5월 23일 월요일

*NIX 시스템에서 파일 삭제가 안되는 경우 이런 방법을 사용해보자

*NIX 시스템에서 삭제할 파일이 너무 많은 경우 실패를 한다. 예를 들어, rm -rf * 로 파일을 지운다고 하였을때 다음과 같은 메시지를 받는 경우가 있다:

bash: /bin/rm: Argument list too long

이런 경우는 정말 삭제할 파일이 너무나 많은 경우로, 인자로 해당 리스트가 다 넘어가지 못했기 때문이다. 이럴때 find 를 이용해 보자. *.log 라는 파일을 다 삭제하는 경우 현 디렉토리에서 *.log 를 찾아서 xargs 로 Input 을 받아 rm 명령어로 삭제하는 것이다.

find . -name '*.log' | xargs rm

이러면 일단 삭제는 할 수 있다. 또, 파일이름이 이상해서 삭제가 안되는 경우도 있다. 그러면 inode 번호를 이용해 삭제하면 된다. ls 명령어에서 -i 옵션은 inode 번호를 보여준다. 그러면 find 의 -inum 옵션을 이용해서 아래와 같은 형태로 삭제할 수 있다.

$ ls -l
total 0
-rw-r--r-- 1 rigel rigel 0 May 19 23:33 test.txt
$ ls -li
total 0
38207514 -rw-r--r-- 1 rigel rigel 0 May 19 23:33 test.txt
$ find . -inum 38207514 -exec rm {} \;
$ ls -l
total 0
$

시스템 운영에 참고하길 바란다.

댓글 없음:

댓글 쓰기