3. OS이야기/ 01. Administration

[UNIX/LINUX] inode로 파일 삭제하기

알 수 없는 사용자 2014. 7. 4. 18:56

inode를 통한 파일 삭제 방법에 대해 글 올립니다.

간혹 시스템을 운영 또는 관리하면서 파일 등을 생성하다가 타이핑 또는 copy&paste 상의 오류로 인해 아래와 같은 당황스런 상황을 겪으실 텐데요.

[root@ktdsoss01 tmp]# ll

total 28

-rwxr-xr-x. 1 root root  451 Jul  1 19:06 check_filesize.sh

drwx------. 2 gdm  gdm  4096 Apr 16 13:35 orbit-gdm

-rw-------. 1 root root 4096 Jun 25 16:09 perf-vdso.so-cub1DC

drwx------. 2 gdm  gdm  4096 Apr 16 13:34 pulse-QsuJaVkv9Zam

drwx------. 2 soya soya 4096 Apr 10 05:03 pulse-fc3LQ3hmuoZ7

drwx------. 2 root root 4096 Apr 15 19:31 pulse-xZomMcZuYo4E

drwxr-xr-x. 3 root root 4096 Apr 16 22:30 vmware

-rw-r--r--. 1 root root    0 Jul  4 18:43 ??????


눈에 보이는 것과 동일한 문자를 타이핑하여 rm 명령을 사용해도 파일이 삭제가 안되는 황당한 경우를 한 번씩은 겪어 보셨을 겁니다.(아닌가요....?;;;;)

이럴 때 inode 라는 것을 사용하면 되는데요.

inode 란 UNIX나 LINUX와 같은, 모든 것이 파일 단위로 운영되는 시스템들에서 파일이 생성될 때마다 함께 생성되는, 파일에 대한 정보를 가진 메타 파일이라고 생각하시면 됩니다.(자세한 내용은 구글링을 통해..;;)

이러한 inode 는 우리가 흔히 사용하는 ls 명령어에 -i 옵션만 주시면 다음과 같이 확인하실 수 있습니다.

[root@ktdsoss01 tmp]# ls -ali

total 56

523265 drwxrwxrwt. 11 root root 4096 Jul  4 18:43 .

     2 dr-xr-xr-x. 32 root root 4096 Apr 16 16:19 ..

523267 drwxrwxrwt.  2 root root 4096 Apr 16 13:34 .ICE-unix

523270 -r--r--r--.  1 root root   11 Apr 16 13:34 .X0-lock

523271 drwxrwxrwt.  2 root root 4096 Apr 16 13:34 .X11-unix

523313 drwx------.  2 root root 4096 Apr 15 19:31 .esd-0

523294 drwx------.  2 soya soya 4096 Apr 10 05:03 .esd-500

523274 -rwxr-xr-x.  1 root root  451 Jul  1 19:06 check_filesize.sh

523275 drwx------.  2 gdm  gdm  4096 Apr 16 13:35 orbit-gdm

523266 -rw-------.  1 root root 4096 Jun 25 16:09 perf-vdso.so-cub1DC

523285 drwx------.  2 gdm  gdm  4096 Apr 16 13:34 pulse-QsuJaVkv9Zam

523286 drwx------.  2 soya soya 4096 Apr 10 05:03 pulse-fc3LQ3hmuoZ7

523287 drwx------.  2 root root 4096 Apr 15 19:31 pulse-xZomMcZuYo4E

523297 drwxr-xr-x.  3 root root 4096 Apr 16 22:30 vmware

523268 -rw-r--r--.  1 root root    0 Jul  4 18:43 ??????


위에서 ?????? 라고 잘못 생성된 파일의 inode는 523268 이며, 이 파일을 지우는 방법은 다음의 명령어 한 줄이면 됩니다.

[root@ktdsoss01 tmp]# find . -inum 523268 -exec rm {} \;


앞으로 위와 같은 상황이 닥쳤을 때,


당황하지 않고~

inode 정보를 확인한 후~

find 명령에 inum과 exec 옵션을 사용하면~

빡!!

끝!!


이상입니다.

감사합니다.