Guida definitiva a rsync su Ubuntu: sincronizzazione file e backup

目次

1. Introduzione

Cos’è rsync?

rsync è uno strumento da riga di comando per la sincronizzazione e la copia veloce ed efficiente di file e directory. Utilizzato ampiamente su sistemi Linux e Unix-like, sfrutta un meccanismo di trasferimento differenziale, che permette una sincronizzazione efficiente anche di grandi volumi di file senza trasferimenti di dati inutili. È spesso incluso di default nelle distribuzioni Linux come Ubuntu, rendendolo uno strumento essenziale per gli amministratori di server e gli sviluppatori.

Vantaggi dell’uso di rsync su Ubuntu

Su Ubuntu, rsync è altamente efficace per backup di file routinari e per la sincronizzazione di più directory. Senza dover fare affidamento su interfacce grafiche, è possibile ottenere trasferimenti di file ad alta velocità, sia locali che remoti, semplicemente inserendo alcuni comandi nel terminale.

È particolarmente utile nei seguenti scenari:

  • Backup regolari su HDD esterni o NAS
  • Sincronizzazione di cartelle di progetto durante lo sviluppo
  • Compiti di deployment su server remoti
  • Miglioramento della disponibilità tramite mirroring di file

Differenze rispetto ad altri comandi

Rispetto al comando cp, rsync trasferisce solo le differenze tra la sorgente e la destinazione, riducendo significativamente il tempo di elaborazione. Rispetto a scp, offre vantaggi come la possibilità di riprendere dopo errori e impostazioni flessibili di controllo della larghezza di banda. Inoltre, un vantaggio principale è la capacità di trasferire i file preservandone gli attributi (proprietario, permessi, timestamp, ecc.).

Scopo di questo articolo

Questo articolo fornirà una spiegazione dettagliata su come installare e utilizzare efficacemente rsync in un ambiente Ubuntu, inclusi esempi pratici di comandi e casi d’uso. Copriremo strumenti GUI e consigli per la risoluzione dei problemi per aiutare i principianti a iniziare facilmente, imparando l’uso pratico di rsync passo dopo passo.

2. Come Installare rsync (Ubuntu)

Controlla se rsync è preinstallato su Ubuntu

Nella maggior parte degli ambienti Ubuntu, rsync è tipicamente installato di default. Prima di tutto, controlliamo se rsync è già disponibile utilizzando il seguente comando.

rsync --version

Se questo comando viene eseguito e visualizza le informazioni sulla versione, è già installato e pronto all’uso.

Passi se rsync non è installato

Se vedi messaggi come “command not found” o “rsync: command not found”, segui questi passi per installarlo.

  1. Aggiorna le informazioni sui pacchetti:
    sudo apt update
    
  1. Installa rsync:
    sudo apt install rsync
    
  1. Dopo il completamento dell’installazione, controlla di nuovo la versione:
    rsync --version
    

Se le informazioni sulla versione vengono visualizzate senza problemi, l’installazione è riuscita.

È necessario l’installazione tramite snap o altri metodi?

Per Ubuntu, l’installazione di rsync tramite APT è il metodo più raccomandato. Sebbene esista un pacchetto snap, la versione APT è sufficiente per un uso tipico e offre una migliore stabilità e compatibilità. A meno che tu non abbia un motivo specifico, scegli l’installazione tramite APT.

Note durante l’installazione

  • Le versioni più vecchie di Ubuntu potrebbero richiedere aggiornamenti dei repository.
  • Ricorda di utilizzare sudo poiché sono necessari privilegi di root.
  • In ambienti con connessioni di rete instabili, potrebbero verificarsi errori di installazione. Si consiglia di eseguire l’installazione su una rete stabile.

3. Uso Base di rsync

Sintassi base di rsync

La sintassi del comando rsync è semplice ma molto flessibile. La forma base è la seguente:

rsync [options] source destination

Ad esempio, per copiare il contenuto della directory /home/user/documents/ in /mnt/backup/, scriveresti:

rsync -av /home/user/documents/ /mnt/backup/

In questo comando, vengono utilizzati i seguenti opzioni:

  • -a : Modalità archivio (preserva la struttura delle directory, permessi, proprietà, ecc.)
  • -v : Output verbose (mostra quali file vengono copiati)

Attenzione al slash finale nei percorsi delle directory

In rsync, il comportamento cambia a seconda della presenza o meno di un slash finale nel percorso sorgente.

  • /home/user/documents/ (con barra finale) → Vengono coperti solo i contenuti (ad es., file1.txt, file2.txt, ecc.)
  • /home/user/documents (senza barra finale) → Viene copiata la cartella documents stessa (risultato: /mnt/backup/documents/file1.txt )

