Linux & Bash File & Directory Intermedio Linux macOS

rsync

Sincronizza file e directory localmente o da/verso un host remoto in modo incrementale ed efficiente.

Sintassi del comando
>_rsync [OPZIONI] SORGENTE DESTINAZIONE
#backup #filesystem #network #ssh #sync

Descrizione & Funzionamento

Rsync (Remote Sync) è il gold-standard per il trasferimento e la sincronizzazione di file in ambienti Unix-like. Trasferisce unicamente le differenze (delta transfer algorithm) riducendo drasticamente il traffico di rete. Supporta SSH, compressione, conservazione di permessi/timestamp e cancellazione di file orfani.

Parametri, Flag & Opzioni (8)

Riferimento CLI
Flag / Opzione Formato / Default Descrizione Esempio Rapido
-a o --archive N/D Modalità archivio: preserva ricorsivamente permessi, proprietari, timestamp, link simbolici.
rsync -a src/ dst/
-v o --verbose N/D Mostra l'elenco dettagliato dei file trasferiti durante l'esecuzione.
rsync -av src/ dst/
-z o --compress N/D Comprime i dati durante il trasferimento per ridurre il consumo di banda di rete.
rsync -avz src/ host:/dst/
-P o --progress N/D Mostra la barra di avanzamento e consente di riprendere i file parzialmente trasferiti.
rsync -avzP bigfile.iso user@server:/data/
--delete N/D Elimina nella destinazione i file che non esistono più nella directory sorgente (mirror esatto).
rsync -av --delete src/ dst/
-e <"ssh -p PORTA"> Specifica la shell remota da utilizzare (es. porta SSH personalizzata).
rsync -avz -e "ssh -p 2222" src/ user@host:/dst/
--dry-run N/D Modalità simulazione: mostra cosa verrebbe trasferito o cancellato senza modificare nulla.
rsync -av --dry-run src/ dst/
--exclude <PATTERN> Esclude file o cartelle che corrispondono al pattern specificato (es. node_modules, .git).
rsync -av --exclude="node_modules" ./ /backup/

Esempi d'Uso Pratico (2)

#1 Sincronizzazione directory con cancellazione e barra di progresso

Backup e deploy continuo
Terminale
$rsync -avzP --delete /var/www/html/ utente@192.168.1.50:/backup/www/

Trasferisce ricorsivamente tutti i file preservando permessi e timestamp, comprime i pacchetti di rete, mostra il rate di trasferimento ed elimina sul server di backup i file rimossi in produzione.

Output Atteso:
sending incremental file list
./
index.php
       1,420 100%    1.35MB/s    0:00:00 (xfr#1, to-chk=12/15)
assets/css/style.css
       8,912 100%    8.50MB/s    0:00:00 (xfr#2, to-chk=5/15)
deleting old_cache.tmp

sent 10,480 bytes  received 95 bytes  21,150.00 bytes/sec
total size is 45,230  speedup is 4.28

#2 Simulazione sicura (Dry Run) escludendo cartelle temporanee

Verifica pre-deploy
Terminale
$rsync -av --dry-run --exclude="node_modules" --exclude=".git" ./ /backup/progetto/

Esegue un test completo mostrando quali file verrebbero sincronizzati o modificati, escludendo cartelle pesanti di sviluppo, senza toccare realmente il disco.

Output Atteso:
sending incremental file list
./
app/Http/Controllers/HomeController.php

sent 150 bytes  received 20 bytes  340.00 bytes/sec
total size is 12,500  speedup is 73.53 (DRY RUN)