Tengo un trabajo que se ejecuta en mi servidor en el indicador de línea de comandos durante dos días:manera más eficiente para encontrar y alquitrán millones de archivos
find data/ -name filepattern-*2009* -exec tar uf 2009.tar {} ;
Es tomar siempre, y algo más. Sí, hay millones de archivos en el directorio de destino. (Cada archivo es un mísero 8 bytes en una estructura de directorios así hash.) Pero sólo corriendo ...
find data/ -name filepattern-*2009* -print > filesOfInterest.txt
... tan sólo dos horas más o menos. A la velocidad en que mi trabajo se está ejecutando, no estará terminado por un par de semanas .. Eso parece irrazonable. ¿Hay una forma más eficiente de hacer esto? ¿Quizás con un script bash más complicado?
A preguntas secundarias es "¿Por qué mi enfoque actual es tan lenta?"
El parámetro Exec genera un nuevo proceso de alquitrán para cada archivo encontrado. Además, la operación de actualización tar es costosa. – theomega
¿cuántos archivos tienes y qué tan grandes son? El impacto de invocar tar para cada uno de los archivos hace una gran diferencia para 10 archivos petabyte o 10 billones de archivos pequeños – sfussenegger
@sfussenegger: 8 bytes cada uno ... tiene una pregunta actualizada. Como se indica en q, hay * millones * de archivos. –