Questa differenza è un punto chiave unico di rsync. Usala in base alle tue esigenze.

Elenco delle opzioni più usate

Rsync ha molte opzioni, ma le seguenti sono comunemente usate per operazioni di base:

OptionDescription
-aArchive mode (recursive, preserves attributes)
-vDisplay detailed transfer information
-nPerform a trial run with no changes (dry run)
--progressShow copy progress
--deleteDelete files in the destination that do not exist in the source

Vuoi vedere cosa accadrà prima dell’esecuzione?

Per verificare quali file verranno elaborati prima di trasferirli effettivamente, usa l’opzione -n o --dry-run.

rsync -av --dry-run /home/user/documents/ /mnt/backup/

Questo ti consente di visualizzare in anticipo “cosa accadrà”, aiutando a prevenire perdite accidentali di dati.

Gestione dei file nascosti

Rsync include automaticamente i file nascosti (che iniziano con un punto .) nel trasferimento per impostazione predefinita. Questo permette una facile sincronizzazione di file di configurazione e informazioni ambientali.

4. Sincronizzazione con server remoti

Sincronizzazione remota usando rsync via SSH

Uno dei principali vantaggi di rsync è la sua capacità di sincronizzare file con server remoti via SSH. Questo consente il trasferimento di dati sulla rete mantenendo una connessione sicura.

La sintassi di base è la seguente:

rsync -avz source user@remote_IP_or_hostname:destination_path

Ad esempio, per sincronizzare la directory locale /home/user/documents/ con /var/www/backup/ su un server remoto, useresti:

rsync -avz /home/user/documents/ user@example.com:/var/www/backup/
  • L’opzione -z comprime i dati durante il trasferimento, risultando efficace quando la larghezza di banda è limitata.
  • La parte user@host specifica il nome utente SSH e il nome host della destinazione.

Prima connessione e configurazione dell’autenticazione con chiave

Quando ti connetti a una destinazione remota per la prima volta, potresti ricevere una richiesta di conferma dell’autenticità dell’host. Se è sicuro procedere, digita “yes”.

Per esecuzioni frequenti di rsync, è prassi comune configurare l’autenticazione con chiave SSH per evitare di digitare le password.

  1. Genera le chiavi SSH localmente (se non possiedi):
    ssh-keygen -t rsa
    
  1. Copia la chiave pubblica sul server remoto:
    ssh-copy-id user@example.com
    

Dopo questo, rsync può essere eseguito senza password.

Quando è necessario specificare un numero di porta

Se il server remoto utilizza una porta SSH non predefinita (diversa da 22), puoi specificarla esplicitamente usando l’opzione -e.

rsync -avz -e "ssh -p 2222" /home/user/documents/ user@example.com:/var/www/backup/

Attenzione alla sincronizzazione bidirezionale

Rsync è uno strumento di sincronizzazione unidirezionale e sincronizza solo da “sorgente → destinazione”. Se ti serve una sincronizzazione bidirezionale, rsync da solo non è sufficiente e dovresti considerare l’uso di uno strumento diverso (ad es., unison).

5. Opzioni utili di rsync ed esempi d’uso

Opzioni utili oltre l’uso base di rsync

Oltre alle funzioni di copia e sincronizzazione di base, rsync offre varie opzioni utili. Ecco alcune opzioni avanzate che risultano pratiche nell’uso quotidiano.

–delete: Elimina i file non presenti nella sorgente

Questa opzione consente di eliminare automaticamente i file nella destinazione che non esistono nella sorgente. È molto utile quando si desidera eseguire un mirroring (una replica completa).

rsync -av --delete /home/user/source/ /mnt/backup/

※ Poiché esiste il rischio di eliminare accidentalmente file necessari, è consigliabile verificare prima con --dry-run.

–exclude: Escludi file o directory specifici

Per escludere determinati file o directory dalla sincronizzazione, usa --exclude.

rsync -av --exclude '*.log' --exclude 'node_modules' /project/ /backup/

Puoi combinare più pattern per impostazioni di esclusione flessibili.

–bwlimit: Limite di larghezza di banda

Se si desidera eseguire rsync in background senza influire sul traffico di rete, l’opzione --bwlimit è efficace per limitare la velocità di trasferimento.

rsync -av --bwlimit=5000 /data/ user@remote:/data/

(Questo esempio limita la velocità a un massimo di 5MB/s)

Esempi di utilizzo pratico

rsync per scopi di backup

Rsync può anche essere utilizzato come uno strumento di backup semplice e ad alte prestazioni. Di seguito è riportato un comando che è possibile utilizzare per backup giornalieri su un HDD esterno.

