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

Obsah:

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

Video: Příručka pro začátečníky pro synchronizaci dat s nástrojem Rsync
Video: YOGA BOOKS I recommend for deeper understanding of YOGA 2024, Březen
Příručka pro začátečníky pro synchronizaci dat s nástrojem Rsync
Příručka pro začátečníky pro synchronizaci dat s nástrojem Rsync
Anonim
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.
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í: Pouze pokročilé

Pokud sedíte tam a přemýšlíte "Co je heck rsync?" Nebo "Používám pouze rsync pro opravdu jednoduché úkoly", můžete se podívat na náš předchozí článek o tom, jak používat rsync pro zálohování dat v Linuxu, což dává ú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 Linuxoví guruové. 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, takže se přesuňte na jejich webové stránky a stáhněte si 32bitovou nebo 64bitovou verzi v závislosti na vašem počítači.

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:
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:
Instalace SSH:
Po výběru těchto tří balíků pokračujte kliknutím na tlačítko Další, dokud nedokončíte instalaci. Potom můžete Cygwin otevřít kliknutím na ikonu, kterou instalátor umístí na plochu.
Po výběru těchto tří balíků pokračujte kliknutím na tlačítko Další, dokud nedokončíte instalaci. Potom můžete Cygwin otevřít kliknutím na ikonu, kterou instalátor umístí na plochu.

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

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

Ř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 v počítači se systémem Windows se systémem Cygwin:

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

Je to docela jednoduché a v tomto okamžiku není potřeba používat rsync, protože byste mohli soubory přetahovat. 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 v počítači je velmi špatný nápad, takže se podívejme na to, co by bylo zapotřebí, abyste začali posílat soubory přes internet do jiného počítače ( jeden si pronajal, člen rodiny, 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. Bylo by odstraněno cizí soubory z cílového místa, 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.

The

-a -v -e --delete

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. Pojďme se podívat 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 zobrazit 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říkazem

--progress

přepnout jako záloha:

Image
Image

--partial

- Jedná se o další přepínač, který je zvláš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 spínač je kombinován

--progress

a

--partial

takže ji použijte místo toho a váš příkaz rsync bude trochu lepší.

-z

nebo

--compress

- Tento přepínač způsobí, že rsync bude komprimovat data souboru při jeho přenášení, což snižuje množství dat, které je třeba odeslat do cíle. 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

--human-readable

- Pokud používáte

--progress

přepínač, určitě budete chtít použít i tento. To znamená, že pokud nechcete konvertovat bajty na megabajty za letu. The

-h

přepínač 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ý pro to, abyste věděli, kdy nejprve píšete váš rsync skript a vyzkoušíte ho. 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ář ještě 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ý

--exclude-from

ale odkazuje na soubor, který obsahuje adresáře a cesty k souborům dat, které chcete zálohovat.

--stats

- Není to opravdu důležitý přepínač, ale pokud jste sysadmin, může být užitečné znát detailní statistiky jednotlivých záloh, takže můžete sledovat množství přenosů odesílaných přes vaši síť a podobně.

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

Podívejme se na náš příkaz rsync, když přidáme několik dalších přepínačů:

rsync -avzhP --delete --stats --log-file=/home/geek/rsynclogs/backup.log --exclude-from '/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é řešení zálohování. 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í snímků

Pokud náhodou odstraníte soubor, virus poškodí některý z vašich souborů, nebo se něco jiného stane, kdyby se vaše soubory nežádoucím způsobem změnily, a poté spustíte skript rsync zálohování, vaše 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.

Stvořitel rsync to uvědomil a přidal

--backup

a

--backup-dir

argumenty, takže uživatelé mohou 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, aby se našel jeho poslední záložní kopie. 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).

Snapshot záloh 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ředstavte si, ž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 uskuteční pomocí hardlinkingu přes
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 uskuteční pomocí hardlinkingu přes

--link-dest=DIR

argument.

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 provedení takového zálohovacího řešení, a pak podrobněji vysvětlíme tento scénář:

#!/bin/bash

#copy old time.txt to time2.txt

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

#overwrite old time.txt file with new time

echo `date +”%F-%I%p”` > ~/backup/time.txt

#make the log file

echo “” > ~/backup/rsync-`date +”%F-%I%p”`.log

#rsync command

rsync -avzhPR --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r --delete --stats --log-file=~/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/`date +”%F-%I%p”`/

#don’t forget to scp the log file and put it with the backup

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

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

První řádek našeho skriptu zkopíruje obsah souboru time.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 a pojmenuje jej rsync-date.log (kde datum je skutečný datum a čas).

Nyní komplexní příkaz rsync, o kterém jsme vás varovali:

-avzhPR, -e, --delete, --stats, --log-file, --exclude-from, --link-dest

- Jen př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í příkazů datum a mačka

Budeme přecházet každé použití datových a mačkových příkazů 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 použitím prohlášení proměnných, ale pro účely této příručky jsme se rozhodli použít tuto metodu.

Soubor protokolu je určen jako:

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

Jinak bychom ji mohli specifikovat jako:

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

Ať tak či onak,

--log-file

příkaz by měl být schopen najít dříve vytvořený datový soubor s datem a zapsat jej.

Soubor cílového odkazu je určen jako:

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

To znamená, že

--link-dest

příkaz je uveden v adresáři předchozí zálohy. Pokud běžíme zálohování každé dvě hodiny, a to je v 16:00 v době, kdy jsme spustili tento skript, pak

--link-dest

příkaz vyhledá adresář vytvořený v 14:00 a přenáší pouze data, která se od té doby změnily (pokud existují).

Chcete-li znovu zopakovat, proto je čas.txt zkopírován na čas2.txt na začátku skriptu, takže

--link-dest

příkaz může odkazovat na tento čas později.

Cílový adresář je určen jako:

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

Tento příkaz prostě položí zdrojové soubory do adresáře, který má název aktuálního data a času.

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

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

Používáme bezpečnou kopii na portu 12345, abychom vzali protokol rsync a umístili 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 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.

Automatizace

Použijte Cron v 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 distribucí Linuxu může používat příkaz pkill, proto se nezapomeňte přidat na začátek skriptu rsync následující:

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 šifrovány při jejich přechodu na cílové místo. 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é.

Jedna z nejlepších funkcí rsync je, ž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í.

Poté, co jste nastavili zálohy snímků na místě mimo provoz a zašifrovali zdrojové a cílové pevné disky, dejte si paty na zádech pro zvládnutí rsync a implementujte nejdokonalejší řešení zálohování dat.

Doporučuje: