Soy un novato completo en Linux, pero estoy empezando a entenderlo. Tengo un Ubuntu Server 16.04 que ejecuta un servidor FTP para respaldar archivos de video de seguridad. Los archivos se almacenan en carpetas como: /home/securityfolder1, /home/securityfolder2, /home/securityfolder3y así sucesivamente.
Tenga en cuenta que cada uno securityfolderNes un usuario diferente.
Porque yo no quiero que mis discos duros a estar lleno todo el tiempo, quiero borrar archivos mayores de 7 días en estas carpetas diarias.
files
cron
delete
automation
Jacco van de Wijgaart
fuente
fuente

/homegeneralmente contiene una subcarpeta para cada usuario. Si no desea almacenar las copias de seguridad como los diferentes usuarios (no muy buena idea), se debe considerar otra ubicación, por ejemplo,/home/security/backup1y así sucesivamente.Respuestas:
Primero, este comando buscará y eliminará todos los archivos anteriores a 7 días en cualquier subdirectorio
/homecuyo nombre comience consecurityuser:Necesita
-mtime +6y no+7porque-mtimecuenta períodos de 24h. Como se explica en la-atimesección deman find(-mtimefunciona de la misma manera):Por lo tanto, para encontrar un archivo que se modificó hace 7 o más días, debe buscar archivos que se modificaron hace más de 6 días, por lo tanto
-mtime +6.El siguiente paso es ejecutar este comando una vez al día. Dado que cada uno
securityuserNes un usuario diferente (es posible que desee repensar esa configuración, hace que todo sea más complicado), esto debe ejecutarse como root. Entonces, edita/etc/crontab:Y agregue esta línea:
Eso ejecutará el
findcomando una vez al día y eliminará los archivos.fuente
find '/home/securityuser/*' -mtime +6 -type f -delete(con todos los cambios pertinentes y apropiados en la creación de usuarios) en general podría ser una mejor idea quefind '/home/securityuser*' -mtime +6 -type f -delete(sin barra en el camino) ...?/home/securityuserN, por lo que sin la barra, no se encontrarán.-name:find /home/ -name 'securityuser*' -mtime +6 -type f -delete'securityuser*'. El comodín debe ser ampliado por el shell, y no porfind, por lo que debería haber sidosecurityuser*(sin comillas). Ver respuesta actualizada. Gracias por señalarlo, Stelio, no puedo creer que nadie se dio cuenta antes! Ti vlakas!Según mi conocimiento:
prueba
findcomando como este:fuente
find /home/jacco/ -mtime +1 -type f -deletey parece funcionar. ¿Cómo puedo automatizar esto?#!/bin/bashel código debajo? o soy realmente estúpido aquí?find '/u*' -name local. Esas directivas como-name "foo*"esa deberían citarse cuando contienen caracteres globales.