17Aug

Příručka pro začátečníky pro synchronizaci dat s nástrojem Rsync

click fraud protection

Protokol rsync může být docela jednoduchý pro běžné zálohování / synchronizaci, ale některé z jeho pokročilejších funkcí vás mohou překvapit. V tomto článku ukážeme, jak mohou i největší držitelé dat a záložní nadšenci řídit rsync jako jediné řešení pro všechny jejich potřeby redundance dat.

Upozornění: Pokročilé Geeks Pouze

Pokud jste seděli tam myšlení "Co je heck rsync?" Nebo "Používám pouze rsync pro opravdu jednoduché úkoly", možná budete chtít podívat na náš předchozí článek o tom, jak používat rsync pro zálohovánívaše data na Linuxu, která uvádí úvod do rsync, vás provede instalací a předvede své základní funkce. Jakmile budete mít pevné uchopení, jak používat rsync( upřímně, to není tak složité) a jsou pohodlné s terminálem Linux, jste připraveni se přesunout k tomuto pokročilému průvodce.

Spuštění rsync v systému Windows

Za prvé, dostaneme naše čtečky Windows na stejné stránce jako naši guru Linux. Přestože rsync je vytvořen tak, aby fungoval na systémech podobných systému Unix, není důvod, proč byste jej neměli používat stejně snadno ve Windows. Cygwin vytváří skvělé linuxové rozhraní API, které můžeme použít k spuštění rsync, a tak se přesuňte na své webové stránky a stáhněte si 32bitovou nebo 64bitovou verzi v závislosti na vašem počítači.

instagram viewer

Instalace je přímá;můžete mít všechny výchozí hodnoty, dokud se nedostanete na obrazovku "Vybrat balíčky".

Nyní musíte udělat stejné kroky pro Vim a SSH, ale balíčky budou vypadat trochu jinak, když jdete vybrat je, takže zde jsou některé screenshoty:

Instalace Vim:

Instalace SSH:

vyberete tyto tři balíčky, pokračujte kliknutím na další, dokud nedokončíte instalaci. Potom můžete Cygwin otevřít kliknutím na ikonu, kterou instalátor umístí na plochu.

rsync Příkazy: Jednoduché až pokročilé

Nyní, když jsou uživatelé Windows na stejné stránce, podívejme se na jednoduchý příkaz rsync a ukážeme, jak může být použití některých pokročilých přepínačů rychle zkompletováno.

Řekněme, že máte spoustu souborů, které je třeba zálohovat - kdo v těchto dnech není?Připojíte přenosný pevný disk, abyste mohli zálohovat soubory počítače a zadejte následující příkaz:

rsync -a /home/geek/files/ /mnt/usb/files/

Nebo to, jak by vypadalo na počítači se systémem Windows se systémem Cygwin:

rsync -a /cygdrive/c/files/ /cygdrive/e/files/

Docela jednoduché atento bod skutečně není potřeba používat rsync, protože byste mohli soubory přetahovat a pustit. Pokud však váš druhý pevný disk již obsahuje některé soubory a potřebuje pouze aktualizované verze a soubory, které byly vytvořeny od poslední synchronizace, je tento příkaz užitečný, protože odesílá pouze nová data na pevný disk. S velkými soubory, a zejména přenosem souborů přes internet, to je velký problém.

Zálohování souborů na externí pevný disk a udržení pevného disku na stejném místě, jako je váš počítač, je velmi špatný nápad, takže se podívejme na to, co by bylo zapotřebí, abyste začali odesílat soubory přes internet do jiného počítače(ten, který jste si pronajali, rodinného příslušníka atd.).

rsync -av -delete -e 'ssh -p 12345' /home/geek/files/ [email protected]: /home/geek2/files/

Výše ​​uvedený příkaz pošle vaše soubory do jiného počítače s adresou IP 10.1.1.1.Byla by odstraněna cizí soubory z cílového adresáře, které již neexistují ve zdrojovém adresáři, výstupní převáděné názvy souborů, takže máte představu o tom, co se děje, a tunel rsync přes SSH na portu 12345.

-a -v -e -- přepínače jsou některé z nejzákladnějších a běžně používaných;měli byste již o nich vědět hodně, pokud čtete tento tutoriál. Podívejme se na některé další přepínače, které jsou někdy ignorovány, ale neuvěřitelně užitečné:

- progress - Tento přepínač nám umožňuje vidět průběh přenosu každého souboru. Je to obzvláště užitečné při přenosu velkých souborů přes internet, ale může přenášet nesmyslné množství informací při přenosu malých souborů přes rychlou síť.

Příkaz rsync s přepínačem --progress jako záloha probíhá:

- part - Jedná se o další přepínač, který je obzvláště užitečný při přenosu velkých souborů přes internet. Pokud se rsync přeruší z jakéhokoli důvodu uprostřed přenosu souborů, částečně přenesený soubor je uložen v cílovém adresáři a přenos pokračuje tam, kde se vypne po opětovném spuštění příkazu rsync. Při přenosu velkých souborů přes internet( řekněme několik gigabajtů) není nic horšího, než jen několik sekund internetového výpadku, modré obrazovky nebo lidské chyby, která způsobí, že se váš soubor přenese a začne znovu.

-P - tento přepínač kombinuje --progress a -partial, takže jej použijte místo toho a váš příkaz rsync bude trochu lepší.

-z nebo --compress - Tímto přepínačem bude soubor rsync komprimovat při jeho přenášení, čímž se sníží množství dat, která mají být odeslána do cílového místa. Je to vlastně poměrně běžný přepínač, ale není dalekosáhlý, ale opravdu tě těží z přenosů mezi pomalými připojeními a nedělá nic pro následující typy souborů: 7z, avi, bz2, deb, g, z iso, jpeg, jpg,mov, mp3, mp4, ogg, rpm, tbz, tgz, z, zip.

-h nebo - člověk čitelný - Pokud používáte přepínač - progress, určitě budete chtít použít i tento. To znamená, že pokud nechcete konvertovat bajty na megabajty za letu. Přepínač -h převede všechna vyvedená čísla na formát čitelný pro člověka, takže můžete skutečně rozumět množství přenášených dat.

-n nebo -dry-run - Tento přepínač je nezbytný k tomu, abyste věděli, kdy nejprve píšete rsync skript a testujete jej. Vykonává zkušební provoz, ale ve skutečnosti nezmění - budoucí změny se stále vysílají jako normální, takže si můžete přečíst vše a ujistěte se, že to vypadá dobře, než začne skript do výroby.

-R nebo --relative - Tento přepínač musí být použit, pokud cílový adresář dosud neexistuje. Tuto volbu použijeme později v této příručce, abychom mohli v adresáři vytvořit adresáře na cílovém počítači s časovými razítky.

--exclude-from - Tento přepínač slouží k propojení na seznam vyloučení, který obsahuje adresářové cesty, které nechcete zálohovat. Potřebuje prostý textový soubor s adresářem nebo cestou souboru na každém řádku.

- include-from - Podobně jako --exclude-from, ale odkazuje na soubor, který obsahuje adresáře a cesty souborů dat, které chcete zálohovat.

--staty - Není to opravdu důležitý přepínač jakýmkoli způsobem, ale pokud jste sysadmin, může být užitečné znát detailní statistiky každé zálohy, takže můžete sledovat množství přenosu odesílaného přes vaši síť a takové.

- log-file - Umožňuje odeslat výstup rsync do souboru protokolu. Rozhodně to doporučujeme pro automatické zálohování, ve kterém nejste tam, abyste si sami přečetli výstup. Vždy ukládejte soubory protokolu jednou do volného času, abyste se ujistili, že vše funguje správně.Také je rozhodujícím přepínačem pro použití sysadminu, takže se nezamlouváte, jak se vaše zálohy nezdařily, když jste opustili stážistu.

Pojďme se podívat na náš příkaz rsync, když máme přidáno několik dalších přepínačů:

rsync -avzhP --delete --stats --log-file = /home/geek/rsynclogs/ backup.log --exclude- z '/home/geek/ exclude.txt'-e 'ssh -p 12345' /home/geek/files/ [email protected]: /home/geek2/files/

Příkaz je stále velmi jednoduchý, ale stále jsme nevytvořili slušné zálohové řešení.I když jsou naše soubory nyní ve dvou různých fyzických místech, tato záloha nemá nic, co by nás ochránilo před jednou z hlavních příčin ztráty dat: lidská chyba. Zálohování

Snapshot

Pokud náhodou odstraníte soubor, virus poškodí některý z vašich souborů nebo se stane něco jiného, ​​při kterém jsou vaše soubory nežádoucím způsobem změněny, a pak spustíte skript rsync pro zálohování, záložní data jsou přepsána nežádoucími změnami. Když k takovému problému dojde( ne pokud, ale kdy), vaše řešení zálohování nic neudělalo ochranu před ztrátou dat.