rsync -a --delete /home/user/ /media/usb/backup/

Qui, --delete viene utilizzato insieme per ottenere una completa duplicazione.

Esecuzione automatizzata combinata con cron

Combinando rsync con cron, è possibile automatizzare la sincronizzazione regolare. Ad esempio, per eseguire un backup ogni notte alle 2 del mattino, modifica il tuo crontab come segue:

0 2 * * * rsync -a /home/user/ /mnt/backup/ >> /var/log/rsync.log 2>&1

Questo consente una sincronizzazione automatica non presidiata, migliorando significativamente l’efficienza per i task e le operazioni del server.

rsync abilita sia la “flessibilità” che l'”efficienza”

L’attrattiva di rsync risiede nella sua capacità di realizzare sia “flessibilità per adattarsi a qualsiasi scopo” che “alta efficienza di trasferimento” grazie al suo ricco set di opzioni. Come metodo per eseguire in modo sicuro e rapido la sincronizzazione come intesa, piuttosto che una semplice copia, rsync è una scelta molto potente.

6. Introduzione allo strumento GUI “Grsync”

Raccomandato per chi non è a proprio agio con la riga di comando

rsync è uno strumento molto potente, ma la sua operazione si basa principalmente sull’inserimento di comandi utilizzando il terminale. Per i principianti non familiari con Linux o per coloro che preferiscono configurare e utilizzare gli strumenti in modo visivo, questo potrebbe sembrare scoraggiante.

È qui che Grsync risulta utile. Grsync è uno strumento GUI che utilizza rsync internamente fornendo un’interfaccia grafica per la configurazione e l’esecuzione.

Come installare Grsync (Ubuntu)

Su Ubuntu, è possibile installare facilmente Grsync utilizzando APT.

sudo apt update
sudo apt install grsync

Dopo l’installazione, “Grsync” apparirà nella tua lista delle applicazioni, e cliccandoci sopra si avvierà la GUI.

Utilizzo base di Grsync

L’interfaccia di Grsync è intuitiva e permette di configurare elementi come:

  • Inserire percorsi di origine e destinazione
  • Caselle di controllo corrispondenti alle principali opzioni rsync come “Copia ricorsiva”, “Preserva attributi” e “Opzione di eliminazione”
  • Specificare pattern di esclusione
  • Pulsante per esecuzione dry run

Dopo la configurazione, cliccando il pulsante “Esegui” si avvierà rsync in background e si eseguirà la sincronizzazione dei file.

Task periodici facili con la funzionalità Profile

Grsync permette di salvare le impostazioni di configurazione come “Profili”. Questo è molto comodo per gestire multiple impostazioni di backup o destinazioni di sincronizzazione.

Ad esempio:

  • Profile 1: Backup su drive USB
  • Profile 2: Sincronizzazione con NAS
  • Profile 3: Mirroring su un server esterno

È possibile passare facilmente tra questi usi direttamente all’interno della GUI.

Pro e contro dell’uso di Grsync

ProsCons
Intuitive operation without commandsSome advanced options may not be configurable through the GUI
Configure while confirming the meaning of optionsVisualization of process details is somewhat abstract and may be insufficient for those accustomed to rsync’s output
Easy to start safely (e.g., dry run with a button)Less flexible in some situations compared to using the terminal

7. Problemi comuni e soluzioni

Le autorizzazioni dei file non vengono preservate

Sintomo: Il proprietario o le autorizzazioni dei file nella destinazione cambiano.
Causa: rsync viene eseguito con privilegi di utente normale o l’opzione -a (archivio) non viene utilizzata.
Soluzione:

  • Specifica esplicitamente l’opzione -a.
  • Esegui rsync con sudo quando necessario.
    sudo rsync -a /source/ /destination/
    

I link simbolici vengono ignorati

Sintomo: I file link non vengono copiati, o vengono copiati come file effettivi.
Causa: Per impostazione predefinita, i link simbolici vengono copiati così come sono, ma il comportamento varia a seconda delle opzioni.
Soluzione:

  • Per copiare i link così come sono: Usa -a .
  • Per copiare il file target stesso: Aggiungi --copy-links .

Viene visualizzato “Permission denied”

Sintomo: La sincronizzazione fallisce con un errore “Permission denied” per file o directory specifici.
Causa: Autorizzazioni di accesso insufficienti.
Soluzione:

  • Esegui rsync con sudo.
  • Controlla e correggi i permessi di accesso per le directory di origine o di destinazione.
    sudo rsync -a /source/ /destination/
    

Viene visualizzato “rsync: connection unexpectedly closed” (durante la connessione remota)

