Borrar millones de archivos en Linux

·

Inaugurando mi regreso a WP despues de pasar por Ghost y tener mi dominio abandonado, hoy hablare de un problema que tal vez tengan otros sysadmin.

Ya hace tiempo tengo clientes que guardan el cache de sus consultas, ya sea en un .json o un .cache, no estoy seguro si sea una buena practica pero me parece algo cool tener el json con la información de la consulta para no saturar la base de datos, aunque son sitios con mucho trafico estos archivos terminan siendo demasiados.

Como sea, estos clientes llegan a tener millones de archivos y esto ocasiona varios problemas pero hoy hablare del problema de «cuando se quiere limpiar el cache». Imaginen que mi cliente tiene 50GB de jsons de 1KB o menos, eso dice mucho no?

Nuestro primer acercamiento al problema seria borrar todo con un «rm -rf» pero posiblemente les regrese algo como «Argument too long» indicando que son demasiados archivos para borrar por rm. Asi que veamos opciones

  1. La mas efectiva para mi es usar find -delete, elimina muy rápido cada archivo e incluso se pueden usar condiciones sobre que carpetas, nombre de archivos, tiempo de creación, etc por lo que se me hace la mejor opción.
  2. rm -rf directorio una opción es no borrar los archivos dentro del directorio si no borrar el directorio en si, en este caso tardara pero ira borrando de poco a poco los archivos dentro hasta eliminar el directorio, si se cancela cuando se están borrando archivos este dejara los faltantes.
  3. rsync -a –delete directoriovacio directoriolleno esta opción no me ha servido para nada, es mas lenta que find y no aunque es buena alternativa después de n archivos tarda demasiado.
  4. perl -e ‘unlink <*>’ aunque no llegue a utilizarlo porque simplemente se quedaba procesando el listado, perl es otra opción para eliminar gran cantidad de archivos.
  5. Un batch con rm -rf para n cantidad de archivos o con un for mas exactamente, y aunque funcionaria bien siento que lo mejor es find.

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.