Cosa fa#
Sincronizza file e directory tra sorgente e destinazione, trasferendo solo le parti modificate. Funziona localmente (come cp intelligente) o via rete SSH (come scp incrementale). La sua efficienza lo rende lo standard per backup, mirror e deploy.
Sintassi#
rsync [opzioni] sorgente/ destinazione/
Lo slash finale su sorgente/ e' critico. rsync sorgente/ copia il CONTENUTO. rsync sorgente copia la DIRECTORY stessa. Comportamento diverso.
Comandi essenziali#
| Comando | Flag | Significato flag | Cosa fa |
|---|---|---|---|
rsync -av sorgente/ dest/ | -a -v | archive + verbose | Copia ricorsiva preservando tutto, output verboso |
rsync -av --delete sorgente/ dest/ | --delete | — | Mirror esatto — cancella dalla dest i file non in sorgente |
rsync -av --dry-run sorgente/ dest/ | --dry-run | — | Simula senza toccare niente — sempre fare prima |
rsync -av -e ssh utente@host:percorso/ dest/ | -e | rsh/execute | Usa SSH come trasporto |
rsync -av --progress sorgente/ dest/ | --progress | — | Mostra progresso per ogni file |
rsync -av --exclude="*.log" src/ dst/ | --exclude | — | Esclude file .log dalla sincronizzazione |
rsync -avz sorgente/ dest/ | -z | compress | Comprime durante il trasferimento (utile su rete lenta) |
Il flag -a — archive mode#
-a e' una shorthand per -rlptgoD:
r = ricorsivo
l = mantieni i link simbolici
p = mantieni i permessi
t = mantieni i timestamp
g = mantieni il gruppo
o = mantieni il proprietario (richiede root)
D = mantieni device files e special filesQuasi sempre userai -a — preserva tutto quello che conta per un backup.
Uso locale — backup e sincronizzazione#
# Backup di /etc con data nel nome
sudo rsync -av /etc/ /backup/etc-$(date +%Y%m%d)/
# Mirror esatto — la destinazione diventa identica alla sorgente
# ATTENZIONE: --delete rimuove dalla dest i file non in src
rsync -av --delete /home/barno/ /backup/home/
# Simula sempre prima con --dry-run
rsync -av --delete --dry-run /etc/ /backup/etc/
# Mostra cosa farebbe senza fare niente
# Escludi file temporanei e cache
rsync -av --exclude="*.tmp" --exclude=".cache/" /home/ /backup/home/Uso remoto — sincronizzazione via SSH#
# Da locale a remoto
rsync -av /home/barno/ utente@server:/backup/barno/
# Da remoto a locale
rsync -av utente@server:/var/log/ /backup/logs/
# Con SSH su porta non standard
rsync -av -e "ssh -p 2222" /dati/ utente@server:/backup/
# Con chiave SSH specifica
rsync -av -e "ssh -i ~/.ssh/id_ed25519" /dati/ utente@server:/backup/
# Compressione attiva — utile su connessioni lente
rsync -avz /dati/ utente@server:/backup/rsync vs scp vs cp#
cp scp rsync
────────────────── ──────────────────── ──────────────────────────
locale only locale → remoto locale e remoto
copia tutto copia tutto copia solo le differenze
nessun resume nessun resume riprende da dove si e' fermato
no --delete no --delete --delete per mirror esatto
veloce per pochi ok per file singoli efficiente per grandi dataset
file piccoliBackup incrementale — pattern pratico#
# Pattern backup professionale
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d-%H%M)
# Backup con link hard — ogni backup sembra completo ma occupa solo lo spazio del delta
rsync -av --delete \
--link-dest="$BACKUP_DIR/latest" \
/etc/ \
"$BACKUP_DIR/$DATE/"
# Aggiorna il puntatore "latest"
ln -sfn "$BACKUP_DIR/$DATE" "$BACKUP_DIR/latest"--link-dest crea hard link ai file non modificati — ogni backup sembra un backup completo ma occupa solo lo spazio delle modifiche.
Scenario Reale — Blue Team#
# Backup pre-modifica di configurazione critica
sudo rsync -av /etc/ssh/ /backup/etc-ssh-$(date +%Y%m%d)/
# Modifica sshd_config
# Se qualcosa va storto:
sudo rsync -av /backup/etc-ssh-20260327/ /etc/ssh/
# Mirror di log remoti per analisi locale
rsync -av utente@server-prod:/var/log/auth.log /analisi/auth-$(date +%Y%m%d).log
# Verifica integrita' dopo sincronizzazione
rsync -av --checksum sorgente/ dest/
# --checksum usa MD5 invece dei timestamp per confrontare i file
# piu' lento ma piu' accurato — utile in forensicsUsa sempre --dry-run prima di --delete. Vedere cosa verrebbe cancellato prima di cancellarlo e' una delle abitudini piu' importanti da costruire con rsync.
Dove l'ho usato#
- Sincronizzazione file tra Mac e server remoto
- Backup locale su Mac
Collegato a#
- system — categoria
- ssh — protocollo di trasporto per rsync remoto
- scp — alternativa per trasferimenti singoli
- sha256sum — verifica integrita' dopo sincronizzazione
- compressione-arichivazione — alternativa per backup manuali con tar


