• Come fare il backup attivo con LFTP

    Dove sono applicabili soltanto i backup tradizionali, come ad esempio il trasferimento file da Linux a Windows, o da Linux a un NAS, ci viene in aiuto LFTP, un programma disponibile dalla maggioranza delle distribuzioni Linux.


    Su Ubuntu si installa con un semplice:

    apt-get install lftp

    Sulla macchina destinazione (Windows) invece è sufficiente impostare un account FTP. Per chi non avesse un server FTP installato, può utilizzare FileZilla Server, affidabile, semplice e completo.

    L'impostazione di lftp è abbastanza semplice se ci si limita alle impostazioni base e per un mirroring di una o più cartelle. Per ogni realtà informatica è possibile creare script distinti, che determinano come lftp si connette e come invia o scambia i file.

    Un tipico esempio potrebbe essere questo script, che invia alla macchina remota tutti i file non ancora presenti o aggiornati ed elimina i file non più disponibili, e sincronizza così le cartelle:

    Codice:
    # debug
    #debug 10
    #debug 5
    #debug 1
    
    # login
    open 1.2.3.4
    user nome_utente password
    
    # mirror
    mirror -n --reverse --dereference --delete --delete-first --no-perms --no-umask -X *.log /cartella_locale /cartella_remota
    
    exit
    Se si salva questo script in /cartella/nome_script, si chiama poi da /etc/crontab in questo modo (avvio tutti i giorni alle ore 6.00):

    Codice:
    0      6       *       *       *       root    /usr/bin/lftp -f /cartella/nome_script>/dev/null 2>&1
    Nella sezione commentata login, il comando open stabilisce una nuova connessione al server remoto (ad esempio Windows). Il nome del server può essere un IP, un nome semplice, come ad esempio ftp.domain.tld, oppure un protocollo, come ad esempio ftp://ftp.domain.tld o sftp://ftp.domain.tld.

    Il comando user specifica il nome utente e password sulla macchina remota, che necessariamente deve avere accesso all'area dove si desidera fare il backup e dove prelevare aventuali file per un disaster recovery, ossia recupero file intatti.

    Il comando open può anche accomodare il secondo, user, con una serie di parametri. Personalmente preferisco la notazione esplicita, perché non devo ricordare la sintassi, in quanto si autocommenta:

    Codice:
    open -u 'nome_utente',password -p 21 1.2.3.4
    Il comando mirror effettua il trasferimento dei file. Particolarmente utili sono le seguenti opzioni:
    • -n: copia soltanto i file più recenti
    • --reverse: copia i file da locale a remoto
    • --dereference: invia i file contenuti in link simbolici come se fossero file nella cartella
    • --delete: elimina i file non più esistenti dalla cartella remota
    • --delete-first: elimina prima i file, poi scrivi file nuovo; utile per i sistemi con spazio ridotto
    • --no-perms: non copiare i permessi
    • --no-umask: non impostare gli attributi di file
    • -X: escludi singoli o gruppi di file, opzione ripetibile

    Infine, il comando exit termina la connessione ed esce dallo script.

    Dopo l'impostazione dello script conviene fare una prova manuale. Per un controllo più accurato si abilita la modalità debug, togliendo a uno dei comandi debug il commento, ad esempio:

    debug 5

    Poi si lancia lftp dal prompt:

    lftp -f nostro_script

    lftp tenta di connettersi alla macchina remota e scambiare le informazioni al fine di determinare quali file inviare o eliminare. Dalle informazioni aggiunti possiamo vedere se tutto funziona a dovere, e dove ci sono errori, ripararli.

    Nota importante: Conviene in ogni caso partire per la prima volta da una sandbox, ossia da cartelle locali e remoti dove non è possibile fare danni. Soltanto quando siamo sicuri che tutto funziona come programmato, passiamo alle cartelle in produzione!