Jak používat rsync k zálohování dat v systému Linux
rsync je protokol postavený pro systémy typu Unix, který poskytuje neuvěřitelnou univerzálnost pro zálohování a synchronizaci dat. Může být použita místně pro zálohování souborů do různých adresářů nebo může být nakonfigurována pro synchronizaci přes internet s jinými hostiteli.
Může být použita v systémech Windows, ale je k dispozici pouze prostřednictvím různých portů (např. Cygwin), takže v této práci budeme mluvit o nastavení na Linuxu. Nejprve musíme klienta rsync nainstalovat / aktualizovat. V distribucích Red Hat je příkaz "yum install rsync" a na Debianu je "sudo apt-get install rsync".
Příkaz na server Red Hat / CentOS po přihlášení jako root (všimněte si, že některé nedávné distribuce Red Hat podporují metodu sudo).
Příkaz na Debianu / Ubuntu.
Použití rsync pro místní zálohy
V první části tohoto tutoriálu zálohujeme soubory z adresáře 1 do adresáře2. Obě tyto adresáře jsou na stejném pevném disku, ale to by fungovalo přesně stejně, kdyby existovaly adresáře na dvou různých discích. Existuje několik různých způsobů, jak se k tomu dostat, v závislosti na typu záloh, které chcete konfigurovat. Pro většinu účelů stačí následující řádek kódu:
$ rsync -av --delete / Adresář1 / / Adresář2 /
Výše uvedený kód bude synchronizovat obsah adresáře1 s adresářem2 a nezůstane žádný rozdíl mezi těmito dvěma. Pokud rsync zjistí, že Directory2 má soubor, který Directory1 není, odstraní jej. Pokud rsync najde soubor, který byl změněn, vytvořen nebo smazán v adresáři 1, odráží stejné změny adresáře2.
Existuje spousta různých přepínačů, které můžete použít pro rsync a přizpůsobit je vašim specifickým potřebám. Zde je to, co výše uvedený kód říká rsync, že má zálohovat:
1. -a = rekurzivní (obnovení adresářů), odkazy (kopírování symbolických odkazů jako symbolických odkazů), permů (zachování oprávnění), časy (zachování čekací doby), skupinové (konzervativní skupina), vlastník zachovat speciální soubory.
2. -v = verbose. Důvod, proč si myslím, že je podrobnější, je tak, abyste viděli přesně to, co rsync zálohuje. Přemýšlejte o tom: Co když se váš pevný disk zhorší, a spustíte smazání souborů bez vašeho vědomí, pak spustíte skript rsync a tyto změny dojde k zálohování, čímž odstraníte všechny instance souboru, který jste nechtěli získat zbavit se?
3. -delete = Toto informuje rsync, že odstraní všechny soubory, které jsou v adresáři 2, které nejsou v adresáři1. Pokud se rozhodnete tuto volbu použít, doporučuji použít také zřetelné možnosti z výše uvedených důvodů.
Pomocí výše uvedeného skriptu je zde výstup generovaný pomocí rsync pro zálohování adresáře1 do adresáře2. Mějte na paměti, že bez podrobného přepínače neobdržíte takové podrobné informace.
Výše uvedená obrazovka nám říká, že soubory File1.txt a File2.jpg byly zjištěny buď jako nové, nebo jinak změněné z kopií existujících v adresáři2, a proto byly zálohovány. Tip Noob: Všimněte si, že na konci adresářů v mém příkazu rsync jsou na konci řádky lomítka - ty jsou nutné, nezapomeňte si je zapamatovat.
Přejdeme na několik dalších šikovných přepínačů ke konci tohoto tutoriálu, ale nezapomeňte, že pro zobrazení úplného zápisu můžete zadat "man rsync" a zobrazit úplný seznam přepínačů k použití.
To se týká i místních záloh. Jak můžete říci, rsync je velmi snadné použití. Když je používáte k synchronizaci dat s externím hostitelem přes Internet, získává se o něco složitější, ale ukážeme vám jednoduchý, rychlý a bezpečný způsob, jak to udělat.
Pomocí rsync pro externí zálohy
rsync lze na externí zálohování konfigurovat několika různými způsoby, ale přecházíme přes nejpraktičtější (nejsnadnější a nejbezpečnější) metodu tunelování rsync přes SSH. Většina serverů a dokonce mnoho klientů již má SSH a může být použito pro vaše zálohy rsync. Ukážeme vám proces získání jednoho zařízení Linux k zálohování na jiné v lokální síti. Proces by byl úplně stejný, kdyby někde na internetu byl někdo jiný, stačí poznamenat, že port 22 (nebo jakýkoli port, na kterém máte SSH nakonfigurován) by musel být přesměrován na jakékoliv síťové zařízení na straně serveru.
Na serveru (počítač, který bude přijímat zálohy), ujistěte se, že jsou nainstalovány SSH a rsync.
# yum -y nainstalovat ssh rsync
# sudo apt-get nainstalovat ssh rsync
Jiné než instalace SSH a rsync na serveru, vše, co opravdu potřebujete udělat, je nastavení repozitářů na serveru, kde chcete soubory zálohovat a ujistěte se, že SSH je uzamčena. Ujistěte se, že uživatel, který hodláte používat, má složité heslo a může být také dobré přepnout port, který SSH naslouchá (výchozí je 22).
Spustíme stejný příkaz, jaký jsme použili pro použití rsync v místním počítači, ale zahrnuli potřebné doplňky pro tunelování rsync přes SSH na server v mé místní síti. Pro uživatele "geek" připojením k "192.168.235.137" a pomocí stejných přepínačů jako výše (-av -delete) spustíme následující:
$ rsync -av -delete -e ssh / Adresář1 / [email protected]: / Directory2 /
Pokud máte naslouchání SSH na jiném portu než 22, je třeba zadat číslo portu, například v tomto příkladu, kde používám port 12345:
$ rsync -av -delete -e 'ssh -p 12345' / Adresář1 / [email protected]: / Directory2 /
Jak můžete vidět na obrazovce výše, výstup dat při zálohování v síti je téměř stejný jako při zálohování lokálně, jediná věc, která se změní, je příkaz, který používáte. Všimněte si také, že se zobrazí výzva k zadání hesla. Toto je pro autentizaci pomocí SSH. K tomuto kroku můžete nastavit klávesy RSA, což také zjednoduší automatizaci rsync.
Automatizace záloh rsync
Cron lze použít v systému Linux k automatizaci provádění příkazů, jako je rsync. Pomocí Cronu můžeme náš systém Linux spustit noční zálohy, nebo často byste chtěli, aby běhali.
Chcete-li upravit soubor tabulky cron pro uživatele, který jste přihlášeni jako, spusťte:
$ crontab -e
Pro editaci tohoto souboru budete potřebovat znát vi. Zadejte "I" pro vložení a poté začněte upravovat soubor tabulky cron.
Cron používá následující syntaxi: minuta hodiny, hodina dne, den v měsíci, měsíc roku, den v týdnu, příkaz.
Může to být nejprve trochu zmatené, a tak vám dovolím ukázat. Následující příkaz spustí příkaz rsync každou noc v 10:00:
0 22 * * * rsync -av --delete / adresář1 / / adresář2 /
První "0" určuje minutu hodiny a "22" udává 10 PM. Protože chceme, aby byl tento příkaz spuštěn denně, zanecháme zbytek polí s hvězdičkami a vložíme příkaz rsync.
Po dokončení konfigurace aplikace Cron stiskněte klávesu escape a zadejte příkaz ": wq" (bez uvozovek) a stiskněte klávesu enter. Tím se vaše změny uloží do vi.
Cron může dostat mnohem více do hloubky, než tohle, ale jít dál by to bylo mimo rozsah tohoto tutoriálu. Většina lidí bude chtít jen jednoduché týdenní nebo denní zálohování a to, co jsme ukázali, můžete snadno dosáhnout toho. Další informace o společnosti Cron naleznete na stránkách mana.
Další užitečné funkce
Další užitečná věc, kterou můžete udělat, je umístit zálohy do zipového souboru. Budete muset specifikovat, kam byste chtěli umístit soubor zip, a poté rsync adresář do záložního adresáře. Například:
$ zip /ZipFiles/archive.zip / Adresář1 / && rsync -av --delete / ZipFiles / / Directory2 /
Příkaz výše přebírá soubory z Adresáře1, umístí je do adresáře /ZippedFiles/archive.zip a potom rsyncs tento adresář do Adresáře2. Zpočátku si možná myslíte, že tato metoda se ukáže jako neúčinná pro velké zálohy, jelikož soubor zip se bude měnit při každém nejmenším změně souboru. Rsync však přenáší pouze změněné údaje, takže pokud je váš soubor zip 10 GB a poté přidáte textový soubor do adresáře Directory1, rsync bude vědět, že je to vše, co jste přidali (i když je to v zipu) a přenášet pouze několik kilobajtů změněných dat.
Existuje několik různých způsobů, jak šifrovat vaše zálohy rsync. Nejjednodušší metodou je instalace šifrování na samotný pevný disk (ten, s nímž jsou vaše soubory zálohovány). Další možností je šifrování souborů před jejich odesláním na vzdálený server (nebo jiný pevný disk, bez ohledu na to, do čeho se zálohujete). Tyto metody pokryjeme v pozdějších článcích.
Bez ohledu na volby a funkce, které si vyberete, se rsync stává jedním z nejúčinnějších a nejvhodnějších nástrojů pro zálohování dat, a dokonce i jednoduchý rsync skript vám může ušetřit ztrátu dat.