Rsnapshot Backup a riga di comando

Rsnapshot Backup a riga di comando

Rsnapshot Backup a riga di comando

#Rsnapshot Backup incrementali a riga di comando
rsnapshot e’ un utile software per effettuare backup incrementali, grazie all’utilizzo di rsync ed il tutto da riga di comando.

RSNAPSHOT
I software in commercio, in grado di effettuare backup incrementali del nostro sistema operativo oppure delle nostre directory preferite, sono molti e vari. Ad esempio per effettuare backup incrementali su Linux possiamo utilizzare Back In Time, Kup, Duplicati, TimeShift ecc. Per gli utemti che utilizzano Server Linux ma che preferiscono operare da terminale esiste rsnapshot, progetto open source che ci consente di effettuare backup incrementali grazie al tool rsync.

Attraverso rsnapshot possiamo effettuare backup incrementali di filesystem locali e remoti con numerose ed utili funzionalità.

Installare rsnapshot in Debian/Ubuntu e derivate è semplicissimo basta digitare da terminale:

sudo apt-get install rsnapshot

una volta installato dovremo operare sul file di configurazione in /etc/rsnapshot.conf
Configurazione

Per configurare rsnapshot è necessario aprire il file /etc/rsnapshot.conf con un editor di testo con i privilegi di amministrazione.

Ogni riga del file di configurazione dovrà contenere elementi separati dal carattere Tab e non dovrà contenere spazi. Non è quindi consigliabile fare il copia ed incolla delle seguenti istruzioni:

La seguente direttiva specifica la cartella di destinazione dei backup:

rsnapshot_root   /media/backup/
no_create_root 1

Si supponga di effettuare il backup tutti i giorni e di voler conservare le seguenti copie:

backup giornaliero dei 7 giorni precedenti;
backup settimanale delle 4 settimane precedenti;
backup mensile dei 6 mesi precedenti.

Le direttive di configurazione specifiche per una tale pianificazione sono le seguenti:

interval daily 7
interval weekly 4
interval monthly 6

Ora occorre definire le cartelle in cui fare i backup. Supponendo di voler conservare i file contenuti nelle cartelle /home /etc e /usr/local, nella cartella backup, aggiungere le seguenti istruzioni:

### BACKUP POINTS / SCRIPTS ###
backup /home/ snapshot/
backup /etc/  snapshot/
backup /usr/local/ snapshot/

Se invece si intende fare il backup di porzioni di file system di un sistema remoto, è possibile utilizzare il protocollo ssh, come nel seguente esempio:

backup root@example.com:/home/ snapshot/example.com/

Inoltre è possibile aggiungere direttive per l’inclusione e l’esclusione di file mediante il pattern matching così come specificato nella pagina di manuale di rsync. Suppondendo di voler escludere tutti i file .mp3 dal backup è sufficiente aggiungere la seguente direttiva:
exclude *.mp3
Infine, è possibile testare il file di configurazione digitando il seguente comando in una finestra del terminale:

sudo rsnapshot configtest
# Syntax OK

Automatizzare il backup
È possibile effettuare il backup di vari servizi mediante degli script controllati da rsnapshot.

Supponendo di voler effetttuare il backup di un database MySql, si realizzi uno script, da inserire in un nuovo file (es. /root/scripts/backupmysql.sh), simile al seguente:

mysqldump nomedatabase --user=root --password=passworddiroot > dump.sql

Dopo aver impostato il nome del database in «nomedatabse» e dopo aver impostato le opzioni «user» e «password» con il nome utente desiderato e la relativa password, è possibile richiamare lo script a partire dal file di configurazione sopra citato con un’istruzione simile alla seguente:

backup_script /root/scripts/backupmysql.sh snapshot/mysql/

rsnapshot lancerà lo script e sposterà nella cartella snapshot/mysql/ tutti i file di output prodotti nella cartella corrente.

Avvio del programma

rsnapshot deve essere avviato specificando il tipo di backup che si intende utilizzare. Questo corrisponde ad una delle direttive «interval» sopra descritte.

