Backup serveru

Backup serveru
« kdy: 15. 03. 2020, 22:19:10 »
Ahojte :) Mám takový dotaz na zkušené matadory. Chci se zeptat jakým způsobem provádíte kompletní backup serveru?
Já si hraju s myšlenkou udělat dd, kde se mi cely system uloží do image souboru na disk, ktery bude v serveru pro tyto učely.
Pak rsyncem si nahraju ten image na NAS, abych tu zálohu měl ještě na dalším místě. Co si o tomto řešení myslíte? Případně dá se to nějak ještě více zjednodušit?

Děkuji moc za rady a případné podněty


Re:Backup serveru
« Odpověď #1 kdy: 15. 03. 2020, 22:32:36 »
Podívejte se na Borg backup. Je jednoduchý, přesto výkonný, umí šifrovat, komprimovat i deduplikovat.
dd bych nedoporučoval, rsync jednu zálohu udělá, ale neudělá repozitář s historií záloh (natož deduplikaci).

Jose D

  • *****
  • 850
    • Zobrazit profil
Re:Backup serveru
« Odpověď #2 kdy: 16. 03. 2020, 10:29:56 »
Ahojte :) Mám takový dotaz na zkušené matadory. Chci se zeptat jakým způsobem provádíte kompletní backup serveru?
Já si hraju s myšlenkou udělat dd, kde se mi cely system uloží do image souboru na disk, ktery bude v serveru pro tyto učely.
Pak rsyncem si nahraju ten image na NAS, abych tu zálohu měl ještě na dalším místě. Co si o tomto řešení myslíte? Případně dá se to nějak ještě více zjednodušit?

abys měl jistotu že ta image bude fungovat je třeba to provést za vypnutého systému, tj. mít nabootováno z např. diskless network bootu..

postupem času jsem zjistil, že lepší než file-level backup je mít v configuration managementu popsanou modifikaci základní image OS.

Samozřejmě user a app data zálohu potřebují, tam používám, kol. Šilhavým zmíněný, borgbackup, sypu to na remote sshfs.

Re:Backup serveru
« Odpověď #3 kdy: 16. 03. 2020, 15:51:15 »
... borgbackup, sypu to na remote sshfs.

Já bych doporučil cpát to na remote server přímo přes SSH. Má to obrovskou výhodu proti sshfs. Nikdo nemůže na vzdáleném konci smazat nebo poškodit repozitář - zatímco na sshfs stačí jen smazat / přepsat soubory v připojeném adresáři. Do authorized keys se přidá omezení, aby šel spustit pouze borg a pouze v append režimu. Při kompromitaci zálohovaného serveru nikdo se zálohami neudělá vůbec nic. Prune se pak pouští z jiného místa - tím se oprávnění segregují (chráněný server může jen přidávat, jiný může provádět výmaz starých záloh) a tak se diverzifikuje riziko úmyslného poškození záloh.

_Jenda

  • *****
  • 1 550
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Backup serveru
« Odpověď #4 kdy: 16. 03. 2020, 22:11:56 »
rsyncnu / na jiný stroj a tam udělám btrfs snapshot. Pokud mám něco, kde je netriviální konzistence (typicky MySQL/Postgres), tak to před tím dumpnu do souboru (naštěstí mám databáze malé, takže dump je malý).

Pokročilejší verze: udělám LVM snapshot, namountuju ho read-only a rsyncnu ty soubory z něj. Tím je zaručena konzistence. Ale vyžaduje to mít systém/VM na LVM.


Re:Backup serveru
« Odpověď #5 kdy: 17. 03. 2020, 07:41:15 »
Mě se jedná hlavně o zálohu celého serveru a služeb co mi na něm poběží. Ještě mě napadá, že bych ten rsync mohl cpat do více backup složek. Od DD tedy opustím. Líbil by se mi totiž formát zálohy v image, aby se záloha dala dobře přenášet a pracovat s ní v případě obnovení atd. Na ten Borg určitě kouknu :)

Re:Backup serveru
« Odpověď #6 kdy: 17. 03. 2020, 09:29:54 »
Líbil by se mi totiž formát zálohy v image, aby se záloha dala dobře přenášet a pracovat s ní v případě obnovení atd. Na ten Borg určitě kouknu :)

Ve skutečnosti je s images více práce, než s tradičním backupem. Nejdřív musíte zajistit, abyste měl na vzdáleném úložišti několik záloh. Pokud používáte images, tak buďto potřebujete Nkrát tolik místa, nebo využít inkrementální obrazy. Pokud použijete inkrementální obrazy, stejně musíte mít pro plný obraz místo aspoň třikrát. Takže nároky na prostor jsou veliké. Pak nastává samotný přenos zálohy zpět. Jsou to obvykle velká data; ne vždy je jde natáhnout rovnou, takže se většinou nejdřív přenášejí zpět do hlavní site a pak se s nimi pracuje lokálně => další nároky na prostor. Musíte řešit problémy s přenosem. Ano, i u velkého souboru se dá přenos navazovat, ale poté byste měl na obou koncích udělat nějaký checksum, abyste ověřil, že napojováním nedošlo k chybě => čas.

Pokud image, tak je dobrý na lokální zálohy (level 1). Tam bych se ovšem nepatlal s nějakým DD nebo ZFS nebo Btrfs, ale zvirtualizoval bych to a zálohu bych řešil pomocí Veeam Backup (Acronis to taky umí). To jsou poměrně vyladěné systémy, zálohují i obnovují rychle a nenesete riziko, že něco špatně vymyslíte.

Pro běžné zálohy je tradiční zálohování lepší. Já zmiňoval Borg Backup, ale existuje víc řešení. Výhodou je, že jeho repozitář je na úrovni souborů a díky kompresi a deduplikaci je schopný s minimem prostoru udržet i desítky záloh zpětně a ze všech zrekonstruovat plný stav. Přikládám ukázku z produkce. Archiv obsahuje 54 TB zálohovaných dat, ale na úložišti to po kompresi a deduplikaci zabírá 320 GB. Počet záloh, ke kterým se můžu vrátit: 2370. Doba zálohování serveru: 6 minut i s přenosem po internetu (přenáší jen to, co se nenajde v repozitáři).

Kód: [Vybrat]
Time (start): Tue, 2020-03-17 04:17:26
Time (end):   Tue, 2020-03-17 04:23:30
Duration: 6 minutes 4.24 seconds
Number of files: 689993
Utilization of max. archive size: 0%
------------------------------------------------------------------------------
                       Original size      Compressed size    Deduplicated size
This archive:               40.66 GB             16.54 GB             92.25 MB
All archives:               53.62 TB             24.56 TB            320.41 GB

                       Unique chunks         Total chunks
Chunk index:                 5563693           1272684448
------------------------------------------------------------------------------

Re:Backup serveru
« Odpověď #7 kdy: 18. 03. 2020, 08:10:43 »
Včera jsem borg nainstaloval a vytvořil repo pro zálohy. Když chci provést tedy zálohu kompletního systému musím ručně vypsat všechny linuxové složky (/home /etc /boot)? Neexistuje na to nějaký figl? Jinak zatím to vypadá dobře.

Díky


Re:Backup serveru
« Odpověď #8 kdy: 18. 03. 2020, 08:56:06 »
Já to dělám tak, že zálohuji celý server, ale pomocí --exclude vynechávám ty části, které zálohovat nechci. Tento způsob mi přijde šťastnější, protože když na disku přibude nový adresář, spadne automaticky do zálohy. Opačným postupem musíte pravidelně hlídat, že nezapomínáte zálohovat něco nového důležitého.

Přikládám své nastavení, ale je určené pro FreeBSD - tam není potřeba vůbec zálohovat base system, protože ten je přímo z distribuce (ne z balíčků) a vždy se dá obyčejným tarem rozbalit přímo od nich.

Kód: [Vybrat]
borg create \
    --verbose \
    --filter AME \
    --list \
    --stats \
    --show-rc \
    --compression zstd,5 \
    --exclude-caches \
    --exclude "/bin/*" \
    --exclude "/boot/*" \
    --exclude "/dev/*" \
    --exclude "/lib/*" \
    --exclude "/libexec/*" \
    --exclude "/rescue/*" \
    --exclude "/root/.cache/*" \
    --exclude "/sbin/*" \
    --exclude "/tmp/*" \
    --exclude "/usr/bin/*" \
    --exclude "/usr/home/*/.cache/*" \
    --exclude "/usr/home/*/.composer/*" \
    --exclude "/usr/home/*/.npm/*" \
    --exclude "/usr/home/*/www/*/temp/*" \
    --exclude "/usr/include/*" \
    --exclude "/usr/lib/*" \
    --exclude "/usr/libdata/*" \
    --exclude "/usr/libexec/*" \
    --exclude "/usr/local/var/php-session/*/*" \
    --exclude "/usr/obj/*" \
    --exclude "/usr/ports/*" \
    --exclude "/usr/sbin/*" \
    --exclude "/usr/share/*" \
    --exclude "/usr/src/*" \
    --exclude "/usr/tests/*" \
    --exclude "/var/cache/*" \
    --exclude "/var/crash/*" \
    --exclude "/var/db/etcupdate/*" \
    --exclude "/var/db/freebsd-update/*" \
    --exclude "/var/db/portsnap/*" \
    --exclude "/var/ports/*" \
    --exclude "/var/tmp/*" \
    \
    ::"{hostname} [REGULAR] {now}" \

Re:Backup serveru
« Odpověď #9 kdy: 23. 03. 2020, 17:03:56 »
Přeci jen nemáte někdo nápad jak to udělat přes ten rsync? Jak umistit do skriptu, aby po kazdem spusteni se mi vytvorila slozka s datumem a do te slozky se nasypala ta zaloha? :)




Re:Backup serveru
« Odpověď #10 kdy: 23. 03. 2020, 17:22:06 »
ber to jako challenge se podivat na uplne easy vec v shellu.
...
Kód: [Vybrat]
#!/bin/sh
OPT="-rlt --delete --progress"
# -r = recursive
# -l = copy links and symlinks
# -t = timestamps
# -v = verbose

SRC="/etc"
DST="/backups"
rsync $OPT $SRC $DST
takze uz ti zbyva jen:
- dostat do DST nejak naformatovy datum...
- zjistit jak rsync pres ssh
- pridat do rsync exclude file (ten preferuju pred milionkrat zadavat exclude)

Děkuji za možnost editace příspěvku.

Re:Backup serveru
« Odpověď #11 kdy: 23. 03. 2020, 17:29:15 »
Pokud to má být nová složka pro každou zálohu, proč rsync a ne obyčejné scp?

Re:Backup serveru
« Odpověď #12 kdy: 23. 03. 2020, 17:31:32 »
Už jsem to vyřešil :D Díky za rady :)

ja.

  • ****
  • 316
    • Zobrazit profil
    • E-mail
Re:Backup serveru
« Odpověď #13 kdy: 23. 03. 2020, 19:03:03 »
Pokud to má být nová složka pro každou zálohu, proč rsync a ne obyčejné scp?

Pretoze rsync dokaze zobrat root predoslej zalohy a preniest cez linku iba rozdiel voci nej (--link-dest/--copy-dest). scp by prenasalo vsetko.