SafeChildren Banner

Havoc Oracle Solaris Experts

viernes, 19 de marzo de 2010

Como eliminar archivos utilizando su inode

Introducción
Puede que alguna vez nos encontremos con un nombre de archivo un tanto extraño -por ejemplo con "-" o "/"- y desde la línea de comandos -con rm- no podemos borrarlo.

No hay problema, para ello, debemos utilizar el valor de su inode y utilizaremos el comando find para poder borrarlo. Vamos a ver un pequeño ejemplo, donde crearemos un archivo con nombre -h y lo intentaremos borrar con rm
# vi
  este archivo no se puede  borrar con rm
:w-h
:q
# ls -ltr
total 16
-rw-r--r--   1 root     root           7 mar 19 10:29 -h
# rm *
rm: opción no permitida -- h
sintaxis: rm [-fiRr] archivo ...
Como ya sabíamos, <-h> se le pasa a rm y éste lo interpreta como una opción y no como nombre del archivo.

Vamos a utilizar el comando <find> con la opción <-inum> y el inode del archivo para poder eliminarlo, el formato será el siguiente
# find _path_ -inum _inode_ -exec rm {} \;
Lo primero  que debemos conocer es el número de nodo <inode> y para ello, utilizaremos la opción <-i> de <ls> y posteriormente, ejecutaremos nuestro comando find para eliminarlo, veamos un ejemplo
# ls -li
total 16
  30475938 -rw-r--r--   1 root     root           7 mar 19 10:29 -h
# find . -inum 30475938 -print
./-h
# find . -inum 30475938 -exec rm {} \;
# ls -li
total 0
Conclusión
Aunque serán en contadas ocasiones este pequeño tip nos solucionará problemas, sobre todo si tenemos un servidor de archivos y tenemos MacOS y/o Windows como clientes.



Referencias

1 comentario: