Come usare rsync con esempi

Come usare rsync con esempi
RSYNC è uno strumento popolare per la sincronizzazione dei file, sia a livello locale che remoto. A differenza di altri strumenti di sincronizzazione, RSYNC utilizza un algoritmo interessante che riduce al minimo il consumo di larghezza di banda. Sposta semplicemente la parte dei file che sono cambiati.

È una potente utilità che può servire in molte situazioni. In questo articolo, mostrerò come iniziare con rsync con una dimostrazione. La dimostrazione sarà eseguita su Ubuntu 18.04.

Rsync

Rsync sta per il termine sincronizzazione remota. Nonostante il nome, può gestire la sincronizzazione dei file in remoto e localmente. Il termine RSYNC viene anche usato per fare riferimento al protocollo RSYNC che RSYNC utilizza per la sincronizzazione. In questo articolo, RSYNC indicherà sempre lo strumento, non il protocollo.

A causa della sua pura popolarità, Rsync è disponibile su quasi ogni singolo sistema Linux e UNIX. C'è una buona possibilità che venga preinstallato. In caso contrario, fai una piccola ricerca su come installare rsync nel tuo sistema.

Ecco una lista di caratteristiche offerte da rsync.

  • Copia della directory
  • Configurazione di backup facile
  • Può lavorare su ssh
  • Può funzionare come daemon/server
  • Conservazione dell'autorizzazione del file

Utilizzo rsync

Prima di saltare in rsync, abbiamo bisogno di alcuni file fittizi con cui lavorare. Creiamo prima una directory fittizia.

$ mkdir -v primario

Una volta creata, è tempo di creare una manciata di file fittizi. Per creare un file, userò il comando touch. Ulteriori informazioni sul comando touch.

$ touch dummy 1… 20

Ecco! Ora siamo pronti a utilizzare RSYNC per eseguire azioni utilizzando questi file fittizi.

Struttura di comando RSYNC

RSYNC utilizza la seguente struttura di comando.

$ rsync

Sincronizzare le directory locali

Ora, è il momento di utilizzare RSYNC per la sincronizzazione di file su più destinazioni. In questo esempio, sincronizzeremo il contenuto di dir_primary a dir_target.

$ MKDIR -V Target

Di 'a Rsync di sincronizzare il contenuto di entrambe le directory.

$ rsync -v -r primario/ target

Qui, abbiamo usato due argomenti diversi.

-v: Dice a rsync di correre in modalità verbosa
-R: Ricorsivo, richiesto per la sincronizzazione della directory.

Nel prossimo esempio, useremo una flag diversa.

$ rsync -v -a primario/ target

-UN: Una bandiera combinata che sta per "archivio".

Usando questo flag, RSYNC sincronizzerà il contenuto in modo ricorsivo mentre preserva eventuali file simbolici, speciali/dispositivi, tempi di modifica, autorizzazioni di file, gruppo, proprietario, ecc. È più comunemente usato della flag "-r". Per l'archivio, questo è un metodo più consigliato.

Hai notato che in tutti i comandi che abbiamo eseguito finora, nel caso della fonte, manteniamo sempre il "/" dopo il nome della directory? Questo per dire a rsync che la fonte è tutto il contenuto della directory di origine. Se non viene utilizzato il "/" alla fine della directory di origine, RSYNC creerà semplicemente una copia della directory di origine anziché il suo contenuto.

Dai un'occhiata con un esempio.

$ rsync -v -a obiettivo primario

Controlla il risultato dell'output.

$ Tree Target/

Il più delle volte, questo non è qualcosa di cui abbiamo bisogno. Tuttavia, a seconda della situazione, potrebbe tornare utile.

RSYNC Test Run

Prima di eseguire un comando RSYNC, è sempre importante verificare che il comando eseguirà l'azione come previsto. Se si desidera testare l'azione RSYNC per un determinato comando, usa il flag "-n" o "-dry-run".

$ rsync -Avn Primary/ Target
$ rsync -Avn Primary Target

