Rsync è uno strumento di trasferimento di file open-source molto potente e flessibile disponibile per Unix e sistemi simili a Unix come Linux, Mac e Windows (attraverso Cygwin o WSL). Rsync viene utilizzato principalmente per copiare e sincronizzare file e directory remotamente e localmente.
Occasionalmente, si potrebbe desiderare di escludere alcune directory dal processo di sincronizzazione. Il comando Rsync offre un’opzione per escludere file o directory durante la sincronizzazione dei dati.
Prendiamo un esempio. Supponiamo di avere un file di directory di questo tipo:
```
/directory/
|—-subdir1/
|—-subdir2/
|—-file1
|—-file2
```
Se desideri sincronizzare tutto in `/directory/`, ma escludere `subdir1` e `subdir2`, il comando sarebbe il seguente:
```
rsync -av —exclude=‘subdir1’ —exclude=‘subdir2’ /directory/ /destination/
```
In questo comando, `-av` è un set combinato di opzioni. `-a` sta per ‘archive’, che è una diretta combinazione di altre opzioni per preservare i dettagli del file come simboli, link, permessi e tempi. `-v` sta per ‘verbose’, che mostra i dettagli del processo di trasferimento.
`—exclude` è l’opzione che fa il trucco. Puoi usarlo per escludere file o directory specifiche. Nota che puoi utilizzare l’opzione `—exclude` più volte per escludere più file o directory.
Una alternativa per escludere più directory o file consiste nell’utilizzare un file di esclusione. Ad esempio, potresti creare un file `exclude.txt` e includere i nomi dei file o delle directory che desideri escludere, uno per riga:
```
subdir1
subdir2
```
Quindi, potresti fare riferimento a questo file nel tuo comando rsync:
```
rsync -av —exclude-from=‘exclude.txt’ /directory/ /destination/
```
Risorse di riferimento:
- Rsync manuale ufficiale (https://man7.org/linux/man-pages/man1/rsync.1.html)
- Guida di Digital Ocean all’uso di rsync per il trasferimento di file e la sincronizzazione dei dati (https://www.digitalocean.com/community/tutorials/how-to-use-rsync-to-sync-local-and-remote-directories-on-a-vps)
- Unix & Linux Stack Exchange (https://unix.stackexchange.com/questions/45920/rsync-filter-replace-operator)