Per avviare il tipo di backup desiderato digitare il relativo comando in una finestra di terminale:

  • backup giornaliero:

    sudo rsnapshot daily
  • backup settimanale:
    sudo rsnapshot weekly
  • backup mensile:
    sudo rsnapshot monthly

     

*Aggiungendo l’opzione -t al comando è possibile verificarne il corretto funzionamento. Quello che segue è un esempio:

test :

# sudo rsnapshot -t hourly
echo 24319 > /var/run/rsnapshot.pid 
mkdir -m 0755 -p /media/backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
 /home/user/Immagini /media/backup/hourly.0/snapshot/ 
touch /media/backup/hourly.0/

Per maggiori informazioni su rsnapshot consiglio di consultare il Wiki ufficiale di Ubuntu.

Programmare pensando da Sistemista

 

linux-python-logoUna domanda che mi faccio da quando lavoro come sistemista e’ : “quale linguaggio di programmazione dovrei imparare ??“; e’ una domanda facile da formulare, che dovrebbe presupporre un’altrettanto facile risposta, ma ahimè non é così semplice, perlomeno non nel mio caso. Certo, i linguaggi di programmazione non mancano ed in giro ci sono dozzine di fonti di ottima qualità, ma penso comunque che per poter fornire un consiglio si dovrebbe sempre poter conoscere bene chi pone la domanda, ossia:

 

  • il suo background è scientifico o umanistico?
  • conosci bene l’inglese? (poiche’ la maggior parte delle fonti che consiglierei sono in inglese)
  • qual’è la tua età? ecc…!

…..insomma sono tanti i fattori da considerare e tutti hanno il loro peso da non sottovalutare.
In tempi non troppo lontani programmare significava conoscere il funzionamento dei computer a basso livello, comprendere a fondo la loro teoria e la loro struttura. Ma oggi è molto diverso. La gran parte dei programmatori (web 3.0) sono orientati alle applicazioni web/cloud ed i vecchi linguaggi macchina, tipo Assembly, li ha solo sentiti nominare a scuola. Questo anche perche’ i linguaggi ad alto livello (Java, Python…) ci permettono di concentrarci sulla soluzione dei problemi (gli algoritmi) delegando al compilatore la creazione delle istruzioni di basso livello.

Certo questa e’ una buona notizia ma, partendo da me stesso, se non fai il programmatore ed un linguaggio di programmazione ti serve per crearti scripts di ottimizzazione dei sistemi , non e’ pensabile dover conoscere 5/6 linguaggi diversi ecco perche’ in campo sistemistico resistono gli ottimi script Bash oppure l’ardimentoso Perl.

Se mi avete seguito e siete almeno parzialmente d’accordo con l’analisi fatta vi ricompenso con lo stesso consiglio che mi sono dato qualche settimana fa: Python.

Non mi voglio dilungare nella presentazione di questo linguaggio di cui credo abbiate per lo meno sentito nominare, le cui caratteristiche principali di funzionalita’, operabilita’, performance ecc… lo rendono tra i migliori da imparare anche per usi che esulano dalla programmazione allo stato puro; per altri dettagli od info potete leggere l’articolo dal seguente URL “caratteristiche del linguaggio Python“.

Quello che voglio segnalare e’ che molto spesso nella grande, a volte troppa, quantita’ di materiale recuperabile, spesso non si trova qualcosa adatto davvero alle nostre esigenze e che renda l’avvicinamento e la comprensione di un nuovo linguaggio facile, senza annoiare.

Pensare da Informatico e’ un libro che svolge bene il suo compito avvicinando i nuovi utenti a questo ottimo linguaggio in modo guidato e lineare proprio perche’ frutto delle esigenze di un’insegnante che voleva spiegare ai propri alunni un nuovo modo di programmare. Il libro originale e’ in inglese ma ne esiste un’ottima versione PDF tradotta in Italiano, questo e’ il link per il download PDF , mentre questo e’ il link per la versione WEB .

La versione originale “How to Think a Computer Scientist ” sottotitolo (Learning with Python) 3rd edizione e’ scritta da [Peter Wentworth, Jeffrey Elkner, Allen B. Downey, and Chris Meyers ] .

Buona lettura !