Buscando un script para buscar en servidores Linux archivos con más de x cantidad de días con un esquema de nomenclatura específico

Buscando un script para buscar en servidores Linux archivos con más de x cantidad de días con un esquema de nomenclatura específico

Mi empresa tiene un conjunto de servidores Linux en los que los usuarios almacenan archivos. Los archivos siguen un esquema de nomenclatura común de #####,###,### con los números correlacionados con campos exclusivos para ellos. Se supone que deben eliminar los archivos después de 30 días, pero eso no está sucediendo y, como resultado de una creciente comunidad de usuarios, algunos de los servidores se están quedando sin espacio en disco.

¿Alguien conoce alguna manera de crear un proceso que busque en todas las particiones de los servidores Linux cualquier archivo con el esquema de nombres anterior que tenga más de 30 días y lo mueva a una nueva carpeta?

Eso haría que la limpieza fuera mucho más fácil porque algunos de los usuarios almacenan archivos en muchos niveles de profundidad y está empezando a ocupar mucho tiempo simplemente buscándolos, lo que le permite decidir si se pueden eliminar o no.

¡Cualquier ayuda sería muy apreciada!

Respuesta1

Utilizar elencontrar comandopara obtener los archivos que desea. Puede utilizar la -mtimeopción para establecer la antigüedad del archivo. Puede utilizar la expresión regular \d{5},\d{3},\d{3}$para que coincida con el nombre del archivo. Luego mueve cada archivo a donde quieras.

Como esto:

find / -mtime +30 -regex '\d{5},\d{3},\d{3}$' -exec mv {} /path/to/destination/folder \;
  • Lo anterior desata esto en la raíz, lo cual da bastante miedo. Considere contenerlo solo en los directorios que necesita.
  • Tenga en cuenta que ese patrón no es extremadamente único, así que utilícelo nuevamente con precaución.
  • Afina tu expresión regularaquí

información relacionada