GNU/Linux >> Linux Esercitazione >  >> Linux

Come utilizzare Rsync per copiare/sincronizzare file tra server

Introduzione

Rsync è un ottimo modo per sincronizzare file tra server o semplicemente per spostare file tra server senza la necessità di FTP. Collega due server tramite il protocollo SSH, consentendo il trasferimento di dati tra di loro. Il demone rsync, trattato più avanti in questo articolo, utilizza il proprio protocollo e viene eseguito su una porta specificata. Di seguito esamineremo le basi; copiare tra server, copiare su/da demoni rsync e mantenere i file sincronizzati tra loro su server diversi.

Prerequisiti

– 2 server Linux su cui è installato rsync.
– Il server che avvia il trasferimento deve essere in grado di accedere alla porta SSH del server ricevente (o alla porta rsync, se ci si connette a un demone rsync).
– L'utente deve disporre delle autorizzazioni per utilizzare rsync (gli esempi seguenti verranno eseguiti come utente root).

Nozioni di base su Rsync

Rsync può inviare file a un altro server o estrarre file da un altro server. La differenza tra i due è nella sintassi. Se specifichi prima il tuo file locale, avvierà un push. Se specifichi prima il tuo host remoto, avvierà un pull. Vediamo il tipo esatto di sintassi di seguito.

rsync [-options] SOURCE [email protected]:DESTINATION

Tira:

rsync [-options] [email protected]:SOURCE DESTINATION

Il [-options] sono tutte le diverse opzioni che possono essere utilizzate. Alcuni farò riferimento e spiegherò negli esempi di seguito. Per un elenco completo di tutte le opzioni, consulta la pagina di manuale.

SOURCE sta per /directory/path/to/the/file/or/directory che verrà copiato.

DESTINATION sta per /directory/path/to/the/new/location sull'host ricevente.

L'[email protected] è l'utente sull'host remoto con cui rsync si connette.

x.x.x.x sta per l'indirizzo IP dell'host remoto. Può anche essere un nome host se hai configurato il DNS.

Ora, supponiamo che tu debba specificare una porta al di fuori della porta predefinita 22 a cui rsync può connettersi. Lo faresti con l'opzione -e . Vedi l'esempio seguente (sostituisci PORT con il numero di porta a cui devi connetterti).

Spingi:

rsync [-other options] -e 'ssh -p PORT' SOURCE [email protected]:DESTINATION

Tira:

rsync [-other options] -e 'ssh -p PORT' [email protected]:SOURCE DESTINATION

Esempi di trasferimento file semplice

Per prima cosa, avvieremo un push di un file .txt da un server all'altro.

rsync /home/simple.txt [email protected]:/home

Questo comando copierà il file simple.txt dal nostro server locale, al /home del nostro server remoto directory.

Rsync Trasferimento tra due server.

A destra, abbiamo eseguito un ls prima di rsync e poi di nuovo dopo che è stato eseguito, così possiamo vedere che il file è stato copiato.

Ecco un esempio di pull:

rsync [email protected]:/home/pullme.txt /home

Il file pullme.txt si trova sul server remoto (x.x.x.x) in /home directory. Questo comando copierà il file nel /home del server locale directory.

Puoi eseguire il push/pull di qualsiasi singolo file specificato utilizzando questo metodo. Ora entriamo nelle directory.

Trasferimento file directory

Spostare una directory è semplice. Aggiungi il -d opzione e sposterà solo la directory. Se vuoi spostare la directory e il suo contenuto, usa -r invece di copiare ricorsivamente su tutti i file e le sottocartelle. Già che ci siamo, viriamo sul -t opzione. Questa opzione copierà la data e l'ora dell'ultima modifica del file. Usando -t è utile per mantenere registrazioni accurate dell'ultima modifica di un file. Queste opzioni funzioneranno spingendo o tirando.

Nell'esempio seguente, ho spostato il pullme.txt file in un /transfer_me directory. Ho anche creato la directory /simple (che contiene il file simple.txt ) all'interno di /transfer_me . Ho quindi premuto il /transfer_me directory sul server remoto.

