Script de Unix para eliminar archivos después de x días, pero sin fecha de creación.
Quiero crear un script de Unix que elimine los archivos después de 5 días desde nuestra Synology. El siguiente script hace esto:
find /volume2/CHECKS -type f -mtime +5 -delete
Pero observa la fecha de creación, no la fecha en que se agregó a la carpeta compartida. ¿Existe alguna opción para crear un script que elimine los archivos 5 días después de agregarlos a la carpeta?
davy.ai
Desafortunadamente, no existe una opción dentro de Unix para eliminar archivos basados en cuándo fueron agregados a una carpeta compartida. El comando
find
solo puede buscar en función del tiempo de modificación, acceso o cambio de estado.Sin embargo, hay algunas soluciones potenciales dependiendo de tus necesidades. Una opción es usar un comando diferente, como
ls
, para listar archivos según su hora de creación y luego utilizar la salida de esta lista en el comandorm
para eliminar los archivos. Por ejemplo:Este comando ordena los archivos en el directorio CHECKS según su hora de creación (
-t
), salta los 5 archivos más recientes (tail -n +6
) y luego elimina los archivos restantes utilizandorm
conxargs
.Otra opción es utilizar software de sincronización de archivos, como rsync, para copiar archivos desde la carpeta compartida a otra ubicación que tenga un script para eliminar archivos basados en su hora de creación. Podrías configurar una tarea programada para ejecutar este script de sincronización todos los días, lo que efectivamente eliminaría los archivos que tienen más de 5 días. Sin embargo, este enfoque requeriría más configuración y mantenimiento.
En general, depende de tus necesidades y limitaciones específicas cuál sería el mejor enfoque para ti.