25 Agosto 2018

Backup remoto in rete locale

Categorie: ,
Tags: , ,

Effettuare un backup remoto con rsync e NFS

Nell'articolo precedente abbiamo visto come creare una condivisione NFS, in questo articolo invece vediamo come fare un backup remoto.

Sono solito archiviare i miei file in un disco usb accessibile da tutti i dispositivi della mia rete domestica, il disco è collegato ad un Raspberry pi 2 che utilizzo come server. Anche in virtù del fatto che sul mio pc uso un disco ssd che si, lo rende più veloce ma allo stesso tempo, essendo un disco da 120 GB, non dispone di un grande spazio per l'archiviazione di file come la mia collezione musicale o le immagini, che possono raggiungere dimensioni considerevoli.

Inoltre se si possiedono più dispositivi, per esempio un pc desktop e un portatile, risulta più pratico tenere i file in un unico posto e renderlo accessibile nella rete domestica.

In ambiente Linux uno dei sistemi maggiormente utilizzati per la condivisione di dati in una rete di computer è rappresentato dal filesystem distribuito NFS (Network File System), ed è proprio NFS in concomitanza con rsync, che ho deciso di utilizzare per effettuare il backup nella mia rete locale.

Lo script che propongo in questo post effettua un backup di una cartella wallpapers presente nel mio dropbox su un disco esterno USB collegato al Raspberry Pi 2 che utilizzo come server. 

Lo script di per se non è niente di complicato, tuttavia per funzionare occorre che ci sia una condivisione NFS, se non hai NFS installato e configurato nel tuo sistema puoi farlo seguendo le istruzioni nel post Condivisione dei dati con NFS (Network File System)

Inoltre in questo script viene incluso un file utils.sh che è necessario per il funzionamento dello script stesso. Si tratta di un file che contiene alcune utili funzioni e consente di scrivere più agevolmente gli scripts, in quanto permette di evitare di riscrivere più volte lo stesso codice. Puoi leggere le istruzioni e scaricarlo dal post Utili utility Bash.

La cartella condivisa con NFS

Nello script viene utilizzato un link simbolico home/rodolfo/WDELEMENTS  che punta a /mnt/nfs/Immagini 

Quindi presumendo che si sia installato e configurato NFS e scaricato lo script utils.sh, passiamo ora allo script di backup vedendone i passaggi principali.

#!/bin/bash
#includo un file esterno con alcune funzioni utili
source /usr/local/bin/utils.sh

La prima istruzione include il file utils.sh che io ho posizionato in /usr/local/bin (ma potete metterlo dove vi pare, ovviamente dovrete modificare il percorso anche nello script).

IMAGEFOLDER=/home/rodolfo/WDELEMENTS
DESTINATIONFOLDER=/home/rodolfo/WDELEMENTS
WALLPAPERSFOLDER=/home/rodolfo/Dropbox/Rodolfo/immagini/wallpapers

qui vengono impostate alcune variabili, rispettivamente:

  • IMAGEFOLDER - la cartella dove verranno salvati i file, si tratta di un link simbolico che punta alla cartella condivisa con NFS nel disco USB esterno collegato al Raspberry Pi 2 (in /mnt/WDELEMENTS/media/immagini/)
  • DESTINATIONFOLDER - la cartella di destinazione del mio backup (che coincide con imagefolder ma potrebbe essere anche una sottocartella di imagefolder).
  • WALLPAPERSFOLDER - la cartella dove risiedono le immagini di cui voglio fare il backup.
if [[ $(findmnt -M "$IMAGEFOLDER") ]]; then
    e_success "La cartella immagini è montata"
else
    e_error "La cartella immagini non è montata"
    e_warning "Per effettuare il backup devi prima montare la cartella Immagini"
fi

qui faccio un controllo per verificare se la cartella Immagini (dove verrano salvati i file) è montata.

if [[ -d $DESTINATIONFOLDER ]]; then
    e_success "La cartella di destinazione esiste"
else
    e_error "La cartella di destinazione $DESTINATIONFOLDER non esiste"
    e_warning "Non è stata trovata la cartella di destinazione $DESTINATIONFOLDER"
    e_error "Esco."
    exit 0
fi

qui invece controllo se la cartella di destinazione esiste.

seek_confirmation "Vuoi fare il backup? --> "
if is_confirmed; then
    rsync -avrz --delete --force $WALLPAPERSFOLDER $DESTINATIONFOLDER
    
    echo
    e_success "Backup completato"
    echo
else
    echo
    e_warning "Backup annullato"
    e_error "Esco."
    exit 0
fi

infine chiedo conferma per procedere con il backup con rsync, che è incrementale per cui, la prima volta che viene eseguito lo script sincronizza tutti i file, le volte successive aggiungerà solo i file nuovi.

qui lo script completo. Ricordati di modificare i percorsi delle cartelle inserendo quelli corretti per te.

Lascia un commento

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

shopping-cart linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram