Zálohujeme na linuxu – rsync a jeho modifikace

1. Úvod

Zálohování na Linuxu patří svými možnostmi k velmi pokročilému a dneska si společně ukážeme pár takových základních nástrojů, jejich použití a rozdíly mezi němi. Jedná se o:

  • rsync
  • rdiff-backup
  • duplicity
  • rsnapshot

2. Nástroje

2.1. rsync

Je úplně ten nejvíc triviální nástroj, ze kterého vychází všechny ostatní dále popisované utilitky. Rsync umí v základu prostě zkopírovat data z bodu A do bodu B a bere v ohled změny souborů. Umí to lokálně i vzdáleně a umí k tomu nějaké pokročilé parametry. Ty jednoduché základy, ty si můžete nastudovat třeba zde. My si ukážeme jeden drobný příklad, dle kterého potom budeme porovnávat rozdíly s ostatními možnostmi:

rsync -av --append-verify -e ssh --include 'Dokumenty/' --include 'homes/' --include 'faktury/' --include 'hudba/' --include 'NetworkBackups/' --include 'PasswordDatabases/' --include 'photo/' --include --exclude '/volume1/NetworkBackups/Test' --exclude 'NetworkBackups/Les/' --exclude '@*' root@192.168.1.1:/svazek1/ /home/uzivatel/

