Tenemos el desafío de eliminar alrededor de X millones de archivos que cumplen con ciertos criterios; específicamente, deben tener más de 90 días y excluir ciertos formatos de archivo. Hasta la fecha, hemos estado usando un script de PowerShell de subprocesos múltiples que es bueno, pero aún no es tan rápido como necesitamos, ya que nuestros procesos de ingesta están creando nuevos archivos a un ritmo elevado.
¿Qué puedo hacer para acelerar la eliminación de tantos archivos?
Respuesta1
Agente saqueoes realmente rápido y admite la eliminación de archivos según la fecha de modificación.
Además, obviamente, se ejecutará más rápido si cierra todos los demás procesos que se ejecutan en el servidor.
Respuesta2
Powershell tiene fama de no ser muy rápido; tal vez un archivo por lotes que utilice el comando integrado de Windows forfiles
pueda ser la solución.
Para seleccionar y eliminar todos los archivos con más de 90 días, puedes usar algo similar a:
forfiles -p "C:\your\dir" /S /D -90 /C "cmd /c del @path"
Si esto sigue siendo demasiado lento, puede usar forfiles
para crear primero una lista de los archivos que se van a eliminar y luego usar un comando de eliminación por lotes sobre todos los archivos de la lista (esto puede disminuir significativamente la cantidad de del
llamadas/iteraciones).
Para más información y otros modos más o menos creativos para eliminar archivos, puedes veraquíyaquí