GNU/Linux >> Linux Esercitazione >  >> Linux

Mantenere sincronizzati file e directory Linux con rsync

Gli amministratori (o gli utenti normali) spesso devono eseguire il backup dei file o mantenerli sincronizzati tra più posizioni (inclusi locali e remoti) senza trasferire e sovrascrivere ogni volta tutti i file sulla destinazione. Uno degli strumenti più utili nella cintura di un amministratore di sistema per questo tipo di attività è rsync .

Il rsync lo strumento può navigare in modo ricorsivo in una struttura di directory e aggiornare una seconda posizione con qualsiasi file nuovo/modificato/rimosso. Verifica se i file esistono nella destinazione prima di inviarli, risparmiando larghezza di banda e tempo per tutto ciò che salta. Inoltre, rsync offre la possibilità di sincronizzare una struttura di directory (o anche un singolo file) con un'altra destinazione, locale o remota. Per farlo in modo efficiente, per impostazione predefinita, controllerà i tempi di modifica dei file. Può anche eseguire un rapido controllo hash dei file sull'origine e sulla destinazione per determinare se è necessario trasferire o meno una nuova copia, risparmiando eventualmente tempo e larghezza di banda significativi.

[ Potrebbe interessarti anche: 5 suggerimenti avanzati di rsync per gli amministratori di sistema Linux ]

Dal momento che viene fornito con la maggior parte delle distribuzioni Linux per impostazione predefinita, dovrebbe essere facile iniziare. Questo è anche il caso di macOS, *BSD e altri sistemi operativi simili a Unix. Lavorare con rsync è facile e può essere utilizzato sulla riga di comando, negli script e alcuni strumenti lo racchiudono in una bella interfaccia utente per la gestione delle attività.

Sulla riga di comando, rsync viene generalmente invocato utilizzando una manciata di parametri per definire come dovrebbe comportarsi poiché è uno strumento flessibile. Nella sua forma più semplice, rsync può essere detto di garantire che un file in una posizione dovrebbe essere lo stesso in una seconda posizione in un filesystem.

Esempio:

# rsync file1.txt file2.txt

Normalmente è desiderabile passare rsync alcuni parametri per garantire che le cose si comportino nel modo in cui un essere umano si aspetterebbe che si comportassero. Passaggio di parametri come -a per "archivio" è abbastanza comune in quanto è un "meta-parametro" che invoca automaticamente una manciata di altri per te. Il -a è equivalente a -rlptgoD , che si divide in:

  • -r :ricorre attraverso le directory (invece di lavorare solo sui file nella directory corrente)
  • -l :Copia i link simbolici come nuovi link simbolici
  • -p :conserva le autorizzazioni
  • -t :preserva i tempi di modifica
  • -g :preserva la proprietà del gruppo
  • -o :preserva la proprietà dell'utente (che è limitata ai soli superutenti quando si tratta di file di altri utenti)
  • -D :copia i file del dispositivo

Spesso funziona come desidera l'utente e non sono necessarie modifiche significative. Tuttavia, alcuni di questi potrebbero essere contrari a ciò di cui un utente ha bisogno, quindi suddividerlo nella funzionalità specifica potrebbe essere la risposta giusta.

Altre opzioni degne di nota includono:

  • -n :esegui il comando a secco senza trasferire file
  • --list-only :mostra solo l'elenco dei file che rsync trasferirebbe
  • -P :mostra lo stato di avanzamento per file
  • -v :mostra lo stato di avanzamento generale, generando informazioni su ciascun file man mano che lo completa
  • -u :Salta l'aggiornamento dei file di destinazione se sono più recenti dell'origine
  • -q :Modalità silenziosa. Utile per l'inclusione nello scripting quando l'output del terminale non è richiesto
  • -c :utilizza un valore di checksum per determinare quali file ignorare, anziché l'ora e la dimensione della modifica
  • --existing :aggiorna solo i file, ma non crearne di nuovi mancanti
  • --files-from=FILE :legge i file di origine dell'elenco da un file di testo
  • --exclude=PATTERN :usa PATTERN per escludere i file dalla sincronizzazione
  • --exclude-from=FILE :Come sopra, ma letto da un file
  • --include=PATTERN :utilizzato anche per negare le regole di esclusione
  • --include-from=FILE :Come sopra, ma letto da un file

Il mio set di parametri predefinito personale per rsync finisce per essere -avuP (archivia, output dettagliato, aggiorna solo i nuovi file e mostra lo stato di avanzamento del lavoro).

Fonte e obiettivi

L'origine e la destinazione della sincronizzazione sono file e directory. Inoltre, rsync fornisce la funzionalità per interagire con i sistemi remoti su SSH, il che impedisce all'utente di dover configurare condivisioni di rete per poter sincronizzare i file da un luogo all'altro. Ciò significa che puoi facilmente scrivere rsync job dopo aver configurato le chiavi SSH su entrambe le estremità, eliminando la necessità di accedere manualmente per la sincronizzazione dei file in remoto.

Esempio:

Scomposizione della sintassi qui:

  • Esecuzione di rsync comando
  • Con il -avuP parametri sopra descritti
  • Per copiare la directory Documenti locale
  • Utilizzo di steve come utente sul sistema remoto
  • Dove il sistema remoto è chiamato fileserver e può essere raggiunto con quel nome
  • E il percorso relativo dalla casa di steve è mostrato dopo il : - e in questo caso, significa metterlo nella directory home di steve stessa

Questo copia tutto dalla cartella Documenti di Steve alla directory Documenti sul sistema remoto, aggiornando solo i file che sono cambiati o sono nuovi. È sufficiente eseguire questa volta (fino a quando non ci sono nuove modifiche). Eseguirlo di nuovo subito dopo dovrebbe produrre relativamente la stessa quantità di output ma essere molto più veloce perché salta tutti i file.

[ Manuale dell'utente dell'API:7 best practices per programmi API efficaci ] 

Concludi

Esistono molti modi utili per sfruttare la potenza di rsync . Spesso è semplice come eseguirlo dalla riga di comando una tantum per copiare un set di file senza doversi preoccupare di perdere tempo a copiare elementi che già esistono nella destinazione. Scripting questo, aggiungendolo a cron lavori e sperimentare parametri diversi aiuta a raggiungere ancora più obiettivi per l'amministratore di sistema medio.


Linux
  1. Trova file e directory in Linux come un professionista

  2. Trova i file e le directory più grandi in Linux

  3. Sincronizzare le directory in entrambe le direzioni con Rsync?

  4. Linux Elimina file e directory

  5. Come trasferire file in Linux con SCP e Rsync

Comando Ls in Linux (Elenca file e directory)

Come escludere file e directory con Rsync

Come comprimere file e directory in Linux

Come eseguire il backup di file e directory utilizzando Rsync in Linux

Trova facilmente file e directory su Linux

Nozioni di base sulla riga di comando di Linux:lavorare con file e directory