venerdì 17 luglio 2009

Sincronizzare cartelle con Rsync

Rsync è uno strumento realmente utile quando sia ha l'esigenza di sincronizzare il contenuto di due cartelle. Con rsync solo i nuovi file e quelli che sono stati modificati vengono trasferiti dalla cartella sorgente a quella di destinazione, inoltre si può scegliere di cancellare dalla cartella di destinazione i file che non sono più presenti nella cartella sorgente.

Se non è già presente si può installare da Gestore pacchetti Synaptic (pacchetto 'rsync').

Le opzioni disponibili sono molte, ecco un esempio che ho utilizzato in una situazione molto semplice: allineare la cartella Documenti nella mia 'home' con una di un hard disk esterno.

rsync -rlptv --progress --delete --exclude=*~ /home/nome_utente/Documenti/ /media/LaCie/documenti

Le opzioni hanno questo significato:

  • r (o --recursive), le sottocartelle della cartella sorgente ed i file in esse contenuti sono inclusi ricorsivamente: in pratica si sincronizza tutto l'albero a partire dalla cartella sorgente;
  • l (o --links), i symlink sono copiati come tali. Con un altra opzione (-L o --copy-links) sarebbero copiati la cartella o il file a cui il symlink è collegato;
  • p (o --perms) preserva i permessi;
  • t (o --times) preserva le date di modifica;
  • v (o --verbose) per ricevere messaggi più dettagliati;
  • --progress mostra messaggi che indicano il progresso dell'operazione di sincronizzazione;
  • --delete i file presenti nella cartella destinazione, ma non in quella sorgente vengono cancellati;
  • --exclude serve a specificare un pattern di esclusione. Nell'esempio escludo i file di backup (es. nomefile.txt~) generati automaticamente quando si salva nell'editor un file su sè stesso.

'/home/nome_utente/Documenti/' indica che sarà copiato il contenuto della cartella sorgente Documenti, ma la cartella stessa non sarà ricreata sulla destinazione come sarebbe successo con '/home/nome_utente/Documenti'.

'/media/LaCie/documenti' è la cartella di destinazione.

Questo è un esempio semplice nel manuale ovviamente c'è molto di più. Con rsync è possibile anche sincronizzare una cartella sorgente con una di destinazione che si trova su un server remoto. A me questa cosa per ora non serve e non me la sono studiata.

2 commenti:

Piero ha detto...

Grazie. Stavo giusto trovando un sistema per effettuare un backup dei miei dati (sincronizzazione della cartella di destinazione). Ho trovato quest'articolo mlto utile. pbazz

Ubuntu-mania ha detto...

Di nulla :)