Se hai bisogno di rotare in file di testo o un file di log senza usare il logrotate di linux, ti suggerisco questo semplice script bash che eseguo tramite cron in questi casi.
Lo script è stato scritto su sistemi Centos7, credo che giri senza problemi su altre versioni Centos o comunque Red Hat
Non essendo io un programmato immagino che questo script sia molto poco elegante, quindi ogni suggerimento per migliorarlo è bene accetto.
Ecco lo script, il file l’ho chiamato rotate.sh
#!/bin/bash
now="$(date +'%Y-%m-%d-%H-%M')"
toberotated="/path/to/file/toberotated.log"
newfilename="newfile_$now"
mv $toberotated /path/to/destination/$newfilename
#systemctl restart service-to-be-restart
Lo script è molto semplice ma bisogna fare attenzione a due cose
La prima. Se il file originale era gestito da un qualche servizio o demone (es syslog-ng o rsyslog) sarà necessario togliere il commento all’ultima riga dello script e indicare il nome del servizio da riavviare. Se non lo si fa, il servizio non ricreerà più il file originale finchè non viene riavviato.
La seconda. Se il file originale è troppo grande sarebbe meglio zippare il file rotato in modo da occupare meno spazio sul disco.
Ecco il file rotato zippato tramite tar.
#!/bin/bash
now="$(date +'%Y-%m-%d-%H-%M')"
toberotated="/path/to/file/toberotated.log"
newfilename="newfile_$now"
tar -zcvf /path/to/destination/$newfilename".gz" $toberotated
rm -f toberotated
#systemctl restart service-to-be-restart
L’ultimo passaggio consiste nel creare un file cron che avvii lo script con la frequenza desiderata. In questo caso lo script verrà eseguito ogni ora.
Ricordarsi di riavviare cron una volta modificata la configurazione.
[root@myserver ]#vim /etc/cron.d/rotatemyfile
* * * * * root /path/to/my/script/rotate.sh
[root@myserver ]#systemctl restart crond
Se hai necessità particolari sulla frequenza di esecuzione del cron, puoi consultare la documentazione crond configuration.
Qualsiasi suggerimento è bene accetto nei commenti se qualcuno avesse idee diverse al posto dello script bash per rotare i file.
Nel mio blog sono presenti tanti altri script, come questi