Semplice script bash per rotare file

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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.