A veces se puede dar en servidores GNU/Linux la ocasión de tener una gran cantidad de archivos vacíos o directorios, bajo un mismo directorio y estos pueden tener diversos nombres o ser generados automáticamente (archivos de cache o similares). Con la intención de borrar archivos, liberar inodos y además limpiar tus directorios, pasare a explicar algunos de los siguientes comandos que puedes utilizar.
Para los ejemplos tomare como directorio de trabajo myblog/wp-content/uploads
Borrar archivos vacíos de un directorio
Forma 1: Por tamaño de archivo cero (opción size 0)
find myblog/wp-content/uploads -size 0 -print0 | xargs -0 rm --
Este comando buscará todo aquel archivo de tamaño cero e imprimirá por pantalla la ruta del mismo. Al ser tomado como argumento del programa xargs con rm, borrará cada uno de ellos
Forma 2: Opción empty de find
find myblog/wp-content/uploads -type d -empty -print -delete
Quitando el parámetro -delete, veriamos solo la impresión de los archivos que iríamos a borrar, o al revés sino queremos mostrar la lista de borrados, quitaríamos el parámetro -print
Otra alternativa diferente sería usando xargs:
find myblog/wp-content/uploads -type f -empty -exec rm -f {} \;
Eliminar directorios vacíos
Por otro lado, una vez eliminemos archivos, podemos tener la situación de tener muchos directorios vacíos, para ello podríamos borrarlos con:
find myblog/wp-content/uploads -type d -empty -print -delete
Quitando el parámetro -delete, veriamos solo la impresión de los archivos que iríamos a borrar, o al revés sino queremos mostrar la lista de borrados, quitaríamos el parámetro -print
De esta forma con unos simples comandos podemos organizar mejor nuestra estructura de directorios y archivos en el servidor. Existen varios ataques de denegación de servicio basados en creación de millones de archivos vacíos para saturar la cantidad de inodos de un servidor, luego estos comandos pueden ser muy útiles en esas situaciones de ataque.