Soluzione 1:
Senza una modifica al tuo processo, logrotate da solo non farà quello che stai cercando qui. Il problema chiave qui è che, sebbene logrotate possa accettare i caratteri jolly, non tratterà i file come uno solo se lo fai e tenterà invece di ruotarli tutti individualmente, il che NON è sicuramente quello che vuoi.
Puoi, tuttavia, farlo funzionare nel modo in cui descrivi purché il backup più recente venga creato senza un indicatore di data. Se il processo di backup crea /root/backup.tar.gz
ad esempio, potresti utilizzare la seguente configurazione logrotate:
/root/backup.tar.gz {
rotate 5
nocompress
dateext
dateformat _%Y-%m-%d
extension .tar.gz
missingok
}
Il rapido riepilogo delle opzioni qui:
rotate 5
-- mantieni 5 rotazioni prima di eliminarenocompress
-- non comprimere i file dopo la rotazionedateext
-- usa la data come estensione di rotazione invece di incrementare i numeridateformat _%Y-%m-%d
-- imposta il formato dell'estensione della data che desideri utilizzareextension .tar.gz
-- crea il.tar.gz
viene dopo l'estensione di rotazionemissingok
-- se il file che vogliamo ruotare non è presente, non preoccuparti e vai avanti (l'impostazione predefinita è generare un errore)
Spero che questo aiuti!
Soluzione 2:
Non devi usare logrotate per farlo. Basta usare un comando come questo:
ls -1 /root/backup_* | sort -r | tail -n +6 | xargs rm > /dev/null 2>&1
Questo comando lascerà i 5 file più recenti e rimuoverà i restanti (se presenti). Puoi usarlo in un cron job.
Soluzione 3:
Logrotate ruota i file, quindi la risposta è sì, probabilmente, e se non ci sono autorizzazioni sufficienti, inseriscili in /backup o qualcosa del genere. Controlla quale gruppo e utente hanno i log ruotati :-).
Ci sono opzioni per la compressione in logrotate, quindi se "compress" NON è configurato - beh, allora non ci proverà. Anche nel tuo caso, opzione "ruota 5".
Dai un'occhiata in /etc/logrotate.d (o ovunque sia memorizzato nel tuo sistema)