Autori: Fabio Di Matteo
Ultima revisione: 31/10/2009
L'idea di questo script nasce dall'esigenza di dover allestire un servizio di backup centralizzato, incrementale e sicuro all'interno di una rete medio-piccola. Evitando di dover installare soluzioni personalizzate in ogni macchina, avendo il vantaggio che ad ogni aggiornamento del software non si debbano aggiornare tutte le copie.
Possiamo quindi elencare estesamente gli obbiettivi dello script come segue :
Per quanto riguarda le macchine nella lan (dalle quali si fara' il backup) e' sufficiente che siano installati rsync e ssh , su Debian e Ubuntu con:
apt-get install ssh rsync
Sulla macchina in cui risiedera' lo script invece e' necessario anche installare l'interprete da riga di comando del PHP, in quanto scriveremo lo script in php e sshpass grazie al quale e' possibile passare la password per i servizi ssh in maniera non interattiva, ovvero e' possibile passare la password tramite linea di comando..
apt-get install php5-cli sshpass
Inoltre per comodita' useremo la classe database di Gianluca Giusti (http://www.urcanet.it/brdp/php_manual/html/brdp9.html#title56) per interagire con la nostra tabella mysql.
Tenuto conto dell'articolo Usare ssh in modo non interattivo possiamo certamente dire che l'istruzione principale e' la seguente:
sshpass -p <password> rsync –progress --log-file=<log-backup.log> -avz -e ssh <USER>@<IP>:<directory da backuppare> <directory locale che contiene i backup>
Il db mysql contiene una tabella chiamata tbl_personale
con i campi:
campi |
---|
so |
ip |
user |
rootpass |
ersukup
#!/usr/bin/php <?php include("db.php"); echo "----------------------------------------------\n"; echo "Ersukup 0.1 - Fabio Di Matteo pobfdm@gmail.com\n"; echo "----------------------------------------------\n"; echo "\n\n\n"; $db = new database; $db->connetti(); $sql="select * from tbl_personale where so like '%linux%' "; if ($db->esegui($sql)){ for($i=0; $i<$db->righe(); $i++){ $cmd="sshpass -p ".$db->leggi($i,"rootpass"). " rsync -L --delete --progress --log-file=/var/log/ersukup/". $db->leggi($i,"user").".log -avz -e ssh root@". $db->leggi($i,"ip").":/home/".$db->leggi($i,"user")."/Documenti /home/".$db->leggi($i,"user"); if ($db->leggi($i,"user")!="" && $db->leggi($i,"rootpass")!="") { echo "\n\n\n\nbackup utente --> ". $db->leggi($i,"user")." (". $db->leggi($i,"ip").")\n\n" ; system($cmd); } } echo "Procedura di backup terminata. \n"; }else{ //problemi nell'interrogare la base dati echo "Problemi nell'interrogare la base dati.\n"; } $db->disconnetti(); ?> ~ ~ ~ ~ ~ ~
Il nostro wiki installa solamente cookie tecnici necessari al funzionamento della piattaforma "Dokuwiki". Niente analitics, statistiche, tracciamenti o altro.