{"id":147,"date":"2007-12-26T17:08:26","date_gmt":"2007-12-26T16:08:26","guid":{"rendered":"http:\/\/freebox.blogdns.com\/index.php\/2007\/12\/26\/script-bash-per-backup-esperimenti\/"},"modified":"2007-12-26T17:08:26","modified_gmt":"2007-12-26T16:08:26","slug":"script-bash-per-backup-esperimenti","status":"publish","type":"post","link":"https:\/\/www.lorenzobraghetto.com\/index.php\/2007\/12\/26\/script-bash-per-backup-esperimenti\/","title":{"rendered":"Script bash per backup, esperimenti"},"content":{"rendered":"<p>Mai fatto backup per anni e adesso mi ritrovo ad essere quasi troppo scrupoloso \ud83d\ude42<\/p>\n<p>In realt\u00e0 sto continuando a pensare a cose di cui potrei fare un backup solo come scusa per divertirmi un p\u00f2 con degli script in bash \ud83d\ude00 .<\/p>\n<p>Grazie a cron posso programmarne l\u2019esecuzione, come ho scritto <a href=\"http:\/\/freebox.blogdns.com\/index.php\/2007\/12\/21\/backup-incrementali-con-rsync\/\" target=\"_blank\">nell\u2019ultimo post<\/a> per i semplici backup di file uso rsync il suo script \u00e8 molto semplice perch\u00e8 pensa a tutto lui, qui c\u2019\u00e8 lo <a href=\"http:\/\/freebox.blogdns.com\/rsync\">script<\/a>.<\/p>\n<p>\u201cSet -u\u201d 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\u2019intera \/home\/)<\/p>\n<p>Il comando rsync \u00e8 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\u2019output 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 \u00e8 cos\u00ec strano avercelo gi\u00e0 funzionante). L\u2019invio della e-mail serve quando si sta usando lo script con l\u2019ausilio di cron o simili, se l\u2019output pu\u00f2 essere visto direttamente da terminale l\u2019e-mail non serve.<\/p>\n<p>Ora viene il bello,<!--more--> ho creato uno script per fare backup di un database mysql; come base ho usato questo ma alla fine i cambiamenti sono stati profondi \ud83d\ude00 . Ho un solo database di cui fare backup quindi non occorre darne il nome come argomento, ecco lo script. (<strong>Script perso, dovr\u00f2 rifarlo. Grazie hard disk!)<\/strong><\/p>\n<p>Le variabili da impostare sono:<\/p>\n<p>* DIR Directory dove viene salvato il file di backup (Deve terminare con \u201c\/\u201d!)<br \/>\n* DATABASE Nome del database di cui fare il backup<br \/>\n* USER Username per accedere al database<br \/>\n* PASSW Password per accedere al database<br \/>\n* NAME Nome del file di backup<br \/>\n* OLD Nome del file del backup precedente<\/p>\n<p>Lo script prima controlla se esiste gi\u00e0 un file che inizia con la variabile $NAME, se c\u2019\u00e8 lo rinomina in $OLD e riporta l\u2019avvenuto 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 \u00e8 stato creato e non \u00e8 vuoto allora dice che \u00e8 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).<\/p>\n<p>Insomma ci si pu\u00f2 divertire non poco\u2026il linguaggio bash e in generale il terminale Linux (Unix?!) li reputo una cosa splendida che valgono da sole il prezzo del biglietto (che poi \u00e8 gratis lol ) con delle applicazioni ~\u221e (circa infinite \ud83d\ude09 )<\/p>\n<p>Ovviamente non sono un guru quindi probabilmente gli script sono perfezionabili, in particolare mi d\u00e0 un p\u00f2 fastidio quell\u2019 \u201cif [ -s $DIR$NAME*.sql ]\u201d e \u201cmv $DIR$NAME*.sql\u201d\u2026se esistono due o pi\u00f9 file che iniziano con lo stesso nome di $NOME non viene spostato niente, naturalmente lo script non creerebbe mai questa condizione.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mai fatto backup per anni e adesso mi ritrovo ad essere quasi troppo scrupoloso \ud83d\ude42 In realt\u00e0 sto continuando a pensare a cose di cui potrei fare un backup solo come scusa per divertirmi un p\u00f2 con degli script in bash \ud83d\ude00 . Grazie a cron posso programmarne l\u2019esecuzione, come ho scritto nell\u2019ultimo post per [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16,3,42,8,45],"tags":[50,792],"class_list":["post-147","post","type-post","status-publish","format-standard","hentry","category-informatica","category-gnulinux","category-smanettamenti","category-software","category-tips-and-tricks","tag-bash","tag-gnulinux"],"_links":{"self":[{"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/posts\/147","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/comments?post=147"}],"version-history":[{"count":0,"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/posts\/147\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/media?parent=147"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/categories?post=147"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lorenzobraghetto.com\/index.php\/wp-json\/wp\/v2\/tags?post=147"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}