Sintomo: La sincronizzazione viene interrotta da un errore durante la connessione al server remoto.
Causa: Problemi di configurazione SSH, specifica del percorso errata, impostazioni dei permessi remoti, ecc.
Soluzione:

  • Verifica la connessione SSH da sola: Controlla se ssh user@host ha successo.
  • Controlla due volte se il percorso di destinazione è corretto.
  • Considera problemi di firewall o porte.

“Argument list too long”

Sintomo: Si verifica un errore quando si tenta di sincronizzare una directory contenente un numero molto grande di file.
Causa: Superamento del limite sulla lunghezza degli argomenti della riga di comando.
Soluzione:

  • Restringi gli obiettivi usando --exclude o --include.
  • Sincronizza in più passaggi, directory per directory.

8. FAQ (Domande frequenti)

Qui abbiamo compilato domande e problemi comuni che gli utenti incontrano quando usano rsync su Ubuntu. Forniremo spiegazioni chiare concentrandoci sui punti in cui i principianti spesso si bloccano.

Q1. Come posso preservare la proprietà e i permessi dei file con rsync?

A1. Usando l’opzione -a (modalità archivio), puoi copiare i file preservando i loro permessi, timestamp, proprietario, gruppo e altro. Questa opzione è essenziale per attività come il backup delle configurazioni di sistema.

rsync -a /etc/ /backup/etc/

Q2. Come escludo file o cartelle specifici dalla sincronizzazione?

A2. Puoi escludere file o pattern specifici dall’obiettivo di sincronizzazione usando l’opzione --exclude.

rsync -av --exclude '*.log' /project/ /backup/project/

I wildcard possono anche essere usati, rendendo facile escludere directory come node_modules o .git.

Q3. Come posso limitare la larghezza di banda di rete con rsync?

A3. L’opzione --bwlimit ti permette di limitare la velocità di trasferimento. L’unità è KB/s.

rsync -av --bwlimit=5000 /data/ user@remote:/data/

In questo esempio, la velocità di trasferimento è limitata a un massimo di 5MB/s. Questo è utile quando non vuoi saturare la connessione di rete.

Q4. Voglio vedere cosa succederà prima dell’esecuzione. Come?

A4. Usando l’opzione --dry-run (o -n) simula il trasferimento senza spostare effettivamente i file. Ti mostra esattamente cosa succederebbe.

rsync -av --dry-run /source/ /destination/

Questo passaggio di verifica è estremamente importante quando usi rsync per la prima volta o esegui operazioni che includono --delete.

Q5. I file nascosti (file con punto) vengono copiati?

A5. Sì, rsync include i file che iniziano con un punto (.) nell’obiettivo di copia per impostazione predefinita. Tuttavia, se desideri escludere file nascosti specifici, dovrai aggiungere una regola di esclusione come --exclude '.*'.

Q6. Qual è la differenza tra rsync e scp?

A6. scp è uno strumento focalizzato sul trasferimento semplice di file e trasferisce tutti i file ogni volta. rsync è in grado di trasferimento differenziale, copiando efficientemente solo le parti che sono cambiate, rendendolo più adatto per backup e mirroring. È anche più robusto nel riprendere trasferimenti interrotti.

9. Conclusione

In questo articolo, abbiamo trattato un’ampia gamma di argomenti riguardanti rsync su Ubuntu, dai metodi di installazione e l’uso base alla sincronizzazione con server remoti, opzioni utili, l’utilizzo dello strumento GUI “Grsync”, risoluzione dei problemi e FAQ.

Riepilogo dell’attrattiva di rsync

  • Trasferimento differenziale veloce previene il trasferimento di dati non necessario.
  • Consente backup e mirroring mantenendo permessi e proprietà.
  • Supporta sincronizzazione remota e può essere usato in modo sicuro in combinazione con SSH.
  • Opzioni avanzate consentono un controllo dettagliato per varie situazioni, come impostazioni di esclusione e limiti di larghezza di banda.
  • Può essere integrato con cron per ottenere automazione ed esecuzione periodica.
  • Lo strumento GUI Grsync rende facile per i principianti operare con fiducia.

rsync è uno “strumento essenziale per gli utenti Linux”

Nei ambienti Linux, inclusi Ubuntu, rsync è uno strumento fondamentale per operazioni sui file, backup e sincronizzazione. Anche per i principianti, esercitarsi con i contenuti introdotti in questo articolo dovrebbe consentire di utilizzare rsync in modo sicuro ed efficiente.

Inoltre, sebbene rsync abbia una sintassi semplice, padroneggiarla consente una gestione dei file a livello professionale. Inizia comprendendo le basi e, se necessario, incorpora opzioni avanzate per trovare il modo ottimale di usare rsync nel tuo ambiente.

年収訴求