Script bash per backup, esperimenti

Mai fatto backup per anni e adesso mi ritrovo ad essere quasi troppo scrupoloso 🙂

In realtà sto continuando a pensare a cose di cui potrei fare un backup solo come scusa per divertirmi un pò con degli script in bash 😀 .

Grazie a cron posso programmarne l’esecuzione, come ho scritto nell’ultimo post per i semplici backup di file uso rsync il suo script è molto semplice perchè pensa a tutto lui, qui c’è lo script.

“Set -u” serve a terminare il programma nel caso in cui non venga passato nessun argomento allo script (se il programma venisse eseguito senza argomenti rsync farebbe il backup dell’intera /home/)

Il comando rsync è facilmente intuibile e modificabile dopo aver letto la guida che ho segnalato nel vecchio post, il nome della home di cui fare il backup deve essere dato come primo argomento. L’output del backup viene salvato su un file temporaneo e infine inviato via e-mail (N.B. ovviamente bisogna avere in locale un server smtp funzionante, controllate inviandovi un e-mail non è così strano avercelo già funzionante). L’invio della e-mail serve quando si sta usando lo script con l’ausilio di cron o simili, se l’output può essere visto direttamente da terminale l’e-mail non serve.

Ora viene il bello, ho creato uno script per fare backup di un database mysql; come base ho usato questo ma alla fine i cambiamenti sono stati profondi 😀 . Ho un solo database di cui fare backup quindi non occorre darne il nome come argomento, ecco lo script. (Script perso, dovrò rifarlo. Grazie hard disk!)

Le variabili da impostare sono:

* DIR Directory dove viene salvato il file di backup (Deve terminare con “/”!)
* DATABASE Nome del database di cui fare il backup
* USER Username per accedere al database
* PASSW Password per accedere al database
* NAME Nome del file di backup
* OLD Nome del file del backup precedente

Lo script prima controlla se esiste già un file che inizia con la variabile $NAME, se c’è lo rinomina in $OLD e riporta l’avvenuto spostamento. Viene eseguito il backup vero e proprio e viene controllato che sia stato effettivamente creato il file in questione e che sia non vuoto (if [ -s nomefile ]). Se il file è stato creato e non è vuoto allora dice che è tutto ok, altrimenti ripoprta un errore. Tutti i messaggi alla fine vengono mandati via e-mail (stessa tecnica del file temporaneo e stesso discorso del server mail).

Insomma ci si può divertire non poco…il linguaggio bash e in generale il terminale Linux (Unix?!) li reputo una cosa splendida che valgono da sole il prezzo del biglietto (che poi è gratis lol ) con delle applicazioni ~∞ (circa infinite 😉 )

Ovviamente non sono un guru quindi probabilmente gli script sono perfezionabili, in particolare mi dà un pò fastidio quell’ “if [ -s $DIR$NAME*.sql ]” e “mv $DIR$NAME*.sql”…se esistono due o più file che iniziano con lo stesso nome di $NOME non viene spostato niente, naturalmente lo script non creerebbe mai questa condizione.

Una risposta a “Script bash per backup, esperimenti”

  1. […] ho scritto il post riguardo gli script di backup mi sono dimenticato di dire una […]

Lascia un commento