Konečné řešení zálohování a synchronizace dat
Měl jsem to štěstí, že jsem velmi brzo v mé PC éře přišel o data (cca rok 1996). Prostě odešel disk a já nezálohoval. Od té doby zálohování již řeším. Systém zálohování jsem postupem času přivedl téměř k dokonalosti.
Důležité je si uvědomit pravidlo 3 2 1
- 3 zálohy (v mém případě šuplík, 2x NAS)
- 2 lokace (v mém případě doma a u rodičů)
- 1 offline (v mém případě externí usb disk v šuplíku)
Mimochodem, na úvodní fotce je moje sbírka vadných disků a to ještě není kompletní. ⚡️
Jsem uživatel macOS a jeho zálohovací systém Time Machine je naprosto dokonalý. Přírůstkové zálohování, které je uložené v šifrovaném úložišti, reprezentovaném polem malých souborů (8,4 MB) pro snažší synchronizaci zálohy mezi více místy. Na serverech používám Debian, na kterém jsem bohužel nenašel podobné řešení, jako je Time Machine (doplněno: Děkuji za doporučení restic čtenářem, je to přesně to, co jsem hledal, funguje parádně 👍). Ano, existují různé náhražky pomocí rsync skriptů, ale mají to vždy nějaké ale. Nicméně základ funguje dobře, jen generuje ohromné množství malých souborů (pomocí symbolických linků), které se pak obtížněji synchronizují. Například pomocí Syncthing. O tom viz dál.
Malé ohlédnutí do minulosti
Dříve jsem se snažil rozjet vlastní RAID a udržovat ho. První na ráně bylo mdadm a RAID5, ten má ale problém v tom, že musíte mít stejně velké disky a pole nelze rozšířit o další disky. Proto jsem před lety sáhnul po btrfs. Je to naprosto dokonalý filesystém. Umí CoW, transparentní kompresi dat, snapshoty, za chodu lze měnit RAID, přidávat další disky, odebírat, disky nemusí být stejně velké. Prostě dokonalost sama. Proč jsem od něj odešel? RAID1 je v btrfs stabilní, ale bohužel RAID5/6 není. A hlavně, vývoj v tomto směru jde ohromně pomalu. Tak 5 let je RAID5/6 stále označený jako Unstable
. Občas se RAID prostě rozpadl a už mě nebavilo s tím neustále experimentovat a bojovat o záchranu dat.
Nová doba se Synology
Ke změně přístupu k domácímu NASu mne přivedl kamarád, který si jednoho dne koupil komerční NAS a jen na něj pěl chválu. Nakonec jsem šel stejnou cestou a koupil Synology DS920+, což je 4 šachtový NAS, který má 2x LAN (bohužel jen 1Gbit, což je jediná nevýhoda a bude důvod k prodeji, až doma přejdu na 10Gbit LAN, EDIT: po zapnutí boundingu už je rychlost dvojnásobná), 2x nvme SSD cache, slot pro rozšíření RAM až na 20GB (4GB interní + 16GB ve slotu). Tak výkonný stroj jsem kupoval hlavně k vůli tomu, že doma používám domácí multimediální centrum Plex a měl jsem ambice, aby ten NAS i servíroval filmy. Bohužel pro dekódování FullHD filmů, natož pak 4k filmů 🎥 je potřeba mnohem, mnohem větší výkon (5000 PassMark a víc).
Takže Synology používám jen jako storage a zálohovací stroj. Má naprosto parádní uživatelské rozhraní. Když ho srovnám například s velmi populárním OpenMediaVault, tak to se vůbec nedá srovnat 😀 Například procházení souborů, nastavování práv k přístupu. OMV je utrpení používat. Už jen každá změna nastavení se musí 3x potvrdit a trvá věčnost. Synology hlavně podporuje Docker, takže doinstalovat jakoukoliv aplikaci je otázkou jednoho souboru v docker-compose
.
Druhy uložených dat
Na Synology mám dva druhy dat, data postradatelná a nepostradatelná. Mezi postradatelná data patří image instalačních disků různých distribucí, která lze znovu stáhnout z internetu. Nebo sbírka filmů a seriálů, které není nutné zálohovat na další lokaci. Ale mezi nepostradatelná data patří zálohy domácích fotek a videí (cloud není záloha), zálohy z Time Machine a zálohy z Linux serverů. Tyto zálohy každý večer synchronizuju na druhou lokaci k rodičům. Říkáte si, proč druhou lokaci? Stačí požár, nebo zloděj, který mi v garáži vybere serverovnu a je po legraci.
Synchronizace dat pomocí Syncthing
Pro synchronizaci dat používám dva nástroje. Jedním je Syncthing, což je téměř dokonalý nástroj pro obousměrnou synchronizaci. Druhým nástrojem je rsync, ten je vhodný pro jednosměrnou synchronizaci obrovského množství souborů. Syncthing je napsaný v Go, má parádní web GUI a používám ho na desktopech, tedy na MacBooku a iMac mi synchronizuje pracovní složky. Velmi rychle bez externího cloudu, jen po lokální síti. Třetí instanci mám na domácím NASu. Tím jsem vyřešil problém synchronizace, aby nemusely být oba desktopy zapnuté v jednu chvíli. Většinou, když přecházím z jednoho na druhý, tak prostě vypínám ten předchozí. Syncthing si navíc sám hledá další stroje v okolí, takže se je snaží vždy spojit co nejrychlejší cestou. I když nemáte veřejnou IP, tak využije veřejný uzel, přes který pak data tečou, ale není to žádná rychlostní hitparáda.
Pro účely vzdáleného připojení k domácí síti jsem opustil OpenVPN (nastavovací peklo) a přešel ke všemi vychvalovanému Wireguard. Funguje v Linuxu, macOS, iOS. Syncthing se tak umí bezpečně spojit s domácí sítí i když jsem s MacBookem venku.
Nevýhody Syncthing
Jinak Syncthing umí synchronizaci více zařízení, obousměrnou synchronizaci, jednosměrnou synchronizaci, verzování souborů, koš pro smazané soubory, prostě vše, na co si vzpomenete. Samozřejmě data posílá šifrovaně. Proč ho tedy nepoužívám i na synchronizaci dat mezi lokacemi? Tam nastává problém, moje zálohy obsahují obrovské množství malých souborů, v tom případě je Syncthing už pomalý a neefektivní. Rsync je řádově rychlejší.
A Syncthing má ještě jednu docela zajímavou nevýhodu, možná jen nevím jak ho správně nastavit, ale někdy funguje, někdy ne. Jde o synchronizaci git repozitářů. Syncthing prostě někdy rozbije stavy synchronizovaných dat a v gitu vidím, že se všechny soubory změnily, ale diff neukáže žádnou změnu. Je to otravné. Schválně jsem zkoušel více nástrojů pro synchronizaci a jediný, kdo si s tímto scénářem poradí je Dropbox. Ani Google Drive, ani Nextcloud si s tím prostě neporadí. Neumí synchronizovat git repozitáře. Říkáte si, proč tedy neudělám Push a Pull? No protože je to nepohodlné, mám rozpracovanou práci na MacBooku, zaklapnu ho, přejdu ke stolnímu iMacu a tam můžu okamžitě pokračovat a nemusím nic dělat, vytvářet nové větve a tak dále.
Time Machine zvládá zálohovat na víc míst, takže jednou za měsíc ručně připojím přes usb offline disk a přes noc automaticky projde záloha, pak disk odpojím. A správně bych měl tento disk umístit do plechové bedny a zakopat metr pod zem, aby přečkal jak elektrický výboj, tak atomový výbuch 😀 Ale umístění v šuplíku stolu mi dostačuje. Nejsem uctívač konce světa.
Druhá lokace pro zálohu
Co se týká druhé lokace, tak tam jsem dlouho hledal optimální řešení, nejdřív jsem použil jednošachtový Synology DS120j, říkal jsem si k vůli uživatelskému rozhraní. Ale tento základní model je dost omezený, nejen, že je málo výkonný, ale z nějakého důvodu nepodporuje btrfs a mít na disku obstarožní ext4 mi nepřišlo vhodné. Nedávno jsem tedy přešel na ODROID-HC2, což je naprosto dokonalý kus HW pro jeden disk. Obrovskou výhodou je ukrutně výkonný 8 jádrový procesor a systém je uložený na SD kartě. Takže když budu potřebovat vyměnit disk, tak ho vyměním a spustím nový rsync, tím se obnoví kompletně celá data. Tak dobře, toto řešení má jednu nevýhodu, chybí malý větráček na disk, ale pro kutila to nebude problém. 🔩
Takže toto je moje backup synchronizační nastavení, není dokonalé, ale v rámci možností si myslím, že jsem z technologií vymačkal maximu. Podělte se o vaše zkušenosti, jak zálohujete. Já ještě přemýšlím, že na offline zálohu zvolím páskové řešení místo šuplíku a budu zálohovat celý 24 TB NAS. No možná bez těch filmů…
Závěr
Asi dva měsíce po napsání původního článku (18. 5. 2021) jsem udělal malý update textu a doplnil věci, které se změnily. Hlavně jsem začal používat restic a také kompresi pro přenost dat, ale o tom všem se rozepíšu někdy příště. Taky mám rozepsaný článek o mém novém WiFi systému, čímž dost hodím vidle do mého původního článku o WiFi MESH Linksys Velop