RE:NODE

Provoz13 min čtení

Strategie zálohování herního serveru, hra po hře

Které složky obsahují svět v oblíbených hrách, jak získat konzistentní kopii, kolik záloh držet a kde má ležet kopie mimo server.

1 čtenář

Strategie zálohování herního serveru se scvrkává na čtyři rozhodnutí: které složky obsahují svět a nastavení, jak donutit hru, aby před zálohou zapsala čistou kopii, kolik kopií držet a jak dlouho, a kde leží alespoň jedna z nich, která není na serveru. U většiny her je svět jedna nebo dvě složky, dobrý plán je denní záloha držená týden plus zamčená kopie před každým updatem a kopie mimo server je stažení, které si děláš sám jednou týdně. Zbytek článku je přesně tohle, hra po hře, protože složka, na které záleží v Minecraftu, není ta, na které záleží v Palworldu, a zálohování špatné složky je nejčastější způsob, jak se záloha ukáže jako prázdná.

Obecná teorie - co dělá kopii obnovitelnou, myšlenka 3-2-1, konzistence - je v článku zálohy, které opravdu obnovíš. Tento článek je aplikovaná verze pro herní servery: skutečné cesty, skutečné příkazy pro uložení a politika uchovávání, která odpovídá tomu, jak se který druh hry hraje.

Tři druhy dat na každém herním serveru#

Než vybereš, co zálohovat, pomůže rozdělit soubory na herním serveru do tří skupin, protože si zaslouží zcela odlišné zacházení.

  1. Stav - svět, postup hráčů, základny, zůstatky v ekonomice, databáze oprávnění. Mění se každou minutu, kdy server běží, nedá se odnikud stáhnout znovu a je to jediná věc, jejíž ztráta je trvalá. Každá záloha ho musí obsahovat.
  2. Konfigurace - server.properties, serverDZ.cfg, PalWorldSettings.ini, konfigurace pluginů, seznamy adminů, seznamy banů. Malá, mění se zřídka a je otravné ji znovu vytvořit, protože si nikdo nepamatuje čtyřicet hodnot, které ladil. Zálohuj ji se stavem; nestojí nic.
  3. Reprodukovatelné soubory - binárky hry, runtime Steamu, stažené věci z Workshopu, běhové prostředí Javy. Gigabajty a každý bajt lze znovu stáhnout přes SteamCMD nebo přeinstalováním z panelu. Když je vynecháš, zálohy zůstanou malé a rychlé.

Past leží na hranici mezi skupinami jedna a tři. Mody jsou teoreticky reprodukovatelné, ale jen ve verzi, kterou jsi provozoval, a autor modu může starou verzi smazat. Pokud tvůj server závisí na modu v konkrétní verzi, soubor modu patří do zálohy, i když by se v principu dal stáhnout znovu. Totéž platí pro vlastní mapu: reprodukovatelná, dokud ten, kdo ji vytvořil, nezmizí.

Co zálohovat, hra po hře#

Toto jsou složky, které drží stav a konfiguraci u her, které lidé hostují nejčastěji. Cesty jsou relativní ke kořeni serveru, pokud nezačínají ~, a několik z nich se přesune, pokud při spuštění předáš argument s adresářem pro ukládání, takže před důvěrou v tabulku zkontroluj startovací řádek na svém serveru.

