Hola Wilson,
permíteme una sugerencia que seguramente va a afectar el funcionamiento de la copia y de la aplicación que use la carpeta con 500K de archivos. El tener 500k de entradas en una única carpeta va a hacer TODAS las operaciones lentas, y la vuelve muchísimo más suceptible a fallos del filesystem. Incluso cuando añades un xml nuevo a la carpeta seguramente le tomará bastante más tiempo crear un nuevo archivo porque tiene que buscar en todo el directorio si existe. Ese problema lo tienen muchas aplicaciones, por ejemplo los cachés tipo Squid, o los servidores de correos, y programas así que tienen muchos archivos pequeños. Lo que hacen para evitar tener tantas entradas en un mismo directorio es separarlas por algún criterio, por ejemplo Squid guarda los archivos cacheados con nombres que son 16 dígitos hezadecimales, entonces crea 256 carpetas 00, 01, 02..... FE,FF y reparte los archivos, entonces, por ejemplo, tendrías 256 carperas con 2000 archivos c/u, lo cual seguramente funcione más rápido. Obviamente requiere un poco más de gestión, no conozco el detalle de tu aplicación y el origen de los xml, pero seguramente encontrarás algún criterio que te ayude a separarlos.
Otra alternativa es hacer como hace Outlook con los correos: poner todos los ficherosjuntos y armar un índice de donde están dentro del texto, pero eso ya es mucho más elaborado.
Una entrada de stackOverflow al respecto:
https://stackoverflow.com/questions/299 ... -and-linux
Un saludo