Introduzione
Rsync è una potente utility a riga di comando per sistemi Unix/Linux, che consente di sincronizzare e trasferire file tra due sistemi diversi. Una delle caratteristiche principali di Rsync è la possibilità di escludere file e directory dal processo di sincronizzazione. Questa funzione può essere incredibilmente utile per una varietà di attività, come backup, sincronizzazione della base di codice e gestione dei dati.
Escludere file e directory con rsync
Per escludere file o cartelle specifici quando si utilizza il comando rsync
, è possibile utilizzare l'opzione --exclude
o -X
. L'opzione --exclude
accetta un elenco di pattern (espressioni regolari) che corrispondono ai file o alle cartelle da escludere, separati da virgole.
Esempio:
rsync -av --exclude=pattern1 --exclude=pattern2 source/ destination/
In questo caso, tutti i file o cartelle nel percorso sorgente che corrispondono a "pattern1" o "pattern2" verranno esclusi dalla sincronizzazione.
rsync -av --exclude='pattern1|pattern2' source/ destination/
in questo caso tutti i file o cartelle che matchano pattern1 or pattern2 saranno esclusi.
Inoltre è possibile anche utilizzare un file di testo per specificare le regole di esclusione, utilizzando l'opzione --exclude-from
. Il file dovrebbe contenere un elenco di pattern, uno per riga.
rsync -av --exclude-from=exclude-list.txt source/ destination/
Questo comando utilizzerà i pattern specificati nel file "exclude-list.txt" per escludere i file durante la sincronizzazione.
Se si desidera escludere tutti i file con estensione ".log" , è possibile utilizzare il seguente comando:
rsync -av --exclude='*.log' source/ destination/
Escludere tutto ciò che è scritto nel file di testo
Un altro modo per escludere file e directory è utilizzare un file separato chiamato "escludi file". Questo file contiene un elenco di modelli esclusi, uno per riga, e Rsync leggerà il file e applicherà tutti i modelli specificati in esso.
rsync -av --exclude-from='exclude.txt' source/ destination/
Qui il file exclude.txt contenente tutti i modelli di file o directory da escludere
I modelli nel file exclude possono essere un glob di shell (ad esempio, *.log) o un'espressione regolare (se l'opzione --exclude-from
è sostituita con --exclude-from-file
).
Includere file specifici ed escludi altri
È anche possibile includere ed escludere file contemporaneamente utilizzando l'opzione --include
seguita dal nome del file o della directory che si desidera includere e l'opzione --exclude
per tutto il resto. Ad esempio, il seguente comando includerà tutti i file con estensione ".txt" ed escluderà tutti gli altri file:
rsync -av --include='*.txt' --exclude='*' source/ destination/
È importante notare che l'ordine delle opzioni --include
e --exclude
è significativo. Se vuoi includere un file o una directory specifici e poi escluderne altri, l'opzione --include
dovrebbe essere la prima.
Escludere file di grandi dimensioni
Un'altra considerazione quando si utilizza Rsync per escludere file e directory è la prestazione. L'esclusione di file o directory di grandi dimensioni può far risparmiare una notevole quantità di tempo e spazio durante il trasferimento o la sincronizzazione dei dati. Ad esempio, se stai eseguendo un backup, potresti voler escludere file multimediali di grandi dimensioni o backup di backup.
rsync --ignore-existing --size-range='+100M' -av source/ destination/
Ci sono anche molte altre opzioni disponibili con rsync che possono essere utilizzate per perfezionare ulteriormente il processo di trasferimento dei file. Ad esempio, è possibile utilizzare l'opzione --exclude
per escludere determinati file o directory dal trasferimento o l'opzione --dry-run
per vedere quali file verrebbero copiati senza eseguire effettivamente il trasferimento.
Conclusione
Nel complesso, la possibilità di escludere file e directory con Rsync è una funzionalità potente ed essenziale che può migliorare notevolmente l'efficienza, l'accuratezza e la sicurezza delle attività di backup, sincronizzazione e gestione dei dati. Utilizzando i metodi e le migliori pratiche discussi in questo articolo, puoi sfruttare appieno questa funzionalità e assicurarti che i tuoi comandi Rsync funzionino nel modo più efficiente ed efficace possibile.