rsync -rt /home/transfer_me [email protected]:/home

Rsync directory

Come puoi vedere, la cartella sul server remoto (di ricezione) contiene tutte le sottodirectory e i file che la cartella locale ha eseguito sul server di avvio.

Connessione a un demone Rsync

Questa sezione richiede un server che esegue un demone rsync. Per testare queste istruzioni, consulta il nostro articolo sulla configurazione di un demone rsync.

Ora che abbiamo esaminato il trasferimento di file/directory di base con rsync, possiamo passare alla connessione a un demone rsync. Un demone rsync è costantemente in esecuzione su un server, quindi puoi eseguire il push e/o il pull dalla directory del demone rsync assegnata a quel server in qualsiasi momento. Esistono due formati per eseguire il pull e il push su un demone rsync.

Tira:

rsync [-options] rsync://[email protected][:PORT]SOURCE DESTINATION

Pull (notare i due due punti dopo l'indirizzo IP/nome host):

rsync [-options] [email protected]::SOURCE DESTINATION

Spingi:

rsync [-options] SOURCE rsync://[email protected][:PORT]DESTINATION

Push (notare i due due punti dopo l'indirizzo IP/nome host):

rsync [-options] SOURCE [email protected]::DESTINATION

Guarda di seguito come ho estratto dal demone rsync (l'uso della porta numero 873 di seguito è ridondante, poiché questa è la porta di connessione predefinita del demone rsync:la includo per dimostrare come formattare il comando se avessi impostato una porta non predefinita sul tuo demone rsync):

rsync -rt rsync://[email protected]:873/files/ /home/pulledfromdaemon

Rsync daemon pull

Qui, files è il nome del modulo. Dal momento che stiamo estraendo tutto in quella directory (pullme.txt e simple.txt ) lo lasciamo semplicemente al nome del modulo per la sorgente.

Sincronizzare i file con Rsync

Ora discuteremo come sincronizzare i file. Puoi eseguire una sincronizzazione con un singolo comando rsync, con le giuste opzioni. Puoi inserire questo comando in uno script o in un processo cron per l'esecuzione su richiesta o automaticamente. Il comando varia se stai spingendo, tirando o usando il demone, ma le opzioni rimangono le stesse.

rsync -rtu --delete SOURCE [email protected]:/DESTINATION

In questo esempio, presta attenzione a -rtu --delete opzioni. Abbiamo già discusso di -r e -t opzioni:copia ricorsiva e copia data e ora. Il -u l'opzione dice a rsync di aggiornare solo file diversi/modificati/aggiunti da SOURCE al DESTINATION . L'opzione --delete rimuoverà tutti i file dalla DESTINATION che la SOURCE potrebbe non avere più. Con questo (e altre opzioni, come -l per i collegamenti simbolici) puoi mantenere le directory in più posizioni aggiornate con la fonte.

Ora puoi sincronizzare i file tra server, rsync demoni e mantenere i file sincronizzati tra loro con facilità. Grazie per aver seguito questo how-to! Ricontrolla qui per ulteriori aggiornamenti o dai un'occhiata ai numerosi servizi che offriamo, incluso l'hosting VPS.

Scopri di più sui nostri servizi di hosting VPS e sui server privati ​​virtuali.


Linux
  1. Come utilizzare rsyslog per creare un server di aggregazione dei registri Linux

  2. Come sincronizzare i file tra due telecomandi?

  3. Come silenziare selettivamente Rsync?

  4. Come copiare le directory in modo ricorsivo utilizzando rsync escludendo file specifici

  5. Come copiare rapidamente un gran numero di file tra due server

Come utilizzare il comando rsync per copiare i dati localmente e su SSH

Come sincronizzare automaticamente i file tra due server Linux

Come sincronizzare automaticamente due server Web in Linux

Come utilizzare FTP per spostare i file tra il tuo computer e il tuo dispositivo Android

Come utilizzare Docker Cp per copiare file tra host e contenitori

Usa NTP per sincronizzare l'ora