Tvůrce rsync to pochopil a přidal argumenty --backup a --backup-dir, aby uživatelé mohli spustit rozdílné zálohy. První příklad na webu rsync zobrazuje skript, ve kterém je spuštěna plná záloha každých sedm dní, a změny v těchto souborech jsou denně zálohovány v samostatných adresářích. Problém s touto metodou spočívá v tom, že k obnovení souborů je nutné efektivně obnovit sedm různých časů.Navíc většina geeků provádí zálohování několikrát denně, takže můžete mít v každém okamžiku snad 20+ různých adresářů záloh. Nejen, že se vaše soubory nyní zotavují, ale dokonce i prohlížení vašich zálohovaných dat může být velmi časově náročné - měli byste vědět, kdy byl soubor naposledy změněn, abyste našli jeho nejaktuálnější zálohu. Navíc je neúčinné provozovat pouze přírůstkové zálohy týdně( nebo dokonce méně často v některých případech).

Zálohování zálohy na záchranu! Zálohování snímků nejsou nic víc než přírůstkové zálohy, ale využívají hardlinky k zachování struktury souborů původního zdroje. To může být těžké zabalit hlavu zpočátku, tak se podívejme na příklad.

Předstíráme, že máme spouštěcí skript, který automaticky spouští naše data každé dvě hodiny. Kdykoli to rsync udělá, označí každou zálohu ve formátu: Backup-month-day-year-time.

Takže na konci typického dne bychom měli mít seznam adresářů v našem cílovém adresáři takto:

Při překládání některého z těchto adresářů byste viděli každý soubor ze zdrojového adresáře přesně tak, jak tomu bylo v té době.Přesto by nebyly žádné duplikáty ve všech dvou adresářích.rsync to dosáhne pomocí hardlinkingu prostřednictvím argumentu --link-dest = DIR.

Samozřejmě, abychom měli tyto pěkně a úhledně jmenované adresářové jména, budeme muset trochu posílit náš skript rsync. Podívejme se na to, co by bylo zapotřebí k vytvoření takového zálohovacího řešení, a pak podrobněji vysvětlíme tento scénář:

#!/bin/ bash

#copy starý čas.txt na čas2.txt

ano |cp ~ /backup/ time.txt ~ /backup/ time2.txt

# přepsat starý soubor time.txt s novým časem

echo `datum +"% F-% I% p "` & gt;~ /backup/ time.txt

#make soubor protokolu

echo "" & gt;~ /backup/ rsync -data + "% F-% I% p" `.log

#rsync příkaz

rsync -avzhPR - chmod = Du = rwx, Dgo = rx, Fu = rw,-stats --log-soubor = ~ /backup/ rsync -date + "% F-% I% p" `.log --exclude-from '~ / exclude.txt' --link-dest = /home/geek2/files/` cat ~ /backup/time2.txt` -e 'ssh -p 12345' /home/geek/files/ [email protected]: /home/geek2/files/ `datum + '% F-% I% p'` /

# nezapomeňte soubor protokolu a nasaditzálohování

scp -P 12345 ~ /backup/ rsync-`cat ~ /backup/ time.txt`.log [email protected]: /home/geek2/files/ `cat ~ /backup/ time.txt` / rsync -catcat /backup/ time.txt`.log

Toby byl typický skript rsync skriptu. V případě, že jsme někde přišli o nás, pojedeme to kusem:

První řádek našeho skriptu zkopíruje obsah času.txt na čas2.txt. Zaškrtávací políčko yes potvrzuje, že chceme soubor přepsat. Dále převezmeme aktuální čas a vložíme jej do souboru time.txt. Tyto soubory budou užitečné později.

Následující řádek vytvoří soubor protokolu rsync s názvem rsync-date.log( kde datum je skutečný datum a čas).

Složitý příkaz rsync, o kterém jsme vás varovali:

-avzhPR, -e, --delete, --stats, --log-file, --exclude-from, --link-dest - Justpřepínače, o kterých jsme hovořili dříve;posuňte nahoru, pokud potřebujete aktualizaci.

--chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r - Toto jsou oprávnění pro cílový adresář.Protože děláme tento adresář uprostřed našeho rsync skriptu, musíme zadat oprávnění tak, aby k němu uživatel mohl psát soubory.

Použití datových a maticových příkazů

Přejdeme každým použitím příkazu datum a mačka uvnitř příkazu rsync v pořadí, v jakém se vyskytují.Poznámka: Jsme si vědomi, že existují i ​​další způsoby, jak tuto funkci dosáhnout, zejména s využitím deklarujících proměnných, ale pro účely této příručky jsme se rozhodli použít tuto metodu.

Soubor protokolu je zadán jako:

~ /backup/ rsync-`date + "% F-% I% p" `.log

Alternativně bychom jej mohli specifikovat jako:

~ /backup/ rsync -catcat /backup/ time.txt`.log

V každém případě by příkaz --log-file měl být schopen najít dříve vytvořený datový soubor s datem a zapsat jej.

Cílový soubor odkazu je určen jako:

- odkaz-dest = /home/geek2/files/ `cat ~ /backup/ time2.txt`

To znamená, že příkaz --link-dest je uveden v adresáři předchozí zálohy. Pokud běžíme zálohování každé dvě hodiny a je to v době, kdy jsme spustili tento skript 4:00, pak příkaz -link-dest hledá adresář vytvořený ve 14:00 a přenáší pouze data, která se od té doby změnila( jestli nějaký).

Zopakovat, proto je čas.txt zkopírován na čas2.txt na začátku skriptu, takže příkaz --link-dest může odkazovat na tento čas později.

Cílový adresář je zadán jako:

[email protected]: /home/geek2/files/ `datum + '% F-% I% p'`

Tento příkaz jednoduše umístí zdrojové soubory do adresáře s názvem aktuálního data a času.

Nakonec se ujistíme, že kopie souboru protokolu je umístěna uvnitř zálohy.

scp -P 12345 ~ /backup/ rsync -catcat ~ /backup/ time.txt`.log [email protected]: /home/geek2/files/ `cat ~ /backup/ time.txt` / rsync-`cat ~ /backup/ time.txt`.log

Používámezabezpečte kopii na portu 12345, abyste vzali protokol rsync a umístěte jej do správného adresáře. Chcete-li vybrat správný soubor protokolu a ujistit se, že skončí na správném místě, soubor time.txt musí být odkazován pomocí příkazu cat. Pokud se divíte, proč jsme se rozhodli zkracovat čas.txt namísto pouhého použití příkazu pro datum, je to proto, že při spuštění příkazu rsync se mohlo stát spousta času, abychom se ujistili, že máme správný čas.textový dokument, který jsme vytvořili dříve.

Automation

Použijte Cron na Linuxu nebo Plánovač úloh v systému Windows pro automatizaci skriptu rsync. Jedna věc, na kterou musíte být opatrná, je zajistit, abyste ukončili všechny běžné procesy rsync, než budete pokračovat v nové.Plánovač úloh se zdá, že zavírá všechny již spuštěné instance automaticky, ale pro Linux budete muset být trochu kreativnější.

Většina linuxových distribucí může použít příkaz pkill, takže si prostě nezapomeňte přidat následující informace na začátek skriptu rsync:

pkill -9 rsync

Šifrování

Ne, ještě nejsme hotovi. Nakonec máme fantastické( a zdarma!) Řešení zálohování, ale všechny naše soubory jsou stále náchylné k krádeži. Doufejme, že zálohujete soubory na nějaké místo vzdálené stovky kilometrů.Bez ohledu na to, jak bezpečné je to vzdálené místo, může být krádež a hackování vždycky problémem.

V našich příkladech jsme tunelovali celou naši službu rsync přes SSH, což znamená, že všechny naše soubory jsou zašifrovány při přepravě do místa určení.Musíme se však ujistit, že cíl je stejně bezpečný.Mějte na paměti, že rsync šifruje vaše data pouze při jejich přenášení, ale soubory jsou po otevření cílového místa otevřené.

Jednou z nejlepších vlastností rsync je to, že přenáší změny pouze v každém souboru. Pokud máte všechny soubory šifrované a provedete jednu malou změnu, celý soubor bude muset být znovu vyslán v důsledku šifrování zcela randomizovat všechna data po jakékoli změně.

Z tohoto důvodu je nejlepší / nejjednodušší použít nějaký typ šifrování disku, například BitLocker pro Windows nebo dm-crypt for Linux. Tímto způsobem jsou vaše data chráněna v případě krádeže, ale soubory mohou být přenášeny pomocí rsync a vaše šifrování nebrání výkonu. Existují další možnosti, které fungují podobně jako rsync nebo dokonce implementují nějakou formu, jako je duplicita, ale postrádají některé funkce, které rsync nabízí.

Po nastavení záloh snímků na místě mimo provoz a šifrování vašich zdrojových a cílových pevných disků si dejte paty na zádech pro zvládnutí rsync a implementace nejjednoduššího řešení zálohování dat.