CodeGym /Corsi /Docker SELF /Backup utilizzando rsync e scp

Backup utilizzando rsync e scp

Docker SELF
Livello 6 , Lezione 5
Disponibile

1. Perché il backup è importante?

Oggi parliamo di uno dei compiti più importanti per chi lavora nel mondo dell'IT e della programmazione: fare il backup dei dati. Se hai mai perso dati importanti a causa di un guasto al disco o errori, sai quanto può essere critico. E se non ti è mai successo — siamo qui per evitarlo!

Immagina: hai lavorato su un progetto per mesi e poi, un bel giorno, il tuo disco rigido decide di scioperare. Sì, è frustrante quanto dimenticare un punto e virgola alla fine di una query SQL, ma mille volte peggio. I sistemi possono essere instabili, le persone fanno errori e i file possono perdersi. Avere un backup ti permette di essere pronto per affrontare questi imprevisti.

Su Linux ci sono diversi strumenti potenti per il backup. Oggi ci concentreremo su due di questi: rsync e scp.


2. Comando rsync: strumento veloce e intelligente per copiare i dati

rsync è uno dei tool più popolari per copiare e sincronizzare i dati. La sua forza principale sta nella velocità e nell'efficienza. Invece di copiare tutto, rsync copia solo i file modificati. Questo lo rende perfetto per backup regolari di grandi volumi di dati.

Sintassi di rsync

Ecco il formato base del comando:

rsync [opzioni] sorgente destinazione

Dove:

  • sorgente — il percorso del file o della cartella che vuoi copiare.
  • destinazione — dove vuoi trasferire questi dati.

Principali opzioni e le loro funzioni

Ecco alcune delle opzioni più utilizzate:

  • -a (archive): include la copia di tutti i metadata (permessi, timestamp, ecc.).
  • -v (verbose): mostra output dettagliato per vedere cosa sta succedendo.
  • --progress: mostra il progresso della copia (super utile quando trasferisci file grandi).
  • --delete: elimina i file dal lato di destinazione che non esistono più sul lato sorgente. Utile per una sincronizzazione completa.
  • -z (compress): comprime i dati prima del trasferimento, accelerando il processo (particolarmente importante per operazioni di rete).

Esempio: copia di dati locali

Creiamo una directory /backup per memorizzare i backup.

mkdir /backup

Copiamo tutto il contenuto della directory /home in /backup:

rsync -av /home /backup

Analizziamo questo esempio:

  • -a conserva la struttura e i permessi dei file.
  • -v fornisce informazioni sul progresso del processo.

Se esegui nuovamente il comando, copierà solo i file modificati o nuovi.

Esempio: backup remoto

Ora supponiamo che tu voglia inviare un backup a un server remoto. Per questo, rsync supporta l'uso di SSH.

rsync -av /backup user@remote_server:/remote_backup

Dove:

  • user — il nome utente sul server remoto.
  • remote_server — l'indirizzo del server remoto (ad esempio, l'indirizzo IP o il nome del dominio).
  • /remote_backup — percorso sul server dove vuoi memorizzare i dati.

Se hai una chiave SSH per l'autenticazione, il trasferimento sarà ancora più semplice (e sicuro).


3. Comando scp: semplice ed efficace

scp (Secure Copy Protocol) — è uno strumento per copiare file tra macchine locali e remote. È un po’ più semplice di rsync ed è adatto nei casi in cui non è necessaria una sincronizzazione completa.

Sintassi di scp

Ecco il formato base del comando:

scp [opzioni] origine destinazione

Dove:

  • origine — il percorso al file che vuoi copiare.
  • destinazione — l'indirizzo dove consegnarlo.

Principali opzioni e le loro funzioni

Alcune opzioni utili:

  • -r: copia ricorsiva per le cartelle.
  • -C: comprime i file prima della trasmissione.
  • -P: specifica la porta SSH se è diversa da quella standard (22).

Esempio: copia di un file su una macchina remota

Vuoi trasferire file dal tuo computer locale a un server. Supponiamo che il file si chiami document.txt.

scp document.txt user@remote_server:/remote_folder

Se il file si trova nella cartella /home/user/documents, il comando sarà il seguente:

scp /home/user/documents/document.txt user@remote_server:/remote_folder

Ora il file sarà disponibile sulla macchina remota nella cartella /remote_folder.

Esempio: copia di file dal server alla macchina locale

Il processo funziona in senso opposto:

scp user@remote_server:/remote_folder/document.txt /home/user/documents

In questo caso, il file document.txt verrà trasferito nella tua cartella locale.


4. Differenze tra rsync e scp

Anche se entrambi i comandi permettono di copiare i file, hanno le loro particolarità.

Caratteristica rsync scp
Velocità Solo dati modificati, più veloce per grandi volumi Copia tutto, anche se il file non è cambiato
Sincronizzazione Supporto completo per la sincronizzazione Non supporta la sincronizzazione
Compressione dati Disponibile con -z Disponibile con -C
Semplicità d'uso Più complesso da configurare Interfaccia semplice

Quindi, se hai solo bisogno di trasferire velocemente un file — usa scp. Se si tratta di sincronizzazioni regolari e grandi volumi di dati — decisamente rsync.


5. Esempio pratico: configurazione del backup

Ecco un compito pratico: vuoi configurare l'intero processo di backup del tuo progetto su un server remoto.

  1. Supponiamo che i file del tuo progetto siano memorizzati nella cartella /home/user/project. Vuoi che siano salvati sul server backup.server.com nella cartella /backups/project.

  2. Per rendere la copia più veloce, utilizzeremo rsync.

Configurazione dello script per il backup

Crea un file backup.sh:

#!/bin/bash

SOURCE="/home/user/project"
DESTINATION="user@backup.server.com:/backups/project"

# Eseguiamo il backup utilizzando rsync
rsync -av --delete "$SOURCE" "$DESTINATION"

# Mostriamo un messaggio alla fine
echo "Backup completato!"

Rendi il file eseguibile:

chmod +x backup.sh

Ora puoi eseguire manualmente questo script:

./backup.sh

Oppure aggiungerlo a cron per eseguirlo automaticamente (parleremo di cron più avanti nel corso).


6. Errori comuni e come evitarli

  1. Percorsi errati nella linea di comando. Se indichi un percorso sbagliato ai file, rsync o scp non copieranno nulla. Usa i comandi ls o pwd per verificare che i percorsi siano corretti.

  2. Mancanza della chiave di autorizzazione. Se stai usando SSH e non hai impostato una chiave, ti sarà continuamente richiesto di inserire la password. Configura le chiavi SSH per semplificare il processo.

  3. Interruzione del backup. Se la rete è instabile, rsync completerà comunque il trasferimento al prossimo avvio. Tuttavia, con scp, dovrai ricominciare da capo.

Con rsync e scp potrai copiare e sincronizzare i tuoi dati in modo sicuro sia sul computer locale che su server remoti. Questi strumenti sono i tuoi compagni affidabili quando si tratta di proteggere file importanti.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION