Záloha uložená u stejného poskytovatele jako server, který chrání, pokryje většinu nehod, ale ne všechny. Chybí u těch, kdy ztratíš přístup na straně poskytovatele: smazaný server, propadlá platba, napadený účet. Řešení je levné: drž druhou kopii na stroji, který ovládáš, obvykle na PC, u kterého právě čteš. Můžeš to dělat ručně ze záložky Backups v panelu, nebo to nechat na malém naplánovaném skriptu - vypíše hotové zálohy serveru, stáhne ty, které ještě nemáš, zkontroluje, že se každý archiv dá otevřít, a smaže nejstarší lokální kopie. Tento článek takový skript postaví pro Windows, naplánuje ho přes Plánovač úloh a projde části, ve kterých lidé nejčastěji chybují: co archiv obsahuje a co ne, kde žije API klíč a jak poznat dobrou kopii od poškozené.
Jedna poznámka předem, protože to název vyloženě svádí. Pro naši platformu používáme vlastní program, který se také jmenuje RENODE Backup Agent a každý den stahuje kopie z nodu. Ten je interní a ke stažení není. To, co následuje, je stejný nápad postavený ze součástí, které už každý Windows má, a namířený na tvoje vlastní servery.
Proč záleží na kopii na tvém vlastním stroji#
Zálohy v hostingovém panelu jsou už teď podstatně lepší než nic. Na RE:NODE jsou uložené mimo stroj, který chrání, takže mrtvý disk na nodu nestáhne zálohy s sebou, a zálohu můžeš zamknout, aby ji rotace nikdy neodstranila. To pokrývá běžná selhání: špatný update pluginu, poškozený svět, úprava konfigurace, po které server nenaběhne.
Co záloha na straně poskytovatele pokrýt nemůže, je samotná strana poskytovatele. Obyčejné případy:
- Server je smazaný. Smazání serveru na RE:NODE smaže i jeho zálohy, včetně zamčených. Z hlediska soukromí je to správné chování a znamená to, že omylem smazaný server nebo subuser s příliš velkými právy odnese všechny kopie najednou.
- Služba propadne. Vyprší karta, e-mail s prodloužením skončí ve spamu a server, který jsi přestal hlídat, překročí odkladovou lhůtu. Ať se pak se soubory stane cokoli, už si je nemůžeš stáhnout.
- Účet je napadený. Kdo má heslo k tvému panelu a nemáš 2FA, může smazat zálohy dřív než cokoli jiného. Kopie na tvém PC je mimo jeho dosah.
- Chceš odejít. Přesun k jinému hostingu nebo na stroj doma začíná tím, že máš data. Složka archivů na vlastním disku je nejjednodušší migrace, jakou kdy uděláš.
Je to staré pravidlo 3-2-1 s vyplněnými čísly: tři kopie (živý server, záloha v panelu, tvůj PC), na dvou druzích úložiště, jedna z nich daleko od zbylých dvou. Tvůj PC je ta „vzdálená“ kopie. Není dokonalá - domácí disky umírají, notebooky se kradou - ale selhává z úplně jiných důvodů než strana hostingu a o to celé jde. K širší strategii projde strategie záloh herního serveru sloty, četnost i to, co zamykat.
Co RE:NODE už dělá a co nechává na tobě#
Než přidáš další kopii, pomůže vědět, které kopie existují, abys věděl, k čemu ta nová slouží.
- Tvoje zálohy. Každý tarif má sloty na zálohy - dva u většiny herních tarifů, u tarifů pro aplikace, web a databáze rozmezí. Vytváříš je na požádání nebo podle plánu, obnovuješ tlačítkem, stahuješ je a zamykáš ty, které chceš zachovat. Žijí mimo stroj, který chrání. Právě tyto zálohy tento článek stahuje.
- Noční systémové zálohy. Každý server se navíc každou noc zálohuje bez ohledu na počet slotů v tarifu, mimo tvoji kvótu. Ty patří nám: na záložce Backups se nezobrazují a stáhnout je nejde. Pokud potřebuješ jednu obnovit, jde to přes podporu. Jak fungují, vysvětluje článek noční zálohy mimo tvoji kvótu.
- Zálohy platformy. Samostatně se zálohuje i samotná platforma, každou noc na oddělený hardware, s ověřením a pročištěním, a každý den z nodu stahujeme kopie.
Žádná z těch tří není kopie, kterou držíš ty. Noční systémová záloha je záchranná síť, kterou si držíme pro incidenty; nenahrazuje tvoji vlastní a nedostaneš se k ní ve tři ráno, když ji potřebuješ. Kopie na tvém PC je ta, která nezávisí na nikom kromě tebe.
Co obsahuje záložní archiv#
Než cokoli zautomatizuješ, ujasni si, co vlastně stahuješ, protože nejčastější překvapení při obnově je věc, která v archivu nikdy nebyla.
| Věc | V záložním archivu? | Jak si udržet kopii |
|---|---|---|
| Soubory serveru (svět, konfigurace, pluginy) | Ano | Stáhni archiv |
| Slot databáze (MySQL) | Ne | Udělej samostatný dump |
Soubory uvedené v .pteroignore | Ne | Odstraň řádek nebo kopíruj přes SFTP |
| Startup proměnné | Ne | Poznamenej si je nebo si vyfoť záložku Startup |
Záloha serveru je .tar.gz se soubory serveru. Databáze, kterou vytvoříš na záložce Databases v panelu, žije na databázovém serveru, ne v souborovém systému serveru, takže v archivu není. Pokud tvoje pluginy pro Minecraft, zdroje pro FiveM nebo bot pro Discord ukládají data do této databáze, samotná záloha souborů obnoví server, který svá data nenajde. Databázi dumpni zvlášť - příkazy najdeš v článku záloha a obnova přes mysqldump - a dump nech před spuštěním zálohy přistát v souborech serveru, ať se veze v archivu.
Druhá mezera je .pteroignore. Je to soubor v kořeni serveru, který funguje jako .gitignore: vše, co uvádí, se při zálohování přeskočí. Hodí se na vynechání logů a cache a je nebezpečný, když tam někdo před měsíci přidal world/, aby ušetřil místo. Než archivu uvěříš, otevři ho.
Startup proměnné - verze, jar, hodnoty prostředí na záložce Startup - také nejsou soubory. Zapiš si je jednou. Skládat je z paměti uprostřed výpadku je pomalé.
Ruční cesta: stažení ze záložky Backups#
Pokud chceš kopii jen občas, nemusíš nic instalovat.
- Otevři server v panelu a přejdi na záložku Backups.
- Pokud je nejnovější záloha stará, tlačítkem vytvoř novou a počkej, až se zobrazí jako dokončená.
- Otevři menu u té zálohy a vyber Download. Prohlížeč stáhne
.tar.gzpřes krátce platný podepsaný odkaz. - Přesuň soubor někam, kde není tvoje složka Downloads, a přejmenuj ho podle data a názvu serveru.
Před riskantní změnou nebo před zrušením to stačí. Jako rutina záloh to nestačí, protože to závisí na tom, že si vzpomeneš, a zálohy, které potřebuješ nejvíc, jsou z týdne, kdy jsi zapomněl. Zbytek článku to zautomatizuje. Stranu panelu u záloh pokrývá také průvodce zálohami.
Automatizace přes PowerShell a klientské API#
Panel RE:NODE je postavený na Pterodactylu a jeho klientské API používají stránky panelu k výpisu a stahování záloh. S klíčem ke klientskému API můžeš ze skriptu udělat stejná dvě volání. Vlastní referenci API nepublikujeme, takže to, co následuje, ber jako upstreamové klientské API Pterodactylu a než se na to spolehneš, vyzkoušej to na vlastním serveru.
Potřebuješ tři věci:
- API klíč. Vytvoř ho v panelu v API credentials svého účtu. Začíná na
ptlc_. Klíč můžeš omezit na konkrétní adresy; pokud má tvoje domácí připojení pevnou IP, udělej to. Když se IP mění, omezený klíč začne selhávat, což je bezpečnější než otevřený, ale je dobré to vědět. - Krátké ID serveru. Je to osmiznaková část adresy serveru v panelu, například
a1b2c3d4v/server/a1b2c3d4. - Složku s místem. Spočítej velikost archivu krát počet kopií, které chceš držet, plus rezervu.
Klíč ulož jako uživatelskou proměnnou prostředí, ne do skriptu, aby se skript dal sdílet nebo commitovat bez úniku klíče:
setx RENODE_API_KEY "ptlc_your_key_here"setx zapíše proměnnou pro budoucí relace, takže potom otevři nové okno PowerShellu. Naplánovaná úloha, kterou vytvoříme později, běží pod tvým uživatelem a proměnnou vidí.
Teď skript. Ulož ho jako C:\ServerBackups\pull.ps1:
$Panel = 'https://panel.renode.space'$Server = 'a1b2c3d4'$Dest = "C:\ServerBackups\$Server"$Keep = 14$Key = $env:RENODE_API_KEY[Net.ServicePointManager]::SecurityProtocol = 'Tls12'$ProgressPreference = 'SilentlyContinue'$Headers = @{ Authorization = "Bearer $Key"; Accept = 'application/json' }$Base = "$Panel/api/client/servers/$Server/backups"New-Item -ItemType Directory -Force -Path $Dest | Out-Null$Log = Join-Path $Dest 'pull.log'$list = Invoke-RestMethod -Headers $Headers -Uri $Baseforeach ($b in $list.data) { $a = $b.attributes if (-not $a.is_successful -or -not $a.completed_at) { continue } $stamp = ([datetime]$a.completed_at).ToString('yyyy-MM-dd_HHmm') $file = Join-Path $Dest ("$stamp-" + $a.uuid.Substring(0,8) + '.tar.gz') if (Test-Path $file) { continue } $link = Invoke-RestMethod -Headers $Headers -Uri "$Base/$($a.uuid)/download" Invoke-WebRequest -Uri $link.attributes.url -OutFile "$file.part" -UseBasicParsing tar -tzf "$file.part" > $null 2>&1 if ($LASTEXITCODE -ne 0) { Add-Content $Log "$(Get-Date -f s) BAD archive $stamp, kept as .part" continue } Move-Item "$file.part" $file Add-Content $Log "$(Get-Date -f s) pulled $stamp $($a.name)"}Get-ChildItem $Dest -Filter *.tar.gz | Sort-Object LastWriteTime -Descending | Select-Object -Skip $Keep | Remove-ItemSkript je napsaný pro Windows PowerShell 5.1, tedy verzi, kterou má každý Windows 10 a 11 už v sobě, takže se nic neinstaluje. Blok je označený jako prostý text jen kvůli tomu, jak blog barví kód; samotný soubor je obyčejný .ps1.
Co která část dělá
První blok je konfigurace. $Keep je počet archivů, které se drží na PC; čtrnáct při denní záloze v panelu jsou dva týdny. Řádek SecurityProtocol vynutí TLS 1.2, které starší instalace 5.1 nevybírají vždy samy. $ProgressPreference je důležitější, než vypadá: ve Windows PowerShellu 5.1 Invoke-WebRequest překresluje ukazatel průběhu pro každý kus dat a u archivu o velikosti několika gigabajtů může samo o sobě stahování zpomalit i několikanásobně.
Smyčka si od panelu vyžádá zálohy serveru a přeskočí ty, které selhaly nebo ještě běží. Každá dokončená záloha dostane název souboru složený z času dokončení a prvních osmi znaků jejího UUID, takže se názvy řadí podle data a nikdy nekolidují. Pokud soubor už existuje, skript jde dál - právě proto je bezpečné ho spouštět, jak často chceš. Stahuje jen to, co nemá.
U nové zálohy si vyžádá odkaz ke stažení, který přijde jako podepsané URL s krátkou platností, a stáhne do souboru .part. Teprve když tar -tzf přečte celý archiv bez chyby, přejmenuje se na .tar.gz. Tento jediný krok je rozdíl mezi složkou záloh a složkou souborů, které jako zálohy jen vypadají. tar je součástí Windows 10 a 11, takže ani tohle nepotřebuje nic navíc.
Poslední pipeline je retence: seřaď archivy od nejnovějšího, přeskoč ty, které chceš zachovat, zbytek smaž. Sahá jen na soubory .tar.gz ve složce daného serveru, takže poškozený .part zůstane ležet, aby ses na něj mohl podívat, a nic jiného na disku se nedotkne.
Více serverů
Udělej z $Server seznam a tělo obal druhou smyčkou, nebo drž jednu kopii skriptu na server s vlastní složkou. Oddělené složky se při obnově lépe orientují a jeden server s rozbitým klíčem nezastaví ostatní.
Plánování stahování v Plánovači úloh#
Skript, na který musíš myslet, je ruční cesta navíc s dalšími kroky. Plánovač úloh Windows ho spustí za tebe. Otevři PowerShell jako běžný uživatel a zaregistruj úlohu:
$action = New-ScheduledTaskAction -Execute 'powershell.exe' ` -Argument '-NoProfile -ExecutionPolicy Bypass -File C:\ServerBackups\pull.ps1'$daily = New-ScheduledTaskTrigger -Daily -At 9am$logon = New-ScheduledTaskTrigger -AtLogOn -User $env:USERNAME$opts = New-ScheduledTaskSettingsSet -StartWhenAvailable ` -ExecutionTimeLimit (New-TimeSpan -Hours 3)Register-ScheduledTask -TaskName 'Server backup pull' ` -Action $action -Trigger $daily,$logon -Settings $optsDva spouštěče jsou záměr. Domácí PC je často vypnutý právě v tu hodinu, kterou zvolíš, takže samotný denní spouštěč dny vynechává. Spouštěč při přihlášení úlohu spustí, kdykoli se přihlásíš, a -StartWhenAvailable řekne Windows, aby zmeškaný denní start spustil hned, jakmile je stroj zpět. Protože skript stahuje jen to, co mu chybí, stojí jeho dvojí spuštění za jedno ráno jedno volání API.
-ExecutionTimeLimit zabrání tomu, aby zaseknuté stahování viselo donekonečna; tři hodiny jsou pro většinu archivů štědré. Pokud máš servery o desítkách gigabajtů a pomalou linku, zvyš to.
Sladění s plánem záloh v panelu
Stahování může načíst jen to, co existuje. Na straně panelu otevři záložku Schedules serveru a přidej plán s úlohou zálohy, s cron výrazem na čas, který chceš. Pokud záloha v panelu běží v 05:00 a tvůj PC stahuje v 09:00 a při přihlášení, dorazí kopie z každého rána na tvůj disk týž den. Cron výrazy vysvětlené popisují těch pět polí, pokud jsi žádný ještě nepsal, a naplánované úlohy, které stojí za to mít navrhují, co dalšího na tu záložku patří.
Hlídej počet slotů. Herní tarif se dvěma sloty rotuje: když jsou oba plné, naplánovaná záloha nahradí nejstarší nezamčenou. Tady to nevadí - historii, na kterou panel nemá místo, drží tvůj PC. Je to zároveň nejlepší argument pro stahování: dva sloty na serveru, čtrnáct dní na tvém disku.
Kontrola, že jsou kopie k něčemu#
Soubor se správným názvem a velikostí ještě není záloha. „Záloha, kterou nikdo neobnovil, je jen hypotéza,“ a totéž platí o stažené. Skript už každý archiv vypisuje od začátku do konce, čímž zachytí useknutá stažení a poškozené gzip proudy. To je první vrstva.
Druhá vrstva je podívat se dovnitř. Jednou za měsíc vezmi nejnovější archiv a vypiš si, co v něm je:
tar -tzf C:\ServerBackups\a1b2c3d4\2026-10-16_0500-3f9a1c2e.tar.gz | moreKontroluješ, že složka světa, konfigurační soubory a data pluginů jsou na místě a nejsou podezřele malé. Pokud svět chybí, podívej se nejdřív do .pteroignore, než budeš hledat kdekoli jinde.
Třetí vrstva je skutečná obnova a jen ta něco dokazuje. Rozbal archiv do prázdné složky a spusť z ní server - na svém PC, pokud tam hra běží, nebo na záložním serveru. Jak to udělat bez doteku produkce, ukazuje otestuj obnovu dřív, než ji budeš potřebovat a zálohy, které opravdu jdou obnovit pokrývají způsoby selhání, které se ukážou až v tomto kroku.
Jak udržet lokální kopii v bezpečí#
Kopie na PC je „vzdálená“ jen tehdy, když zůstane oddělená od věcí, které mohou server poškodit.
- Nesynchronizuj ji rovnou zpět do cloudu. Složka záloh uvnitř OneDrive nebo Dropboxu je jako třetí kopie v pořádku, ale synchronizační klienti zrcadlí mazání. Když ransomware nebo špatný skript složku vyprázdní, vyprázdněná složka se zasynchronizuje. Použij historii verzí, nebo drž synchronizovanou kopii odděleně od složky pro stahování.
- Drž týdenní offline kopii. Externí disk, který připojíš, zkopíruješ na něj a odpojíš, je jediná kopie, na kterou ransomware na tvém PC nedosáhne.
robocopy C:\ServerBackups E:\ServerBackups /Eto zvládne jedním řádkem. - Chraň klíč. API klíč umí na serverech, ke kterým má přístup, cokoli, co umí tvůj účet. Omez ho adresou, pokud můžeš, drž ho v proměnné prostředí místo ve skriptu a v panelu ho zruš, pokud PC ztratíš.
- Hlídej disk. Herní archivy rostou se světem. Podívej se na velikost složky po prvních čtrnácti dnech a uprav
$Keepdřív, než se disk zaplní, ne potom.
Pokud bys chtěl, aby kopie žila jinde než na tvém PC, stejný vzor funguje s objektovým úložištěm: tuto cestu pokrývají zálohy herního serveru do S3 a rclone s úložištěm S3.
Řešení potíží se stahováním#
Skript zapisuje jeden řádek na archiv do pull.log ve složce záloh serveru a Plánovač úloh uchovává výsledek posledního běhu úlohy. Z obojího se většina selhání snadno určí.
- 401 nebo 403 z API. Klíč je špatný, zrušený, nebo omezený na adresu, na které nejsi. Zkontroluj klíč v novém okně přes
echo $env:RENODE_API_KEY; pokud je prázdný,setxproběhl, ale tahle relace začala dřív. Pokud jsi klíč omezil podle IP a adresa tvého připojení se změnila, přidej novou. - 404 na server. Krátké ID je špatné, nebo klíč patří účtu, který není vlastníkem ani subuserem toho serveru.
- Úloha hlásí úspěch, ale nic se nestahuje. Možná prostě není nic nového. Podívej se na záložku Backups: pokud poslední záloha selhala nebo ještě běží, skript ji záměrně přeskočí.
- Stahování je příšerně pomalé. Ověř, že tam je řádek
$ProgressPreference. Bez něj tráví Windows PowerShell 5.1 velkou část času kreslením ukazatele průběhu. - Soubor `.part` zůstane ležet a v logu je řádek BAD. Stahování bylo přerušeno nebo je archiv poškozený. Smaž soubor
.part; příští běh ho stáhne znovu. Pokud stejná záloha selže pokaždé, vytvoř v panelu novou a zkus, jestli ta projde. - „Running scripts is disabled on this system“. To je execution policy. Úloha pro tento jediný skript předává
-ExecutionPolicy Bypass; při ručním spuštění použij stejný přepínač, místo abys uvolňoval politiku pro celý stroj. - Úloha neběží, když jsi odhlášený. Takto zaregistrované úlohy běží jen, když jsi přihlášený, což jim umožňuje číst tvoji uživatelskou proměnnou prostředí. Pokud potřebuješ, aby běžela i bez přihlášeného uživatele, zaregistruj ji s uloženým heslem a klíč přesuň do souboru, který může číst jen ten účet.
FAQ#
Můžu si stáhnout noční zálohy, které RE:NODE dělá?
Ne. Noční systémové zálohy jsou naše, držíme je pro incidenty a na záložce Backups jsou skryté. Obnova z nich jde přes podporu. Zálohy, které stáhnout můžeš a které tento skript stahuje, jsou ty ve tvých vlastních slotech.
Je k dispozici oficiální aplikace RE:NODE pro zálohy?
Ne. Interní program na stahování kopií z nodu pro platformu sice provozujeme, ale není ke stažení pro zákazníky. Skript z tohoto článku dělá stejnou práci pro tvoje vlastní servery nástroji, které už ve Windows jsou.
Obsahuje stažený archiv moji databázi?
Ne. Archiv zálohy serveru jsou soubory serveru. Slot databáze je samostatná věc a potřebuje vlastní dump. Zapiš dump do souborů serveru před spuštěním zálohy a bude uvnitř archivu, který stáhneš.
Kolik kopií mám držet na svém PC?
Dost na to, aby ses dostal za okamžik, kdy se problém objevil. Griefing, poškozený chunk nebo špatný plugin se často zjistí o dny později, takže týden je minimum a dva týdny pohodlná hranice. Jediným limitem bývá místo na disku.
Zpomalí stahování záloh můj server?
Ne. Stahování čte archiv, který už v úložišti záloh existuje; herní server se do toho nezapojuje. Samotné vytvoření zálohy si na nodu vezme trochu disku a CPU, takže ho naplánuj na klidnou hodinu.
Můžu to použít na Macu nebo Linuxu?
Myšlenka se přenáší přímo - dvě volání API, stažení, tar -tzf, krok retence - ale skript je v PowerShellu a plánovač je windowsový. Na Linuxu nebo macOS je ekvivalentem krátký shell skript s curl a záznam v cronu.