Výše sepasaným příkazem říkáme rsyncu:

  • Naloguj se na vzdálenou mašinu do adresáře svazek1/
  • Zkopíruj data ze svazek1/ na můj localhost do home/uzivatel/
  • Ať kopírování obsahuje adresáře Dokumenty, faktury, homes, hudba atd..
  • Ať to ale neobsahuje žádný adresář, který začíná na „@“ nebo některé vnořené, třeba obsah v /NetworkBackups/Les/
  • kopírování souborů je:
    • e – vzdálené (přes SSH)
    • a – archivační (zachovává symlinky a práva souborů, je ekvivalentní rltgoD ). Tedy pro nás to nejdůležitější –  je současně i rekurzní – (kopíruje i podsoubory a podsložky v nadřazených adresářích.
    • v – ukecanější než obvykle (bonzuje každou blbost do terminálu při kopírování)
    • –append verify –  Pokud by se přenos nějak přerušil, tak se rsync pokusí  najít částečně přenesený soubor a navázat na něj (s kontrolou, že částečná data nejsou poškozená.  (prostě kontrolní mechanismus jestli se zkopírovalo vše tak jak má) Toto je velmi užitečné, kopírujete-li data např přes 5GHz pásmo.

rsync má doplňkový parametr -u (update). Při užití tohoto parametru se při zálohovcání zapíše zálohovaný soubor pouze, pokud se v cíli nevyskytuje jeho  novější verze.

2. 2. rdiff-backup

Je na první pohled skoro to samo jako rsync, ale není to samo.

  • Na rozdíl od rsync je rdiff-backup napsán v pythonu a  dělá inkrementální (přírustkové) zálohy. Umožní Vám znovu obnovit nějaký soubor a to i několik dní zpátky.
  • Rozdílové zálohy jsou ukládány do podadresáře rdiff-backup-data. Tedy můžete si to představit jako rsync s doplňkem -u, ale máme dostupnou i historii změn souborů.
  • rdiff-backup  udělá první zálohu (aktuální snapshot) a potom každou další kopírovanou zálohu udělá  přírůstkově.  V momentě, když potřebujete nějakou zálohu obnovit, tak obnova se dělá tak, že se vybere konkrétní záloha a zadá se příkaz na její obnovu.
  • rdiff-backup umí sice komprese souborů  ale neumí šifrovat přenášený obsah.
  • Rychlost kopírování je podobná rychlosti kopírování s rsync.

Chceme-li dělat vzdálené zálohy, musí být rdiff-backup na mašině, která se takto bude zálohovat. Zní to triviálně, ale je to velmi důležité. Představte si,že chcete kopírovat data ze Synology NAS na nějakou jinou mašinu. Rdiff-backup nelze použít, protože musí být instalová na NAS. Musíme to obejít namoutěním vzdálené Synology NAS pomocí sshfs a potom s namoutěným adresářem pracovat lokálně.

2.3. duplicity

Duplicity je trochu „úspornější a rychlejší“ rdiff-backup. V Hlavní rozdíly oproti rdiff-backup:

  • Duplicity umí šifrovat kopírovanou zálohu a hned v základu  komprimovat přenášený obsah.
  •  Duplicity na rozdíl od rsync nebo rdiff-backup nepočítá kontrolní součty tak, že si čekne zdrojový a cílový adresář a pak provede součet. Duplicity si hodí tyto výpočty hodí stranou při vytváření zálohy a spočítá si  je lokálně a nic nepřenáší. Tím také urychluje zálohovací čas.
  • Pří přenášení dat ze vzdáleného serveru není potřeba, aby vzdálený server a lokální mašina oba měli nainstalované duplicity.

Pro lepší porování rozdílů slouží následující přejaté tabulky:

rdiff-duplicity-rychlost
Rychlost kopírování konstantního množství dat. Žlutě – označena rychlost kopírování v různých kombinacích zdrojového a cílového úložiště s nástrojem rdiff-backup. Červeně označena rychlost kopírování v různých kombinacích zdrojového a cílového úložiště s nástrojem duplicity. Osa x – jednotlive kopirovani.  Osa y – rychlost času kopirování

 

rdiff-duplicity-rychlost-data
Zálohování konstantního množství dat. Žlutě označeno množství dat na cílovém úložišti kopírováno s rdiff-backup.  Červeně označeno množství dat na cílovém úložišti kopírováno s duplicity. Vlevo – původní záloha. Uprostřed – první inkrementální záloha. Vpravo – druhá inkrementální záloha.

2.4. rsnapshot

rsnapshot je napsán v jazyce perl a utváří virtuální image disku. Hodí se tedy pro zálohu celých operačních systémů.

  • Rsnapshot  vezme aktuální stav zdrojových dat a zkopíruje je tam, kam chceme. Při dalším kopírování se nevezme celý image, ale jen „hardlinky“, které odkazují na ty soubory z předchozího, které nijak nebyly změněné. Tímto způsobem naši poslední zálohy hned „vidíme“. není potřeba zadávat příkaz pro vydolování zálohy.
  • rsnapshot nepodporuje komprimaci a nemusí být nainstalován na obou mašinách, je-li kopírováno vzdáleně.
  • Rsnapshot není úsporný na prostor jako rdiff-backup nebo duplicity.

Pro lepší návaznost je dodána převzatá tabulka v originálním jazyce, která vyobrazuje rozdíly mezi rdiff-backup a rsnapshot.

rdiff-rsnapshot

3. Doporučení

Tak jaký nástroj tedy vybrat? Vždy to záleží na tom, na co si jako uživatel zvyknete a také nezapomínejte, že účel světí prostředky. Není jeden nástroj lepší nebo horší, vždy musí sloužit nějakému účelu. Pojďme si ukázat takové modelové důvody, kdy použít jaký nástroj:

  • Pro začínajícího je nejsnažší  jít po základech – tedy začít  používat rsync a modifikovat jej pro své potřeby. Je nejvíc simple, dá se snadno znásilnit.
  • Pokud potřebujete dělat versioning souborů, je lepší rovnou začít používat rdiff-backup místo rsync
  • Kopírujete-li mezi zdrojem a cílem, který je mimo vaši bezpečnou síť a potřebujete šifrovat, je duplicity ideální.
  • Pokud kopírujeme data z nějaké mašiny, na kterou nejde instalovat rdiff-backup, pak volíme duplicity.
  • Máte-li mizernou konektivitu, pak je rozhodně lepší duplicity než rdiff-backup nebo rsync.
  • Obsluhujete-li klienty, kteří u Vás mají VPS, pak rsnapshot je dobrá volba v momentě, kdy Vám Váš  klient napíše, že potřebuje svoji 2 dny starou zálohu ze serveru.

4. Zdroje:

rsync: http://www.abclinuxu.cz/clanky/rsync-inteligentni-kopirovani-souboru

rdiff-backup: https://www.root.cz/clanky/zaloha-dat-pomoci-rdiff-backup/

Duplicity: https://www.linuxexpres.cz/praxe/sprava-linuxoveho-serveru-zalohovani-pomoci-duplicity

rsnapshot: https://www.root.cz/clanky/zalohujeme-s-rsnapshot/

Porovnání rozdílů mezi rsync a rdiff-backup: https://cookuop.co.uk/rsync-vs-rdiff-backup/

Výhody a nevýhody rsync vs rdiff-backup: https://books.google.co.uk/books?id=6-w4fXbBInoC&pg=PA197&dq=rsync+vs+rdiff-backup&hl=en&sa=X&ei=qZg5U6fJFMGp7Aba6YCIAQ#v=onepage&q=rsync%20vs%20rdiff-backup&f=true

Grafy: Rozdíl mezi rdiff-backup a duplicity: https://blog.roundside.com/duplicity-vs-rdiff-backup-in-action/

tabulka: Rozdíly mezi rdiff-backup a rsnapshot: http://www.admin-magazine.com/Articles/Backups-using-rdiff-backup-and-rsnapshot/(offset)/9