HraSvět a stavKonfigurace, která stojí za uchování
Minecraft (Paper)world, world_nether, world_the_endserver.properties, plugins/, ops.json, whitelist.json
Valheimworlds_local/<World>.db a .fwladminlist.txt, bannedlist.txt, permittedlist.txt
PalworldPal/Saved/SaveGames/0/<id>/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
Project ZomboidZomboid/Saves/Multiplayer/<name>/, Zomboid/db/<name>.dbZomboid/Server/<name>.ini, <name>_SandboxVars.lua
7 Days to Diesložka s uloženými daty pro tvůj svět a název hryserverconfig.xml, serveradmin.xml
Terrariasoubor .wld a jeho .twld (tModLoader)serverconfig.txt, tshock/
Factoriosaves/*.zipdata/server-settings.json, server-adminlist.json, mods/
DayZmpmissions/<mission>/storage_1/serverDZ.cfg, soubory db/ mise
UnturnedServers/<id>/Level/, Servers/<id>/Players/Commands.dat, Config.json
Don't Starve Together<Cluster>/Master/save/, <Cluster>/Caves/save/cluster.ini, server.ini každého shardu
Garry's Modgarrysmod/sv.db, garrysmod/data/garrysmod/cfg/, addons/
Counter-Strike 2žádné - žádný trvalý světgame/csgo/cfg/, game/csgo/addons/

Pár z nich vyžaduje vysvětlení.

Minecraft drží na Paperu a Spigotu tři dimenze ve třech složkách. Vanilla drží Nether a End uvnitř hlavní složky world jako DIM-1 a DIM1, takže skript napsaný pro vanillu vynechá dvě třetiny světa na Paperu. Data pluginů leží v plugins/<Plugin>/ a část z nich je stav - claimy, zůstatky v ekonomice, skupiny LuckPerms, pokud jsou uložené ve výchozím souboru H2. Příkazy pro uložení a rollback na úrovni regionů podrobně popisuje záloha a obnova světa v Minecraftu.

Project Zomboid je ta, kterou lidé dělají špatně nejčastěji. Mapa je v Saves/Multiplayer/<servername>, ale hráčské účty a hesla jsou v db/<servername>.db. Obnov jen mapu a každý hráč se musí registrovat znovu; obnov jen databázi a přihlásí se do světa, který je nezná.

7 Days to Die ukládá savy do složky s uživatelskými daty, která je na Linuxu ve výchozím stavu ~/.local/share/7DaysToDie/Saves/, pokud UserDataFolder nebo SaveGameFolder v serverconfig.xml neukazuje jinam. Svět s náhodnou generací má také vygenerovanou mapu v GeneratedWorlds/ - z hlediska konfigurace malou, ale generování trvalo deset minut i déle a uložení je bez ní k ničemu.

DayZ zapisuje persistenci do složky mise. storage_1 drží objekty světa, hráče a vozidla; číslo je ID instance nastavené v serverDZ.cfg. Soubory ekonomiky vedle (types.xml, events.xml) jsou konfigurace a jsou to přesně ty, které upravuješ, takže se mění víc, než bys čekal.

Counter-Strike 2 a další zápasové střílečky nemají co ztratit kromě konfigurace. Jejich „záloha“ je kopie cfg/ a složek pluginů, ideálně v git repozitáři, a denní snapshot neměnné složky je jen spotřeba disku.

Konzistentní kopie: nejdřív ulož, pak kopíruj#

Většina her drží svět v paměti a zapisuje ho na disk podle časovače. Kopie souborů pořízená uprostřed zápisu ti dá svět, který vypadá úplný a nenačte se. Oprava je v každé hře stejná: řekni serveru, ať všechno zapíše, počkej, až skončí, a pak pořiď kopii.

HraPříkaz pro uloženíPoznámky
Minecraftsave-off, save-all flush, potom save-onsave-off zastaví autosave během kopírování
Valheimsave (admin, konzole ve hře)Ve vanille žádný příkaz konzole serveru; uloží i čisté zastavení
PalworldSave přes RCON nebo jako adminský příkazAdminské příkazy ve hře vyžadují nejdřív /AdminPassword
Project Zomboidsave v konzoli serveru
7 Days to Diesaveworld (také sa)Funguje z konzole a z telnetu
Factorio/server-saveZapíše aktuální soubor uložení
Terrariasave v konzoli serveru
Unturnedsave v konzoli serveru
DayZžádnýPersistence se zapisuje při vypnutí a podle časovače

V panelu je pro to správným místem záložka Schedules. Plány na RE:NODE spouští uspořádané úlohy se zpožděním - příkaz konzole, zálohu, akci napájení - takže sekvence je příkaz pro uložení, třicet až šedesát sekund čekání, až se na velkém světě zápis dokončí, a pak úloha zálohy. Řádky cron a celou noční sekvenci najdeš v článku naplánované úlohy, které stojí za to mít.

Plán noční zálohy, Minecraft
Task 1  command  say Backup in 1 minute - expect a short pauseTask 2  command  save-off              (delay 60 s)Task 3  command  save-all flush        (delay 5 s)Task 4  backup                         (delay 45 s)Task 5  command  save-on               (delay 120 s)

U hry bez příkazu pro uložení jsou bezpečnými možnostmi stop, záloha a start, nebo smířit se s tím, že kopie pochází z posledního autosavu. DayZ patří do druhé skupiny: kopie storage_1 pořízená pár minut po naplánovaném zápisu persistence je v praxi v pořádku. Zastavit server před zálohou není nikdy špatně - je to jen nepohodlné, a proto to obvykle žije uvnitř okna nočního restartu.

Kolik záloh držet a jak dlouho#

Uchovávání závisí na tom, jak se hra hraje, ne na tom, kolik je volného disku. Téměř každý server pokryjí tři vzorce.

Perzistentní světy

Survival a sandbox servery - Minecraft SMP, Valheim, Palworld, Project Zomboid, 7 Days to Die bez wipů, Factorio, Satisfactory - každým dnem nabírají hodnotu a nikdy se neresetují. Rozumná rotace je:

  • Denní zálohy držené sedm dní. To pokryje griefing, kterého si všimneš o pár dní později, a poškozený chunk, který zůstal bez povšimnutí, dokud do něj někdo nevešel.
  • Týdenní zálohy držené čtyři týdny. Sloty záloh v panelu se takhle daleko natahují zřídka, a proto je tu stažení (další oddíl).
  • Zamčené zálohy před každým updatem hry, každou změnou modů a každou operací s úpravou světa, držené, dokud si nejsi jistý, že změna fungovala - obvykle týden.

Servery s cyklem wipů

Rust, servery DayZ, které se wipují v cyklu, a cokoli se sezónami. Záloha starší než poslední wipe je pro živý server bezcenná. Drž denní zálohy v rámci aktuálního cyklu a jednu archivovanou kopii konečného stavu před každým wipem, pokud ji chceš později ukázat nebo vyřešit spor. Zajímavá konfigurace - nastavení pluginů, tabulky kořisti, ekonomika - je to, co wipe přežije a co nejvíc potřebuješ verzovat.

Zápasové servery

Counter-Strike 2, Team Fortress 2, Insurgency: Sandstorm a podobné. Drž konfiguraci ve verzovacím systému a zálohuj databáze pluginů (sourcemod-local.sq3 ze SourceModu, pokud pro adminy nebo statistiky používáš SQLite). Denní plná záloha je zbytečně obsazený slot.

Na RE:NODE zahrnuje každý herní tarif dva sloty pro zálohy a zálohu lze zamknout, aby ji rotace nikdy nesmazala. Dva sloty stačí pro „včerejší noc“ a „před updatem“, což je dvojice, na které záleží nejvíc; cokoli delšího žije ve tvých stažených souborech.

Kopie mimo server a proč panel nestačí#

Zálohy v panelu na RE:NODE se ukládají mimo stroj, který chrání, což řeší selhání disku. Neřeší všechno:

  • Smazání serveru smaže jeho zálohy, i ty zamčené. Zrušený tarif, nezaplacená faktura, která doběhla, nebo omylem provedené smazání odstraní kopie spolu se serverem.
  • Sloty jsou konečné. Denní plán přepíše kopii z minulého týdne, což je právě ta, kterou chceš, pokud problém začal před šesti dny.
  • Přihlašovací údaje jsou jediný bod selhání. Kdokoli s plným přístupem k účtu v panelu může smazat server i všechny jeho zálohy. To je důvod pro dvoufázové ověření na účtu v panelu a pro podúčty s nejmenšími nutnými oprávněními a důvod držet jednu kopii někde, kam žádné přihlášení do panelu nedosáhne.

Praktická odpověď pro většinu malých serverů je týdenní stažení. Zálohy lze z panelu stáhnout jako archiv; ulož ho na stroj, který vlastníš, nebo do úložiště s verzováním, pojmenovaný podle data. Pro větší komunitu to zautomatizuj: naplánovaná úloha na domácím stroji nebo levném VDS, která stáhne složku se světem přes SFTP.

bash
# Weekly pull of a Valheim world over SFTP, run from your own machine$ sftp -P 2022 user.abc123@panel.example:/worlds_local/Midgard.* \    ~/backups/valheim/$(date +%F)/

Přesný hostitel, port a uživatelské jméno jsou v údajích SFTP serveru v panelu; kde je najít, popisuje SFTP a správce souborů. Stahuj z kopie, ne z živého souboru, pokud to jde - záložní archiv, který stáhneš, je konzistentní, zatímco živé .db uprostřed ukládání není.

Velikost, četnost a co to stojí#

Velikost zálohy rozhoduje, zda je plán praktický. Hrubé velikosti u dlouho žijících světů, bez binárek:

HraTypická velikost světaCo ji zvětšuje
Valheim20-150 MBProzkoumaná oblast, stavební prvky, úpravy terénu
Minecraft SMP1-20 GBProzkoumané chunky; předgenerování ji znásobí
Palworld50-500 MBZákladny, pali, počet hráčů
Project Zomboid1-10 GBNavštívené buňky; každý navštívený chunk se ukládá
7 Days to Die200 MB-3 GBVelikost mapy a stavby hráčů
Factorio5-200 MBVelikost továrny; komprimovaný zip
Terraria5-50 MBJeden .wld na svět
DayZ50-500 MBPerzistentní objekty, stany a základny

Plynou z toho dvě věci. Malé světy (Valheim, Terraria, Factorio) lze zálohovat každou hodinu, aniž si toho někdo všimne. Velké (svět Minecraftu s předgenerovanou hranicí 10 000 bloků, vytížená mapa Zomboidu) se archivují tak dlouho, že hodinová záloha je k disku i hře nešetrná, a správná kadence je denně v klidné hodině. Vynechání toho, co nepotřebuješ, tu záleží nejvíc: záloha Minecraftu, která zahrnuje cache dlaždic Dynmapu nebo BlueMapu, může být pětkrát větší než svět, který mapuje. Stranu dimenzování disku, včetně rezervy, kterou zálohy potřebují při svém vytváření, najdeš v článku kolik úložiště potřebuje herní server.

Vynechání složek na panelu postaveném na Pterodactylu používá ignorovací soubor .pteroignore v kořeni serveru, psaný jako .gitignore (je to funkce původního Pterodactylu, takže se zeptej hostingu, pokud si nejsi jistý, že ji respektuje):

.pteroignore
# rebuilt on demand, no need to back them upplugins/dynmap/web/tiles/bluemap/web/maps/logs/crash-reports/cache/*.log.gz

Vyzkoušej to jednou tak, že pořídíš zálohu a porovnáš její velikost s velikostmi složek ve správci souborů. Ignorovací pravidlo, které omylem zasáhne složku se světem, je tichá katastrofa.

Obnova: pořadí, které to nezhorší#

Až přijde ten den, právě při obnově vzniká většina škod, protože lidé jednají rychle na serveru, který pořád běží.

  1. Zastav server. Obnova přes běžící svět se při dalším autosavu přepíše.
  2. Pořiď zálohu rozbitého stavu a zamkni ji. Můžeš z ní později něco potřebovat - stavbu vytvořenou po poslední dobré záloze nebo důkaz o tom, kdo škodu způsobil.
  3. Obnov celou zálohu, nebo extrahuj jen složku se světem, pokud jsi od té doby změnil konfiguraci a chceš ji ponechat. Na RE:NODE panel obnoví zálohu tlačítkem; pro částečnou obnovu stáhni archiv a nahraj potřebnou složku přes správce souborů, který archivy rozbaluje na místě.
  4. Zkontroluj, že se verze shodují. Svět z doby před updatem hry se v nové verzi načte téměř vždy; svět z doby po updatu se ve staré verzi načte zřídka. Pokud vracíš samotnou hru, viz připnutí verzí a rollbacky.
  5. Spusť a přečti si log, kde je řádek říkající, který svět se načetl. Server, který svět nenajde, obvykle vygeneruje nový se stejným názvem a vypadá naprosto zdravě.
  6. Řekni hráčům, k jakému času byl svět obnoven, aby věděli, o co přišli.

Pak si to v klidné chvíli nacvič. Vyzkoušej obnovu dřív, než ji budeš potřebovat je třicetiminutové cvičení a právě tak zjistíš, že záloha nikdy neobsahovala složku db.

Časté mezery, hra po hře#

Zálohy, které v ten den selžou, obvykle selžou z jednoho z těchto důvodů:

  • Svět byl jinde. Argument s adresářem pro ukládání při spuštění (-savedir ve Valheimu, UserDataFolder ve 7 Days to Die, -cachedir v Project Zomboid) přesunul svět ze zálohované složky.
  • Databáze nebyla soubor. Pluginy a frameworky, které drží stav v databázi - frameworky FiveM přes oxmysql, pluginy Minecraftu nastavené na externí databázi - potřebují i dump té databáze. V panelu je slot pro databázi oddělený od zálohy souborů; pořízení dumpu popisují zálohy a obnovy databází.
  • Změnil se název serveru. Zomboid a Don't Starve Together odvozují své složky od názvu. Přejmenuj server a začne zapisovat do nové prázdné složky, zatímco plán záloh dál archivuje tu starou.
  • Záloha běžela během ukládání. V plánu chyběl příkaz pro uložení, nebo bylo zpoždění příliš krátké pro velký svět.
  • Obsah z Workshopu se aktualizoval. Svět odkazuje na verzi modu, která už na Workshopu neexistuje. U všeho, o co si nemůžeš dovolit přijít, drž kopii souborů modů spolu se savem.
  • Vestavěné zálohy zaměněné za skutečné. -backups ve Valheimu, zálohovací pluginy Minecraftu a vlastní složka záloh ve 7 Days to Die leží na stejném disku jako svět. Chrání před poškozeným savem, ne před smazaným serverem.

FAQ#

Jak často mám zálohovat herní server?

Denně u perzistentního světa, v hodinu, kdy nikdo nehraje, plus ruční záloha před každým updatem nebo změnou modů. Hodinově to má smysl jen u malých světů, kde by ztráta hodiny z večerní hry způsobila skutečné rozladění, a jen pokud záloha trvá sekundy.

Musím server pro zálohu zastavit?

Ne, pokud hra má příkaz pro uložení. Spusť ho, počkej, až zápis skončí, a pak kopíruj. U her bez něj je zastavení jediný způsob, jak zaručit konzistentní kopii, a proto mnoho lidí zálohu zapojí do nočního restartu.

Vyplatí se zálohovat i samotné herní soubory?

Obvykle ne. Vrátí se s přeinstalováním nebo aktualizací přes SteamCMD. Výjimkou je, když závisíš na přesné verzi - modovaný server připnutý na starý build - a pak drž jednu kopii funkční instalace zvlášť od denních záloh světa.

Jaký je rozdíl mezi zálohou v panelu a stažením?

Záloha v panelu žije s tvým účtem a zmizí, když se server smaže. Stažení je kopie, kterou držíš sám, mimo dosah panelu. Chceš obojí: zálohu v panelu pro rychlou obnovu, stažení pro den, kdy kopie v panelu zmizí.

Proč můj obnovený svět vypadá úplně nový?

Server nenašel svět pod názvem, který měl načíst, a vygeneroval nový. Porovnej název světa nebo serveru ve startovacím nastavení s obnovenou složkou nebo souborem, včetně velkých písmen, a restartuj.


Komentáře

Zcela anonymně: žádný účet, žádný e-mail, žádné cookie. Ukládáme jen jméno, které napíšeš, text a čas - nic dalšího. Počet odkazů je omezený a značkování se nevykresluje.

0/2000