versione 1.03, 1 settembre 2022
![]() | ![]() |
Michele Liberi mail: mliberi@gmail.com cell: 3485211456 |
Il comando comm7 è uno strumento potente e sofisticato per la sincronizzazione di files, directories e link simbolici.
L'analisi ed eventuale sincronizzazione avviene tra N sistemi, in modalità master/slave oppure in modalità paritetica.
L'insieme dei pathnames da analizzare viene determinato, in maniera molto flessibile con il parametro finder che contiene un comando di shell che genera una lista di pathnames, ad esempio "find .".
Per ogni coppia di sistemi A e B da analizzare, comm7 determina gli elementi:
Ai fini dell'analisi due files sono considerati identici se hanno la stessa data di ultima modifica (mtime) e la stessa dimensione. Impostando il parametro crc=1 è possibile determinare se due files sono identici in base al calcolo di un checksum; comm7 analizza parimenti anche i metadati associati ai pathname, quindi due files vengono identificati come non identici anche se è diverso il proprietario, il gruppo, i permessi di accesso.
Il parametro fat=1 permette di confrontare correttamente le date di ultima modifica quando i files risiedono su filesystem di tipo FAT. Su tali sistemi infatti la data di ultima modifica viene salvata scartando l'ultimo bit, quello meno significativo, quindi due timestamp sono considerati uguali anche se differiscono di un secondo. Inoltre in questa modalità vengono ignorati i metadati (proprietario, gruppo, permessi di accesso, ACL) ed il confronto dei nomi dei files viene fatta senza distinzione tra maiuscole e minuscole.
Una volta analizzata la situazione ed identificati gli insiemi è possibile attivare delle azioni. Ad esempio con l'opzione -master:
Con l'opzione -mirror:
L'analisi e successiva eventuale sincronizzazione avvengono sia per i dati, basandosi sulla dimensione e data di ultima modifica del file, sia per i metadati (utente, gruppo, permessi di accesso, ACL, etc...).
nome | tipo | significato | esempio |
---|---|---|---|
H | array | nome o indirizzo IP dei sistemi coinvolti | H=(mliberi ml tcm) |
D | array | directory di riferimento, in essa verrà eseguito il comando finder | D=(/woha /bck/woha) |
pre | array | comando da lanciare per verificare se ci sono le condizioni per effettuare il check, in caso di return code diverso da zero l'intero processo di analisi e sincronizzazione si interrompe | pre[0]='test -f semaforo.txt' |
finder | string | comando da lanciare per determinare gli elementi presenti | ls -f |grep ^00 |
uxgref | oneof | determina come vengono gestiti il proprietario ed il gruppo dei files che vengono copiati:
| uxgref=byname |
mode | oneof | determina la modalità di esecuzione
| mode='*' cp12=1 cp21=1 rm1=0 rm2=0 put=0 get=0 upd12=0 upd21=0 |
crc | boolean | per capire se due elementi sono uguali o diversi si utilizza la dimensione e la data di ultima modifica, impostando crc=1 si forza il calcolo di un checksum come ulteriore sicurezza | crc=0 |
fat | boolean | quando i files risiedono in tutto o in parte su filesystem di tipo FAT è necessario impostare questo parametro in modo che:
| fat=0 |
comp | boolean | specifica se procedere o no con il confronto dei files comuni (3c) per determinare i sottoinsiemi (3i, 3d, 3n, 3o) | comp=1 |
verbose | boolean | specifica se visualizzare in fase di analisi il dettaglio degli elementi trovati in ogni insieme | verbose=1 |
Per ulteriori informazioni sulle opzioni e i parametri disponibili lanciare il comando comm7 -h.