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:

instagram viewer
Come configurare SSH su Linux e testare la configurazione: una guida per principianti

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.

E-mail
Come clonare il disco rigido di Linux: 4 metodi

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.

Argomenti correlati
  • Linux
  • Backup dei dati
  • Linux
  • Backup su cloud
  • Rete di casa
Circa l'autore
Matt Dizaki (13 articoli pubblicati)Altro da Matt Dizak

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.

.