GNU/Linux >> Znalost Linux >  >> Linux

Nástroje správce systému:Používání nástroje rsync ke správě zálohování, obnovy a synchronizace souborů

Jako správce systému utrácím většinu své energie na dvě věci (kromě zajištění kávy):Starost o zálohování a vymýšlení nejjednoduššího a nejlepšího způsobu, jak věci dělat. Jeden z mých oblíbených nástrojů pro řešení obou problémů se nazývá rsync .

Rsync vytvořil jeden ze stejných lidí, kteří vynalezli Sambu, Andrew Tridgell. Je to tak užitečný a flexibilní nástroj, že je součástí každé verze Linuxu a byl přenesen do jiných operačních systémů. Nejjednodušeji, rsync je nástroj pro kopírování souborů. Je však mnohem výkonnější.

  • Udržuje dvě sady souborů aktuální a synchronizované.
  • Spouští se jako příkaz a lze jej skriptovat.
  • Komprimuje a šifruje datový proud.
  • Používá několik typů klientů vzdáleného přístupu (například SSH a RSH).

Není tedy překvapením, že je oblíbený u mnoha systémových administrátorů.

Základy

Stejně jako mv a cp příkaz ve své nejzákladnější podobě rsync potřebuje pouze zdroj a cíl:

[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

Zkopírovali jsme testfoo na bar adresář. Nic velkého, opravdu.

Nyní přidáme soubor do ./foo a znovu synchronizovat:

[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

V tomto bodě bychom chtěli upozornit na několik věcí. Za prvé, když znovu spustíme rsync , znovu zkopíroval testfoo a aktualizoval atime . Také pokaždé, když zkopíruje soubor, přidělí souboru nový inode číslo. Proto, pokud jde o souborový systém, je to úplně jiný soubor (protože je – zkopíroval všechny informace pokaždé). Nakonec si všimněte, že když rsync souboru, změní vlastnictví na uživatele, který příkaz provedl (v tomto případě root).

To vše je důležité, pokud chceme zálohovat. Toto chování je stejné jako u cp příkaz. Můžeme také použít cp příkaz pro rekurzivní kopírování adresářů a také zachování atributů a vlastnictví. Velký rozdíl je v tom, že rsync může provést kontrolní součet souboru a porovnat zdrojové a cílové soubory, kde cp stačí se podívat na atime hodnota. Rsync další funkce jsou užitečné pro zachování integrity zálohy (integritě se budeme věnovat později v této sérii).

Pojďme tedy aktualizovat pouze jeden z těchto souborů a uvidíme, co rsync dělá:

[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

Všimněte si, že tentokrát jsme použili některé přepínače:

  • -a Režim archivace, zachovává mtime , oprávnění a symbolické odkazy.
  • -r Rekurzivní režim, proniká do všech adresářů a synchronizuje je (mělo by být redundantní s -a přepínač, ale stejně ho vždy specifikuji).
  • -u Aktualizuje soubory pouze v případě mtime na zdroji je novější.
  • -v Podrobný režim vám řekne, co dělá (vždy je fajn mít možnost sledovat, co se děje. Dalším užitečným trikem je nasměrovat tento výstup do souboru a zkontrolovat ho později).

Obnovte soubor pomocí rsync

Takže předstírejme, že je to o pár týdnů později. CFO volá a říká, že něco není v pořádku – v jeho adresáři /foo chybí mnoho souborů.

./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

Podíváme se na zálohy a uvidíme chybějící soubory:

./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

Rychlý rsync obnovit:

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

A:

./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

Chybějící soubory jsou obnoveny nebo aktualizovány z novějších záloh, ale stávající soubory – které se nezměnily – jsou ponechány samotné. Všimněte si také, že vlastnictví souboru footoo.txt byl zachován.

Sbalit

Doporučuji vám podívat se (jako vždy) na manuálovou stránku pro rsync a vyzkoušejte tento užitečný příkaz.

Zde je několik dalších přepínačů, které je třeba zvážit:

  • -r (rekurzivní)
  • -b (zálohy)
  • -R (příbuzný)
  • -u (aktualizace – kopírování pouze změněných souborů)
  • -P (pokrok)
  • -c (komprimovat)
  • -p (zachovat oprávnění)

V dalším článku této série půjdeme trochu dále a podíváme se na vzdálený rsync a některé další pokročilejší funkce tohoto příkazu.

[ Bezplatný online kurz:Technický přehled Red Hat Enterprise Linux. ]


Linux
  1. MySQL:Jak zálohovat (vypsat) a obnovit databázi pomocí mysqldump

  2. Zálohování a obnova databáze MySQL pomocí mysqlhotcopy

  3. Pomocí možností Rsync zahrnout a vyloučit zahrnout adresář a soubor podle vzoru

  1. Spravujte spouštění pomocí systemd

  2. Ansible Guide:Správa souborů pomocí Ansible

  3. Linux ext4 obnovit přístupová práva k souborům a adresářům po špatném zálohování/obnovení

  1. Jak zálohovat a obnovit nastavení aplikací pomocí Mackupu na nově nainstalovaném systému Linux

  2. Jak zálohovat a obnovit úložiště SVN v Linuxu

  3. Jak zálohovat a obnovit databázi MySQL pomocí příkazového řádku