Fare un backup incrementale remoto con rsync

Se vuoi fare un backup dei tuoi file e cartelle su un server remoto o un pc della tua rete domestica puoi usare rsync: un programma solido in linea di comando, che consuma poche risorse. Alla prima sincronizzazione caricherà tutti i file/cartelle; le volte successive si limiterà a togliere/aggiungere/sostituire al backup remoto le modifiche avvenute nella cartella di partenza del tuo computer. In altre parole, avrai un backup incrementale, come la Time Machine degli utenti Mac.

Ecco il comando, che poi spiegheremo nel dettaglio:

rsync -Phaz -e 'ssh -p numero_porta' --delete SORGENTE DESTINAZIONE

La SORGENTE è la cartella da cui partono i dati, che verranno copiati nella cartelle di DESTINAZIONE. Teoricamente entrambe possono trovarsi sul medesimo computer, ma qui occuperemo solo della sincronizzazione del vostro pc:

  • con un altro computer all'interno della medesima LAN di casa o dell'ufficio (mio pc -> 192.168.x.x)
  • con un vostro account su un server esterno raggiungibile con un IP pubblico o un nome di dominio (mio pc -> ilmiosito.it).

Più precisamente, il comando completo è questo:

rsync -Phaz -e 'ssh -p numero_porta' --delete /path/cartella_locale/  nomeutente@indirizzo:/path/cartella_remota/

Ora lo spieghiamo passo a passo:

  • rsync: è il comando di sincronizzazione.

  • -Phaz: sono le opzioni. P=mostra progressione; h=human readable; a=archivia; z=comprimi.

  • -e 'ssh -p numero_porta': si usa se la porta di accesso non è standard. In linea di massima, e salvo configurazioni particolari: se vi collegate a un pc della voste interna, è probabile che la sua porta di accesso per le connessioni ssh/rsync sia quella di default, cioè la 22; in questo caso potete omettere completamente questa parte del comando. Se vi collegate a un server remoto è probabile che usi una porta inabituale per ssh/rsync; in questo caso chiedete all'amministratore del server qual è il numero della porta e inseritela nel comando (ad esempio: -e 'ssh -p 2345' se la porta usata è la 2345) .

  • --delete: fa sì che rsync cancelli in remoto file e cartelle cancellati nel computer locale.

  • /path/cartella_locale/: è il percorso assoluto della cartella locale da sincronizzare. Per esempio /home/mario/Documenti su Linux o /Users/mario/Documents su macOS. Il modo più semplice di conoscere il path esatto della vostra cartella è aprire un terminale in essa e digitare pwd (print working directory); in alternativa, alcuni file manager mostrano il percorso della cartella in cui vi trovate, o nella barra degli indirizzi o con clic destro > Proprietà.
    IMPORTANTE: quando usate rsync non dimenticate mai lo slash / finale dopo l'ultima cartella del path (ad esempio: ...Documenti/) e state attenti a maiuscole/minuscole dei nomi di file e cartelle (ad esempio: Documenti ≠ documenti).

  • nomeutente@indirizzo:: se vi collegate a un altro pc, che sia nella rete locale o nel web, dovete sempre fornire un nome utente e un indirizzo. L'indirizzo può essere l'IP dell'altro computer nella rete domestica/professionale, o un nome di dominio se ci si collega a un server remoto. Per esempio: elena@192.168.1.46: se ti connetti al pc di elena nella tua LAN; bulbasaur@ilmiosito.com: se ti colleghi all'account di bulbasaur sul server col nome di dominio ilmiosito.com

  • /path/cartella_remota/: è il percorso assoluto della cartella remota in cui andrete a fare il backup incrementale dei vostri dati.
    Vi consiglio di creare una cartella apposita, nominandola ad esempio _RSYNC, nella cartella radice del server remoto. A tal fine loggatevi dal vostro provider, avviate cPanel e create la cartella. Poi, per conoscere il percorso (path) corretto di questa cartella, guardate nella colonna sinistra di cPanel: in alto vedrete l'icona di una casetta accanto alla quale è scritto il path in parentesi, ad esempio /home/bulbasaur: questa è la radice del percorso remoto. Aggiungete al path il nome della cartella da voi creata e avete il percorso completo della cartella remota, ad esempio: /home/bulbasaur/_RSYNC/

In base a quanto scritto sopra, ecco ad esempio il comando per sincronizzare la cartella locale dell'utente "mario" su computer Linux, con la cartella _RSYNC dell'utente "bulbasaur" presso il server remoto ilmiosito.com, accessibile dalla porta 2345 :

rsync -Phaz -e 'ssh -p 2345' --delete /home/mario/Documenti/ bulbasaur@ilmiosito.com:/home/bulbasaur/_RSYNC/

Lo stesso comando vale se il computer di destinazione è nella vostra LAN domestica e usate il suo IP interno:

rsync -Phaz -e 'ssh -p 2345' --delete /home/mario/Documenti/ elena@192.168.1.46:/home/bulbasaur/Documenti/

ATTENZIONE: in ogni caso, oltre a non dimenticare lo slash / finale dell'ultima cartella del path, badate bene di inserire i due punti : dopo il nome di dominio.