====== Unison ====== ===== Contenuto della directory .unison ===== Per tenere traccia dello stato delle due //repliche// (i due repository da tenere sincronizzati), Unison crea dei file nella directory **$HOME/.unison/**. In particolare per ogni coppia di //roots// (sorgente e destinazione) vengono creati due file **%%ar%%** e **%%fp%%**. La coppia di file **%%ar%%** e **%%fp%%** viene creata su entrambi gli host, ma con diverso hash. Ogni host fa riferimento a se stesso come //root//, ma indica la stessa coppia sorgente => destinazione. === File ar* === I file **ar** sono **Unison archive format 22**, contengono i metadati di tutti i file presenti nelle repliche (timestamp, inode, hash, ecc.). I metadati verranno usati per determinare se un file è cambiato e deve essere sincronizzato. I file sono di tipo binario, ma le prime tre righe sono leggibili come testo e contengono informazioni del tipo: Unison archive format 22 Archive for root //host1//data/media/music synchronizing ro //host1//data/media/music, //host2//home/media/musica Written at 2021-09-13 at 9:45:20 - case sensitive mode Le dimensioni di questi file dipendono dalla quantità di file presenti nelle repliche, ad esempio per circa 46000 file la dimensione è 3.6 Mb. === File fp* === I file **fp** sono **Unison fingerprint cache format 2**. Anche questi file hanno un contenuto binario, ma non è chiaro cosa contengono. Sembra che la loro dimensione non sia direttamente proporzionale al numero dei file presenti nelle repliche. ===== Il problema del re-hashing ===== Alla prima esecuzione di una sincronizzazione, Unison deve fare la scansione di tutti i file in entrambe le repliche per calcolare l'hash (checksum) di tutti i file. Si tratta di una operazione molto onerosa che può richiedere diverse ore; ad esempio con dischi collegati via USB e CPU non troppo performanti la scansione di 800 Gb di file può richiedere fino a dieci ore. In alcune circostanze Unison può essere indotto a ricalcolare tutti gli hash dei file anche se non ce ne sarebbe bisogno. Queste sono alcune delle condizioni: * Viene cambiato il percorso di una delle due //root//. * Viene cambiato il disco di una delle due //root//. Non è chiaro se Unison tiene traccia di qualche identificativo del device, oppure è il cambio di inode di ogni file a far scattare il re-hash dei file. Purtroppo al momento non si conoscono metodi per aggiornare i file di configurazione ar e fp in modo da non richiedere il re-hashing dei file. Vedere in proposito questo thread: **[[https://marc.info/?l=unison-users&m=129499672501053|RE: [unison-users] Re: Unison Archive files]]**.