Qui, l'output mostra cosa avrebbe eseguito Rsync se il comando fosse effettivamente eseguito. Ogni volta che stai testando, non dimenticare di usare il flag "-v" per ottenere una rappresentazione accurata di ciò che sta accadendo.

RSYNC su una connessione remota

Questa è un'altra caratteristica interessante supporta Rsync. Se la posizione di backup è da qualche parte remota, è possibile configurare facilmente RSYNC per eseguire il backup nella posizione remota tramite SSH. Tuttavia, entrambe le macchine devono avere RSYNC installato. Inoltre, entrambi i sistemi devono anche impostare le chiavi SSH.

Pronto? Iniziamo. Inizialmente, è la sincronizzazione dell'archivio.

$ rsync -a @:<
destinazione_dir>

Qui, questa operazione è chiamata "push" perché spinge una directory dal sistema locale a un sistema remoto. Il contrario è noto come "pull".

$ rsync -a @:

RSYNC tratta il primo argomento come la fonte, il secondo come la destinazione.

Opzioni utili RSYNC

RSYNC supporta un sacco di opzioni. Tutti servono al proprio scopo. Tuttavia, per la maggior parte, solo una manciata viene utilizzata per la maggior parte del tempo. In questa sezione, diamo un'occhiata ad alcune utili opzioni RSYNC.

Il più delle volte, i file che stai per sincronizzazione non sono compressi. Usando la compressione, puoi risparmiare sia tempo che larghezza di banda al costo di un po 'di potenza di elaborazione extra. RSYNC offre la compressione per impostazione predefinita. Per eseguire la sincronizzazione compressa, utilizzare il flag "-z".

$ rsync -avz

Questa bandiera interessante combina la funzione sia della flag "-progress" che "-parziale". Il primo è mostrare una barra di avanzamento del trasferimento e la seconda è consentire il riesame del trasferimento interrotto. Entrambe queste caratteristiche sono combinate nella flag "-p".

$ rsync -avzp

Ora, controlliamo come RSYNC gestisce il file Syncing in modo intelligente. Esegui nuovamente il comando precedente.

$ rsync -avzp

Qui, rsync non ha ricaricato tutti i file. Invece, ha saltato quelli che non sono cambiati affatto. In questo esempio, ha saltato tutti i file poiché tutti sono presenti nella directory di destinazione.

Cosa succede se hai eliminato un file dalla directory di origine? Per impostazione predefinita, RSYNC non eliminerà nulla dalla directory di destinazione. Per forzare i file di eliminare RSYNC, utilizzare il flag "-delete". Tuttavia, usa l'esecuzione a secco per testare se il comando funziona come desideri.

$ rsync -avn - -delete

Per impostazione predefinita, RSYNC sincronizzerà ogni singolo file/directory dall'origine alla directory di destinazione. In alcune situazioni, potresti voler includere/escludere alcuni file dalla sincronizzazione. RSYNC offre opzioni utili come "-exclude" e "-include" per escludere/includere alcuni file. Passare il modello di file come valore per questi argomenti.

$ rsync -avn --exclude = --include =

Puoi anche definire la dimensione del file più grande che RSYNC dovrebbe sincronizzare. Per fare ciò, utilizzare il flag "-max-size" seguito dalla dimensione del file.

$ rsync -avn - -max -size = '10k'

Rsync ha un'altra caratteristica interessante nella manica. Non ha più bisogno del file di origine dopo la sincronizzazione? Rsync può farlo, nessun problema. Tuttavia, assicurati di non eseguire rsync con flag "-delete". Altrimenti, RSYNC eliminerà i file sincronizzati dalla destinazione!

$ RSYNC -AV-REMOVE-SOURCE-FILES

Pensieri finali

Questi sono solo uno scenario comune e semplice di utilizzo di rsync. Offre molto di più. È possibile automatizzare le operazioni RSYNC utilizzando il demone RSYNC o altri script. Spero che questa guida sia stata utile per iniziare con rsync.

Interessato a più rsync? Bene, puoi usare rsync come copiatrice di file. È più efficiente e intelligente di CP. Funzionalità e utilizzo più approfonditi sono disponibili in Rysnc Man Page.

$ MAN RSYNC

Godere!