Ti sei mai preoccupato di perdere i tuoi dati o ti sei stancato di eseguire backup manuali giornalieri o settimanali? Utilizzare il rsync
comando e sincronizza automaticamente i tuoi file locali su un server remoto tutte le volte che lo desideri senza alcun intervento manuale. Tieni presente che questa guida richiede l'accesso a un server Linux remoto (es. AWS) ed è scritto sotto Ubuntu 20.04 anche se qualsiasi distribuzione Linux dovrebbe funzionare bene.
Installa rsync
Prima di tutto, controlla se o no rsync
è installato. Sia sul tuo PC locale che sul server web esegui questo comando:
rsync --version
Se in cambio ricevi la versione corrente di rsync, sei pronto per la sezione successiva. Altrimenti, se ricevi un comando non trovato errore, puoi installare rsync
con questo comando:
sudo apt-get -y install rsync
Genera chiave SSH
Useremo a Chiave SSH per autenticare la connessione tra il nostro PC locale e il server remoto. Per generare una nuova chiave SSH sul tuo PC locale all'interno del terminale, esegui il comando:
Hai bisogno di accedere al tuo computer o server Linux da remoto? Ecco come impostare e configurare SSH su Linux, Windows e dispositivi mobili.
ssh-keygen -t rsa -b 4096 -f ~/.ssh/rsync.key
Quando viene richiesta una password, lascia il campo vuoto e premi due volte il tasto Invio. Questo genererà due nuovi file all'interno del tuo ~/.ssh/
directory denominata rsync.key
che è la chiave privata, e rsync.key.pub
, la chiave pubblica.
Configura server remoto
Sebbene non richiesto, per questa guida creeremo un nuovo utente sul server remoto per le connessioni rsync e per archiviare tutti i file di backup. Accedi al server remoto tramite SSH ed esegui questo comando:
sudo useradd -m rsync
L'esempio sopra usa il nome utente rsync, ma puoi cambiarlo in qualsiasi cosa desideri. Il -m
opzione dice semplicemente a Linux di creare una directory home per il nostro nuovo utente.
Per consentire l'autenticazione del PC locale, la chiave SSH pubblica generata nella sezione precedente deve essere copiata sul server remoto. Apri il /~.ssh/rsync.key.pub
file in a editor di testo e vedrai una linea grande che assomiglia a qualcosa.
ssh-rsa utente@host
Questa lunga riga è la chiave SSH pubblica. Copialo negli appunti e all'interno del tuo server remoto esegui questi comandi:
sudo su rsync
mkdir -m 0700 $HOME/.ssh
echo "ssh-rsa AAAAB... utente@host" > $HOME/.ssh/authorized_keys
chmod 0644 $HOME/.ssh/authorized_keys
Nel penultimo comando, sostituisci il testo tra le virgolette con quella lunga riga di chiave pubblica SSH. Ecco fatto, il tuo PC locale sarà ora in grado di autenticarsi con il tuo server remoto.
Configura il file di configurazione ssh
Per semplicità, aggiungi una voce a ~/.ssh/config
file sul tuo PC locale per connetterti facilmente al server remoto. Apri il file sul tuo PC locale con il comando.
nano $HOME/.ssh/config
All'interno del file aggiungi una voce per il server remoto come:
host backup_server
nome host 192.168.0.24
sincronizzazione dell'utente
IdentityFile ~/.ssh/rsync
Cambia il nome host con l'indirizzo IP del tuo server remoto e, se hai usato un nome utente diverso da "rsync", cambia anche quello. Puoi usare tutto ciò che desideri per l'host, ma per questo esempio è stato utilizzato "backup_server". Salva e chiudi il file premendo Ctrl+X seguito dai tasti "Y" e Invio.
Testa la tua connessione SSH al server remoto con il comando.
ssh backup_server
Supponendo che tutto sia configurato correttamente, ora dovresti essere connesso al tuo server remoto tramite SSH. Chiudere la connessione con il comando.
Uscita
Sincronizza i tuoi file
Ora prova il rsync
funzionalità e, ad esempio, per sincronizzare la directory Documenti sul PC locale, eseguire il comando:
rsync -avz --progress ~/Documents/ backup_server:~/Documents
La prima occorrenza di ~/Documenti/
specifica il file o la directory locale da sincronizzare, backup_server
corrisponde alla voce aggiunta a ~/.ssh/config
file, e il finale :~/Documenti
specifica semplicemente di caricare tutto nella directory /Documents del server remoto relativa alla directory home.
Accedi al server remoto e dovresti vedere una nuova directory Documenti sincronizzata con quella del tuo PC locale. Ogni volta che esegui il comando sopra, verranno caricati solo i file che sono stati modificati dall'ultima volta, quindi non stai caricando costantemente l'intero contenuto della directory.
Automatizza tramite Crontab
Ora che tutto è testato e funziona correttamente, possiamo facilmente automatizzare l'intero processo aggiungendo un lavoro crontab al nostro PC locale. Per sincronizzare automaticamente la tua cartella locale con il server remoto ogni 15 minuti, all'interno del terminale esegui il comando.
(crontab -l; echo "*/15 * * * * rsync -avz --progress ~/Documents/ backup_server:~/Documents > /dev/null 2>&1";) | crontab
Potresti ricevere un messaggio "nessun crontab per l'utente" e puoi semplicemente ignorarlo. Cambiare il Documenti
directory su qualsiasi cosa desideri eseguire il backup, ma assicurati di lasciare una barra finale per le directory, altrimenti non eseguiranno correttamente il backup.
Verifica che il lavoro crontab sia stato aggiunto correttamente con il comando.
crontab -l
Se vedi il lavoro crontab che è stato appena aggiunto, allora tutto è a posto. Attendi 15 minuti, controlla il tuo server remoto e tutti i file necessari dovrebbero essere lì. A partire da ora, tutte le modifiche apportate ai tuoi file verranno automaticamente caricate sul server remoto ogni 15 minuti.
Scarica da server remoto
Puoi anche usare rsync
per scaricare file dal server remoto e sincronizzarli sul PC locale. Utilizzando l'esempio di directory /Documents sopra, all'interno del terminale eseguire il comando:
rsync -chavzP backup_server:~/Documenti/ ~/Documenti
Il ~./Documenti
La directory sul tuo PC locale dovrebbe ora essere un'immagine speculare del server remoto.
Includi ed escludi pattern
Se hai bisogno di sincronizzare solo i file che corrispondono a un determinato modello, come termina con .html
puoi usare il --includere
modello. All'interno del terminale esegui il comando.
rsync -avz --include "*.html" --progress ~/mysite/ backup_server:~/public_html
Controlla il server remoto e vedrai che solo i file con estensione .html dalla directory locale /mysite/ sono stati caricati nella directory /public_html/ remota. Allo stesso modo, puoi anche sincronizzare tutto tranne alcuni file con il --escludere
opzione. Ad esempio, il seguente comando sincronizzerà tutti i file tranne quelli con a .testo
estensione.
rsync -avz --exclude "*.txt" --progress ~/mysite/ backup_server:~/public_html
Sincronizzare due directory locali
Se necessario, puoi anche sincronizzare due directory locali con il comando.
rsync -zvr ~/origine/directory ~/destinazione/directory
Questo comando funziona esattamente come durante la sincronizzazione con un server remoto, con l'unica differenza che sono due directory locali.
Riposa tranquillo
Ora puoi tirare un sospiro di sollievo sapendo che le tue possibilità di perdita di dati sono ora sostanzialmente inferiori. In questo articolo hai imparato cosa rsync
è, come generare e installare una chiave SSH, definire un server all'interno del ~./.ssh/config
file, sincronizza una directory locale e remota e automatizza l'intero processo tramite crontab. D'ora in poi, tutti i file necessari verranno sempre sincronizzati con il tuo server remoto con solo 15 minuti di ritardo.
Hai bisogno di clonare il tuo disco rigido o partizione Linux? Usa uno di questi strumenti di clonazione delle unità per clonare il tuo disco Linux.
- Linux
- Backup dei dati
- Linux
- Backup su cloud
- Rete di casa
Iscriviti alla nostra Newsletter
Iscriviti alla nostra newsletter per consigli tecnici, recensioni, ebook gratuiti e offerte esclusive!
Ancora un passo…!
Conferma il tuo indirizzo e-mail nell'e-mail che ti abbiamo appena inviato.