Elimina tutti i file precedenti a X giorni


5

Quindi ho una configurazione di cron per fare i backup di una cartella in un tarball ogni ora. Vorrei aggiungere nello script della shell che sto usando la possibilità di avere i file cancellati automaticamente dopo circa tre giorni, in modo da non avere una merda di file.

Come posso andare su questo? Grazie.

Risposte:


8

Aggiungi questa riga allo script (modifica di conseguenza):

find /path/to/backup_folder -mtime +3 -exec rm {} \;

Questo presuppone che i tuoi tarball di backup e solo i tuoi tarball di backup risiedono in quella cartella. Puoi anche usare il tmpwatch utilità:

tmpwatch -mf /path/to/backup_folder 72

Quindi se aggiungo questo (cambiando il percorso della cartella), cancellerà qualcosa di più vecchio di tre giorni?
Chiggins

Sì, ma tieni presente che è ricorsivo. Se hai delle cartelle sotto la cartella di backup, aggiungi il -maxdepth 1 interruttore.
John T

Se non sei affatto sicuro, aggiungi "echo" prima di rm e verifica prima l'output.
Chris Nava

@Chris buon suggerimento!
John T

3

Dal mio crontab sul mio mac:

0 13 * * * /usr/bin/find /Users/dharris/.Trash -atime +14 -mindepth 1 -maxdepth 1 -print0 | xargs -0 ls -ltd

utilizzando -atime piuttosto che -mtime significa che se io accesso il file, non sarà cancellato.

La mia versione qui usa +14 per due settimane di ritardo, passare a +3 per le tue esigenze.


+1 per uso atime ... Lo faccio sempre anche io. Se guardassi il file, potrebbe essere abbastanza interessante tenerlo un po 'più a lungo.
Rich Homolka
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.