JORYX.com :: Blog

Todos tenemos un blog, al menos en la cabeza.

Geek, Sistemas Operativos, ZT

Como borrar millones de archivos en Linux sin usar rm o find

Nota para los visitantes asiduos de Joryx.com:

La siguiente entrada difiere completamente de lo que se publica habitualmente en joryx.com, si no tienes conocimientos o alguna vez has usado el sistema operativo Linux te parecerá aburrida y sin relevancia, te recomiendo que pases a leer otra cosa del blog. El motivo de publicarla es que no hay información sobre esto en español y hay que buscar mucho en sitios en ingles. Hay que fomentar la difusión del conocimiento.

Como borrar millones de archivos en Linux sin usar rm o find

En estos días me enfrenté a un problema con el servidor de este blog, como sabrán en /var/lib/php/session/ se guardan los archivos de sesiones de php, bueno, pues resulta que el garbage collector no hizo lo que tenía que hacer, borrar todas las sesiones vencidas. Un día el servidor amaneció caido porque ya había superado el límite de inodes, en este caso 10 millones.

Lo lógico sería usar un «rm * -rf » dentro de la carpeta para empezar nuevamente. Al ser un listado tan largo de archivos el comando rm no funciona. Buscando en varios sitios me encontré con distintas opciones para hacerlo, la siguiente opción más lógica fué la siguiente:

find /ruta -type f -exec rm {} \;

De este comando hay unas varaciones pero la lógica es la misma, para todos los casos funciona. Los que hacen esta propuesta comentan que borraron hasta 5 millones de archivos y les funcionó correctamente. En mi servidor no, seguía sin borrar un solo archivo y al ser un servidor que debe estar en linea todo el tiempo se imaginarán lo nervioso que me ponía la situación.

Después de horas de búsqueda (quizás no tantas) en el sitio linuxnote encontré la gran solución y que incluso es más rápida que find rm. El comando mágico es: rsync. Este comando sirve para sincronizar una carpeta en red o local para evitar copiar archivos innecesariamente.

El truco esta en que vamos a sincronizar una carpeta llena con una carpeta vacia, lo cual nos resultará en que las dos carpetas queden vacias. Ingenioso. La sintaxis sería así:

rsync -a –delete /ruta/a/carpetavacia/ /ruta/a/carpeta/llena/

En el blog hacen una comparación para borrar un millón de archivos, con find tarda alrededor de 90 minutos en hacerlo, con rsync tan solo 7 minutos.

Así que ya saben como solucionarlo.

The Penny OS!Foto:Andy Melton

1 Comentario

  1. ztead

    ¿En qué distribuciones funciona?

1 Pingback

  1. Bitacoras.com

Deja un comentario

Tema creado por Anders Norén