Guida Base a rsync per Linux

Introduzione

rsync (remote sync) è un potente strumento da riga di comando per Linux che permette di sincronizzare file e cartelle sia localmente che attraverso la rete. È particolarmente apprezzato per:

  • Efficienza: copia solo le differenze tra i file, risparmiando tempo e larghezza di banda
  • Affidabilità: verifica l'integrità dei file durante il trasferimento
  • Versatilità: può essere usato sia localmente che su connessioni remote
  • Sicurezza: supporta il trasferimento crittografato attraverso SSH
  • Compressione: può comprimere i dati durante il trasferimento

Sintassi Base

rsync [OPZIONI]... ORIGINE DESTINAZIONE

Opzioni Più Comuni

  • -a: modalità archivio (mantiene permessi, link simbolici, date, ecc.)
  • -v: mostra il progresso (verbose)
  • -z: comprime i dati durante il trasferimento
  • -P: mostra il progresso e permette di riprendere trasferimenti interrotti
  • -r: copia ricorsivamente (include sottocartelle)
  • --delete: rimuove i file nella destinazione che non esistono nell'origine

Esempi Base

1. Copiare una cartella localmente

rsync -av ~/Documenti/foto/ ~/Backup/foto/

Questo comando:

  • -a mantiene tutti gli attributi dei file
  • -v mostra il progresso
  • Copia tutti i file da ~/Documenti/foto/ a ~/Backup/foto/

2. Backup con Data

rsync -av ~/Documenti/ ~/Backup/$(date +%F)/

Questo comando:

  • Crea un backup datato (esempio: ~/Backup/2024-10-01/)
  • Utile per backup incrementali giornalieri

3. Sincronizzare con Compressione su Server Remoto

rsync -avz ~/Documenti/ utente@server.esempio.com:/home/utente/documenti/

Questo comando:

  • -z comprime i dati durante il trasferimento
  • Ideale per connessioni lente
  • Usa SSH per una connessione sicura

4. Riprendere un Trasferimento Interrotto

rsync -avP ~/Documenti/ ~/Backup/documenti/

Questo comando:

  • -P combina --partial (riprende trasferimenti interrotti) e --progress
  • Utile per file grandi e connessioni instabili

5. Sincronizzare Escludendo File

rsync -av --exclude '*.mp4' --exclude '*.tmp' ~/Progetti/ ~/Backup/progetti/

Questo comando:

  • Esclude file MP4 e temporanei
  • Puoi specificare multiple esclusioni

6. Sincronizzare con Eliminazione dei File non più presenti

rsync -av --delete ~/Sito/contenuti/ /var/www/html/

Questo comando:

  • Sincronizza il contenuto di ~/Sito/contenuti/ (SORGENTE) con /var/www/html/ (DESTINAZIONE)
  • Se un file esiste nella DESTINAZIONE ma non nella SORGENTE, verrà eliminato dalla DESTINAZIONE
  • L'opzione --delete agisce SOLO sulla cartella di destinazione
  • La sorgente non viene mai modificata
  • Utile per mantenere una copia esatta della sorgente nella destinazione

Esempio pratico di cosa fa --delete:

# Situazione iniziale:
SORGENTE                 DESTINAZIONE
~/Sito/contenuti/        /var/www/html/
  ├── index.html         ├── index.html
  ├── style.css          ├── style.css
  └── nuovo.html         ├── vecchio.html
                         └── temp.txt

# Dopo rsync -av --delete:
SORGENTE                 DESTINAZIONE
~/Sito/contenuti/        /var/www/html/
  ├── index.html         ├── index.html
  ├── style.css          ├── style.css
  └── nuovo.html         └── nuovo.html

# vecchio.html e temp.txt sono stati eliminati dalla DESTINAZIONE
# perché non esistono nella SORGENTE.
# La SORGENTE rimane invariata.

Cosa fa --delete:

  • ✓ Elimina file nella DESTINAZIONE se non esistono nella SORGENTE
  • ✓ Mantiene la DESTINAZIONE come copia esatta della SORGENTE
  • ✗ NON modifica MAI i file nella SORGENTE
  • ✗ NON è bidirezionale, opera solo sulla DESTINAZIONE

ATTENZIONE: Prima di usare --delete:

  1. Eseguire prima un test con --dry-run per vedere quali file verranno eliminati:
rsync -av --delete --dry-run ~/Sito/contenuti/ /var/www/html/
  1. Avere un backup della cartella di destinazione
  2. Verificare attentamente i percorsi di origine e destinazione
  3. Ricordare che i file eliminati nella destinazione non possono essere recuperati

Comandi Complementari Utili

Prima di utilizzare rsync, può essere utile usare questi comandi:

  1. df -h: controlla lo spazio disponibile sui dischi
  2. du -sh cartella: verifica la dimensione di una cartella
  3. iostat: monitora le prestazioni del disco durante i trasferimenti

Suggerimenti per la Sicurezza

Usa sempre --dry-run per test

rsync -av --dry-run ~/Documenti/ ~/Backup/

Verifica sempre i percorsi

  • Fai attenzione allo slash finale (/)
  • Un percorso sbagliato potrebbe sovrascrivere file importanti

Attenzione con --delete

  • Questa opzione può cancellare file
  • Usala sempre prima con --dry-run

Casi d'Uso Comuni

Backup Giornalieri:

  • Backup datati per mantenere versioni multiple
  • Utile per recuperare versioni precedenti

Sincronizzazione Server:

  • Mantenere aggiornarti siti web
  • Sincronizzare configurazioni

Backup Incrementali:

  • Risparmiare spazio e banda
  • Velocizzare i backup successivi