GNU/Linux >> Linux Esercitazione >  >> Linux

Strumenti di amministratore di sistema:utilizzo di rsync per gestire il backup, il ripristino e la sincronizzazione dei file

Come amministratore di sistema, dedico la maggior parte delle mie energie a due cose (oltre a assicurarmi che ci sia il caffè):preoccuparmi di avere backup e capire il modo più semplice e migliore per fare le cose. Uno dei miei strumenti preferiti per risolvere entrambi i problemi si chiama rsync .

Rsync è stato creato da una delle stesse persone che hanno inventato la samba, Andrew Tridgell. È uno strumento così utile e flessibile che è incluso in ogni versione di Linux ed è stato portato su altri sistemi operativi. Più semplicemente, rsync è uno strumento per copiare file. Tuttavia, è molto più potente di così.

  • Mantiene due set di file aggiornati e sincronizzati.
  • Esegui come comando e può essere sottoposto a script.
  • Comprime e crittografa il flusso di dati.
  • Utilizza diversi tipi di client di accesso remoto (SSH e RSH, ad esempio).

Quindi non sorprende che sia uno dei preferiti di molti amministratori di sistema.

Le basi

Come il mv e cp comando, nella sua forma più elementare rsync ha solo bisogno di una fonte e di una destinazione:

[root@milo enable]# rsync ./foo/testfoo ./bar/

[root@milo enable]# ls -ilR
.:
total 8
5079202 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 15:15 bar
5079201 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 15:08 foo

./bar:
total 8
5001398 -rw-rw-r-- 1 skipworthy skipworthy 8 Jun 11 15:08 testbar
4982446 -rw-rw-r-- 1 root       root       8 Jun 11 15:15 testfoo

./foo:
total 4
5001268 -rw-rw-r-- 1 skipworthy skipworthy 8 Jun 11 15:08 testfoo

Abbiamo copiato testfoo alla bar directory. Niente di grave, davvero.

Ora aggiungiamo un file a ./foo e risincronizza:

[root@milo enable]# touch ./foo/bat.txt

[root@milo enable]# rsync ./foo/* ./bar/
[root@milo enable]# ls -ilR
.:
total 8
5079202 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 15:45 bar
5079201 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 15:25 foo

./bar:
total 8
4992599 -rw-r--r-- 1 root       root       0 Jun 11 15:45 bat.txt
5001398 -rw-rw-r-- 1 skipworthy skipworthy 8 Jun 11 15:08 testbar
4992604 -rw-rw-r-- 1 root       root       8 Jun 11 15:45 testfoo

./foo:
total 4
5002591 -rw-r--r-- 1 root       root       0 Jun 11 15:25 bat.txt
5001268 -rw-rw-r-- 1 skipworthy skipworthy 8 Jun 11 15:08 testfoo

A questo punto, vogliamo sottolineare un paio di cose. Innanzitutto, quando abbiamo eseguito nuovamente rsync , ha ricopiato testfoo e aggiornato il atime . Inoltre, ogni volta che copia un file, assegna al file un nuovo inode numero. Pertanto, per quanto riguarda il filesystem, è un file completamente diverso (perché è—ha copiato tutto le informazioni ogni volta). Infine, nota che quando rsync il file, cambia la proprietà all'utente che ha eseguito il comando (root, in questo caso).

Tutto questo è importante se vogliamo fare dei backup. Questo comportamento è lo stesso di cp comando. Possiamo anche usare il cp comando per copiare le directory in modo ricorsivo, oltre a preservare gli attributi e la proprietà. La grande differenza è che rsync può fare un checksum del file e confrontare i file di origine e di destinazione, dove cp guarda solo atime valore. Rsync La funzionalità aggiuntiva di è utile per preservare l'integrità del backup (ne parleremo più avanti in questa serie).

Quindi aggiorniamo solo uno di questi file e vediamo cosa rsync fa:

[root@milo enable]# echo 'this is new text'>>./foo/testfoo
 
[root@milo enable]# ls -al ./foo
 
-rw-rw-r-- 1 skipworthy skipworthy   25 Jun 11 16:13 testfoo

[root@milo enable]# rsync -aruv ./foo/* ./bar/
sending incremental file list
testfoo

sent 194 bytes  received 35 bytes  458.00 bytes/sec
total size is 25  speedup is 0.11

[root@milo enable]# ls -ilR
.:
total 8
5079202 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 16:16 bar
5079201 drwxrwxr-x 2 skipworthy skipworthy 4096 Jun 11 15:56 foo

./bar:
total 8
4992599 -rw-r--r-- 1 root       root        0 Jun 11 15:45 bat.txt
4998080 -rw-r--r-- 1 root       root        0 Jun 11 15:56 footoo.txt
5001398 -rw-rw-r-- 1 skipworthy skipworthy  8 Jun 11 15:08 testbar
4983541 -rw-rw-r-- 1 skipworthy skipworthy 25 Jun 11 16:13 testfoo

