Post Meta
-
Indietro
-
gennaio 5, 2008 -
Appunti, Linux, Programmi -
6 Comments
-
Letto 2.710 volte
-
Comments Feed -
Stampa questo Post
5th
GEN
Gestire le repliche con linux, ovvero Unison
Posted by deepred | Filed under Appunti, Linux, Programmi
Questo articolo è stato pubblicato 2 anni 7 mesi 29 giorni giorni fa quindi alcuni contenuti o informazioni presenti in esso potrebbero non essere più validi. Questo sito non è responsabile per eventuali errori causati da questo problema.Lo scenario di questo HowTo è il seguente:
- avete più repliche di una stessa directory, per esempio una sul vostro portatile e una sul vostro computer fisso, oppure sull’hard disk del vostro computer e su una pendrive;
- avete aggiunto o modificato o cancellato file su entrambi le repliche;
- avete intenzione di sincronizzare nuovamente le repliche in modo che ci siano gli stessi file su entrambi.
Se non vi riconoscete in questo scenario potete fermarvi a leggere, altrimenti quello che fa per voi è:
Unison è un tool per la sincronizzazione di file per sistemi Unix e Windows. Esso permette che due repliche di una collezione di file e directory siano memorizzate su host differenti (o differenti dischi sullo stesso host), modificate separatamente e poi aggiornate propagando i cambi di ciascuna replica all’altra.
Ma la cosa più interessante è che diversamente dal semplice mirroring o dalle utility di backup, come rsync (vedi “Backup incrementale in linux” per esempio) quest’applicazione può gestire aggiornamenti ad entrambi le repliche: gli aggiornamenti che non generano conflitti sono propagati automaticamente; gli aggiornamenti in conflitto sono rilevati e mostrati. E, allo stesso modo, differentemente dai sistemi di versioning (CVS o SVN, per esempio), non si base su un unico archivio, ma permette di avere più copie delle stesse informazioni.
Ma analizziamo più in dettaglio come funziona Unison: il modo più semplice è quello di creare un profilo per ciascuna collezione di file che si intende gestire in maniera sincrona. Ogni profilo consiste semplicemente di un file .prf da inserire nella directory .unison presente nella propia home. Il contenuto del file dovrà apparire come il seguente:
root = /path/to/nome_target1
root = ssh://remotehostname/path/to/nome_target2
path = nome_path1
path = nome_path2
ignore = Path nome_directory
ignore = Name nome_file
ignore = Regex regular_expression
#where to put backup
backupdir = .unison/nome_directory
backup = Name *
maxbackups = 2
#where to log activities
logfile = .unison/log_file.txt
#don't ask silly questions
auto = true
batch = true
Le direttive root servono per specificare quali sono le due directory di cui bisogna eseguire la sincronizzazione: si noti come è possibile agevolmente accedere ad una replica remota tramite ssh. Ciò ovviamente comporta che il sistema remoto sia stato abilitato a fare da server ssh, oltre che sia stato fornito di una equivalente copia dell’applicazione unison. Se il sistema remoto non può essere abilitato come server ssh, sarà possibile trasmettere i file su una connessione insicura su socket. Per farlo bisognerà avviare sulla macchina remota un demone unison attraverso il comando
unison -socket NNNN
dove NNNN indica il numero di porta su cui il demone dovrà mettersi in ascolto. Una volta attivato il demone, ci si potrà riferire nel nostro file .prf come
root = socket://remotehostname:NNNN/path/to/nome_target2
Le direttive path servono per specificare quali file o directory copiare all’interno della root indicata. Se nessuna direttiva path viene specificata di default saranno gestiti tutti i file e directory presenti all’interno della root.
Le direttive ignore invece servono per indicare specifici file (se indicati con Name) o intere directory con il loro contenuto (se indicati con Path) o collezioni di file (se indicati con Regex) che invece si deve ignorare durante la fase di sincronizzazione: per esempio per indicare ad Unison di non sincronizzare i file nascosti basterà aggiungere le seguenti linee:
ignore = Path .*
ignore = Name .*
Le direttive successive sono invece utilizzate per gestire il backup dei file sincronizzati (dove fare il backup, quali file backupare e quanti backup di uno stesso file conservare) , per il logging delle operazioni e per far sì che la sincronizzazione avvenga in maniera automatica, senza che venga chiesta conferma all’utente delle operazioni da eseguire.
Dopo aver creato tale file sarà molto semplice eseguire la sincronizzazione, semplicemente lanciando:
unison nomefile.prf
La prima esecuzione sarà più lenta, in quanto sarà necessario costruire gli archivi su entrambi gli host. Inoltre durante la prima sincronizzazione potrebbero essere rilevati un gran numero di conflitti derivanti da differenti politiche di permessi ai file adottate. Risolti tali conflitti le successive esecuzioni saranno semplici e veloci.
Per maggiori informazioni su Unison, vi rimando alla homepage del progetto.
Tags: backup > cvs > Linux > repliche > rsync > sincronizzazione > socket > ssh > svn > unison



P-chan dire che ti amo è dire poco!
mah!
poi ti lamenti che vieni censurato!
l’inutilità dei tuoi commenti è disarmante…seriamente! ci sono altri posti/blog dove si scherza e si lasciano commenti scemi.
questo no.
ma sugli altri vengo censurato!
ciao, sono in botta per questo errore:
———–
C:\unison>”Unison-2.27.24 Gtk+.exe”
Fatal error: exception Util.Fatal(“Cannot find canonical name of %USERPROFILE%/.
unison: unable to cd either to it
(%USERPROFILE%\.unison: No such file or directory)
or to its parent %USERPROFILE%
(%USERPROFILE%: No such file or directory)”)
———–
inutili i tentativi di
set USERPROFILE=”C:\Documents and Settings\miahome”
hai info?
caro giuserpe a quanto mi sembra sei sotto windows e purtroppo non posso aiutarti in alcun modo non conoscendo questo sistema operativo.
Ho appena installato la versione unison-2.27 e per farlo funzionare con ssh bisogna settare la versione con eselect in questo modo:
eselect unison list
mostrerà tutte le versioni disponibili con i relativi numeri, poi:
eselect unison set 1
dove 1 è il numero della versione desiderata.
Questa operazione bisogna farla su entrambe le macchine.