rsync
Sincronizza file e directory localmente o da/verso un host remoto in modo incrementale ed efficiente.
>_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)