./foo:
total 4
5002591 -rw-r--r-- 1 root       root        0 Jun 11 15:25 bat.txt
4997949 -rw-rw-r-- 1 skipworthy skipworthy  0 Jun 11 15:56 footoo.txt
5001268 -rw-rw-r-- 1 skipworthy skipworthy 25 Jun 11 16:13 testfoo

Nota che questa volta abbiamo usato alcuni interruttori:

  • -a Modalità archivio, conserva mtime , autorizzazioni e collegamenti simbolici.
  • -r Modalità ricorsiva, esegue il drill-down in tutte le directory e le sincronizza (dovrebbe essere ridondante con -a switch, ma lo specifico sempre comunque).
  • -u Aggiorna i file solo se mtime sulla fonte è più recente.
  • -v Modalità dettagliata, ti dice cosa sta facendo (è sempre bello poter monitorare cosa sta succedendo. Un altro trucco utile è reindirizzare questo output su un file e controllarlo in un secondo momento).

Ripristina file con rsync

Quindi facciamo finta che siano trascorse qualche settimana. Il CFO chiama e dice che qualcosa non va:nella sua directory /foo mancano molti file.

./foo:
total 8
5002591 -rw-r--r-- 1 root       root        0 Jun 11 15:25 bat.txt
4997949 -rw-rw-r-- 1 skipworthy skipworthy 33 Jul 24 15:32 footoo.txt
5001268 -rw-rw-r-- 1 skipworthy skipworthy 25 Jun 11 16:13 testfoo

Diamo un'occhiata ai backup e vediamo i file mancanti:

./bar:
total 12
4992599 -rw-r--r-- 1 root       root        0 Jun 11 15:45 bat.txt
4994298 -rw-rw-r-- 1 skipworthy skipworthy 33 Jul 24 15:32 footoo.txt
4994359 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles1.txt
4994367 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles2.txt
4994374 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles3.txt
4994413 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles4.txt
5001398 -rw-rw-r-- 1 skipworthy skipworthy  8 Jun 11 15:08 testbar
4983541 -rw-rw-r-- 1 skipworthy skipworthy 25 Jun 11 16:13 testfoo

Un rapido rsync ripristinare:

[root@milo enable]# rsync -aruv ./bar/* ./foo
sending incremental file list
bat.txt
laterfiles1.txt
laterfiles2.txt
laterfiles3.txt
laterfiles4.txt
testbar

E:

./foo:
total 12
4994387 -rw-r--r-- 1 root       root        0 Jun 11 15:45 bat.txt
4997949 -rw-rw-r-- 1 skipworthy skipworthy 33 Jul 24 15:32 footoo.txt
4994562 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles1.txt
4994564 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles2.txt
4994565 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles3.txt
4994567 -rw-r--r-- 1 root       root        0 Jul 24 15:31 laterfiles4.txt
4994579 -rw-rw-r-- 1 skipworthy skipworthy  8 Jun 11 15:08 testbar
5001268 -rw-rw-r-- 1 skipworthy skipworthy 25 Jun 11 16:13 testfoo

I file mancanti vengono ripristinati o aggiornati dai backup più recenti, ma i file esistenti, che non sono stati modificati, vengono lasciati soli. Inoltre, tieni presente che la proprietà di footoo.txt è stato conservato.

Concludi

Ti incoraggio a dare un'occhiata (come sempre) alla pagina man di rsync e prova questo utile comando.

Ecco alcune altre opzioni da considerare:

  • -r (ricorsivo)
  • -b (backup)
  • -R (parente)
  • -u (aggiornamento - copia solo i file modificati)
  • -P (avanzamento)
  • -c (comprimere)
  • -p (conserva i permessi)

Nel prossimo articolo di questa serie, andremo un po' oltre e esamineremo rsync remoto e alcune delle altre funzionalità più avanzate di questo comando.

[ Corso online gratuito:panoramica tecnica di Red Hat Enterprise Linux. ]


Linux
  1. Gestisci l'avvio usando systemd

  2. Guida di Ansible:gestisci i file utilizzando Ansible

  3. MySQL:come eseguire il backup (scaricare) e ripristinare il database utilizzando mysqldump

  4. Come eseguire il backup e il ripristino del database MySQL utilizzando la riga di comando

  5. Linux ext4 ripristina i diritti di accesso a file e directory dopo un backup/ripristino errato

Come eseguire il backup e il ripristino della scheda SD per Raspberry Pi

Come eseguire il backup e il ripristino dei dati utilizzando Restic in Linux

Come eseguire il backup e il ripristino di file utilizzando BorgBackup in Linux

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

Backup e ripristino delle applicazioni Ubuntu utilizzando Aptik

Come utilizzare Timeshift per eseguire il backup e il ripristino di Linux