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