How-To: Auto Restart Dedicated Server & Backup

Moderators: Docere, Gordon der Eiserne


SGoldberg
 
Posts: 8
Joined: 26 Sep 2014, 06:59

How-To: Auto Restart Dedicated Server & Backup

Post by SGoldberg » 28 Sep 2014, 11:47

Tools
- Microsoft Powershell v1 oder höher (bei Windows 2008 R2 SP1 Servern bereits installiert) http://www.microsoft.com/en-us/download/details.aspx?id=34595
- 7Zip x64 http://downloads.sourceforge.net/sevenzip/7z920-x64.msi


Powershell Konfiguration
1. Powershell öffnen
2. Den Befehl Set-ExecutionPolicy Unrestricted eingeben und mit Ja bestätigen.



Automatischer restart des Dedicated LiF Servers

1. Ordner für die Scripte erstellen bspw c:\lif_tools
2. Neue Datei erstellen mit dem Namen lif_check.ps1 (auf die Dateiendung achten)
3. Die Datei c:\lif_tools\lif_healthcheck.ps1 mit notepad oder einem anderen Editor öffnen
4. Folgendes Script in die Datei kopieren:

Code: Select all
$app = "C:\Steam\SteamApps\common\Life is Feudal Your Own Dedicated Server\ddctd_cm_yo_server.exe"
$arguments = "-worldID 1"
$proclif = "ddctd_cm_yo_server"
$procerror = "werfault"

$p = get-process $proclif
$e = get-process $procerror

if($e -eq $null)
{
  if($p -eq $null)
  {
      Start-Process $app $arguments
  }
}
else
{
  kill -processname $procerror
  kill -processname $proclif 
  Start-Process $app $arguments
}



5. Die erste Zeile entsprechend eurer Steam Installation ändern.
6. Datei Speichern.
7. Windows Aufgabenplanung öffnen (Start->Systemsteuerung->Verwaltung->Aufgabenplanung)
8. Mit der rechten Maustaste auf "Aufgabenplanungsbibliothek" klicken
9. "Einfache Aufgabe erstellen" auswählen
10. Name: LiF-Healthcheck [Weiter klicken]
11. Trigger: Täglich [weiter klicken]
12. Täglich: Datum und Uhrzeit für den ersten Start anpassen, wiederholung alle 1 Tage [weiter klicken]
13. Aktion: Programm starten
14. Programm starten: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Argumente hinzufügen: c:\lif_tools\lif_healthcheck.ps1

15. Mit der rechten Maustaste auf die neu angelegte Aufgabe "LiF-Healthcheck" klicken -> Eigenschaften.
16. Den Reiter Trigger öffnen und den Eintrag bearbeiten
17. Häckchen bei "Wiederholen jede:" aktivieren und die Werte ändern in "1 Minute für die Dauer von 1 Tag" [ok klicken]
18. Das Eigenschaftenfenster von dem Task mit OK bestätigen.
19. Fertig 8-)


Automatisches Backup der LIF Datenbank inkl. Datenkompremierung

1. 7Zip x64 (siehe Tools) installieren
2. Ordner für die Datensicherung anlegen c:\lif_tools\sicherung
3. Neue Datei unter c:\lif_tools mit dem Namen save_lif_db.cmd erstellen
4. Datei save_lif_db.cmd mit notepad oder einem anderen Editor öffnen
5. Folgendes Script in die Datei kopieren:
Code: Select all
@echo off
echo Sicherung Datenbank 'lif_1'
FOR /F "tokens=1,2,3 delims=/: " %%a in ('Time/T') do set CTIME=%%a%%b%%c
set ZEIT=%CTIME%
set DATUM=%date%
"C:\Program Files\MariaDB 5.5\bin\mysqldump" -uroot -p<dein Datenbank Passwort> lif_1 > c:\lif_tools\sicherung\lif_1_%DATUM%_%ZEIT%.sql

"C:\Program Files\7-Zip\7z.exe" a -t7z C:\_Stuff\SaveGames\Life_is_Feudal\lif_1_%DATUM%_%ZEIT%.7z "c:\lif_tools\sicherung\lif_1_%DATUM%_%ZEIT%.sql"
del c:\lif_tools\sicherung\lif_1_%DATUM%_%ZEIT%.sql


6. <dein Datenbank Passwort> entsprechend ändern und die Datei speichern
7. Windows Aufgabenplanung öffnen (Start->Systemsteuerung->Verwaltung->Aufgabenplanung)
8. Mit der rechten Maustaste auf "Aufgabenplanungsbibliothek" klicken
9. "Einfache Aufgabe erstellen" auswählen
10. Name: LiF-Save_DB [Weiter klicken]
11. Trigger: Täglich [weiter klicken]
12. Täglich: Datum und Uhrzeit für den ersten Start anpassen, wiederholung alle 1 Tage [weiter klicken]
13. Aktion: Programm starten
14. Programm starten: c:\lif_tools\save_lif_db.cmd
15. Mit der rechten Maustaste auf die neu angelegte Aufgabe "LiF-Save_DB" klicken -> Eigenschaften.
16. Den Reiter Trigger öffnen und den Eintrag bearbeiten
17. Häckchen bei "Wiederholen jede:" aktivieren und die Werte ändern in "2 Stunden für die Dauer von 1 Tag" [ok klicken]
18. Das Eigenschaftenfenster von dem Task mit OK bestätigen.
19. Fertig 8-)

Die Datenbank wird nun alle 2 Stunden in den Ordner c:\lif_tools\sicherung\ gesichert.
Hin und wieder könnt ihr die alten Sicherungen ja löschen damit euer Laufwerk c:\ nicht voll läuft ;-)

Viel Spass damit.

Siegfried Goldberg vom Server [DE] Schwarze Feste
Last edited by SGoldberg on 01 Oct 2014, 05:11, edited 2 times in total.


OnkelBazi
 
Posts: 133
Joined: 22 Sep 2014, 09:24
Location: Bavaria

Re: How-To: Auto Restart Dedicated Server & Backup

Post by OnkelBazi » 28 Sep 2014, 15:10

Mahlzeit, da bin ich wieder :crazy:

Super danke dafür. Werde es heute Abend gleich mal testen

Ich hab sowas nämlich schon gesucht.


Ich bin dafür das dieser Thread oben angepinnt wird.


MfG
:beer:


Gnomegemini
 
Posts: 94
Joined: 20 Sep 2014, 18:00

Re: How-To: Auto Restart Dedicated Server & Backup

Post by Gnomegemini » 28 Sep 2014, 16:54

:Bravo:

Genial. Das kuriose: ich komm aus dem Unix-Umfeld und ausser einem extremen hardening welches ich von unseren Pentestern habe, habe ich keinerlei Windows-Wissen. Ich hätte nichtmal mit der Möglichkeit eines cronjobs unter Windows gedacht ja geschweige denn Skripte für geschrieben.

ketzerische Zusatzfrage: Hätte man nicht einen auto restart auch wenn man das Game als Service einrichtet?


SGoldberg
 
Posts: 8
Joined: 26 Sep 2014, 06:59

Re: How-To: Auto Restart Dedicated Server & Backup

Post by SGoldberg » 28 Sep 2014, 17:23

Hey,

freut mich wenn es euch weiter hilft. Das Script für den Autorestart startet nicht nur die Applikation neu wenn der Prozess nicht mehr gefunden wird, sondern schliesst auch die Windows-Problemberichterstattungs Meldung die hin und wieder bei einem crash aufplöppt.

VG


D3ltoroxp
 
Posts: 8
Joined: 21 Sep 2014, 10:52

Re: How-To: Auto Restart Dedicated Server & Backup

Post by D3ltoroxp » 30 Sep 2014, 07:30

Servus. Erst mal danke für das Script. Eine Frage hätte ixh da noch oder eher ein Problem. Wenn ich die Datei für Powershell mit der Maus manuell starte funktioniert sie. Richte ich das bei Windows Aufgabenplanung ein klappt es nicht. Es kommt zwar jede Min , kurz ein schwarzes Fenster, aber passiert ist nichts als sich der Server aufgegangen hat. Er läuft ja auch irgendwie noch, wenn ich dann die Fehlermeldung beende, beendet sich auch der Server. Aber leider nicht automatisch.


SGoldberg
 
Posts: 8
Joined: 26 Sep 2014, 06:59

Re: How-To: Auto Restart Dedicated Server & Backup

Post by SGoldberg » 01 Oct 2014, 05:13

D3ltoroxp wrote:Servus. Erst mal danke für das Script. Eine Frage hätte ixh da noch oder eher ein Problem. Wenn ich die Datei für Powershell mit der Maus manuell starte funktioniert sie. Richte ich das bei Windows Aufgabenplanung ein klappt es nicht. Es kommt zwar jede Min , kurz ein schwarzes Fenster, aber passiert ist nichts als sich der Server aufgegangen hat. Er läuft ja auch irgendwie noch, wenn ich dann die Fehlermeldung beende, beendet sich auch der Server. Aber leider nicht automatisch.



Hi D3ltoroxp,

prüf mal bitte deine Einstellung ob du wie unter Punkt 14. beschrieben in den Argumenten den Pfad zum Script eingetragen hast.
Die Fehlermeldung die hin und wieder bei einem Absturz angezeigt wird, kann das Script abfangen und schliesst den Prozess des Fensters ebenfalls. (werfault.exe)

VG


D3ltoroxp
 
Posts: 8
Joined: 21 Sep 2014, 10:52

Re: How-To: Auto Restart Dedicated Server & Backup

Post by D3ltoroxp » 02 Oct 2014, 04:29

Ich hatte das ganze wo anders liegen hab den pfad aber angepasst. Nun ja jetzt liegt es direkt auf c und nun geht es.


SGoldberg
 
Posts: 8
Joined: 26 Sep 2014, 06:59

Re: How-To: Auto Restart Dedicated Server & Backup

Post by SGoldberg » 02 Oct 2014, 06:05

D3ltoroxp wrote:Ich hatte das ganze wo anders liegen hab den pfad aber angepasst. Nun ja jetzt liegt es direkt auf c und nun geht es.


Freut mich das du den Fehler noch gefunden hast.

VG


Holzmodem
 
Posts: 5
Joined: 29 Sep 2014, 20:36

Re: How-To: Auto Restart Dedicated Server & Backup

Post by Holzmodem » 06 Oct 2014, 17:41

SGoldberg wrote:Tools
- Microsoft Powershell v1 oder höher (bei Windows 2008 R2 SP1 Servern bereits installiert) http://www.microsoft.com/en-us/download/details.aspx?id=34595
- 7Zip x64 http://downloads.sourceforge.net/sevenzip/7z920-x64.msi


Powershell Konfiguration
1. Powershell öffnen
2. Den Befehl Set-ExecutionPolicy Unrestricted eingeben und mit Ja bestätigen.



Automatischer restart des Dedicated LiF Servers

1. Ordner für die Scripte erstellen bspw c:\lif_tools
2. Neue Datei erstellen mit dem Namen lif_check.ps1 (auf die Dateiendung achten)
3. Die Datei c:\lif_tools\lif_healthcheck.ps1 mit notepad oder einem anderen Editor öffnen
4. Folgendes Script in die Datei kopieren:

Code: Select all
$app = "C:\Steam\SteamApps\common\Life is Feudal Your Own Dedicated Server\ddctd_cm_yo_server.exe"
$arguments = "-worldID 1"
$proclif = "ddctd_cm_yo_server"
$procerror = "werfault"

$p = get-process $proclif
$e = get-process $procerror

if($e -eq $null)
{
  if($p -eq $null)
  {
      Start-Process $app $arguments
  }
}
else
{
  kill -processname $procerror
  kill -processname $proclif 
  Start-Process $app $arguments
}



5. Die erste Zeile entsprechend eurer Steam Installation ändern.
6. Datei Speichern.
7. Windows Aufgabenplanung öffnen (Start->Systemsteuerung->Verwaltung->Aufgabenplanung)
8. Mit der rechten Maustaste auf "Aufgabenplanungsbibliothek" klicken
9. "Einfache Aufgabe erstellen" auswählen
10. Name: LiF-Healthcheck [Weiter klicken]
11. Trigger: Täglich [weiter klicken]
12. Täglich: Datum und Uhrzeit für den ersten Start anpassen, wiederholung alle 1 Tage [weiter klicken]
13. Aktion: Programm starten
14. Programm starten: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Argumente hinzufügen: c:\lif_tools\lif_healthcheck.ps1

15. Mit der rechten Maustaste auf die neu angelegte Aufgabe "LiF-Healthcheck" klicken -> Eigenschaften.
16. Den Reiter Trigger öffnen und den Eintrag bearbeiten
17. Häckchen bei "Wiederholen jede:" aktivieren und die Werte ändern in "1 Minute für die Dauer von 1 Tag" [ok klicken]
18. Das Eigenschaftenfenster von dem Task mit OK bestätigen.
19. Fertig 8-)



Nur um noch mal sicher zu gehen, heißt es nun das dass Script jede Minute überprüft ob der Server läuft, und wenn er abgestürtzt ist z.B. (.exe ist abgestürtzt | Passiert bei mir alle 3-4 Tage 1x) das dass Script dann den Server wieder startet?

Wenn nicht, wie mach ich das?
Wenn ja, top! Vielen dank.

Gruß Holz


SGoldberg
 
Posts: 8
Joined: 26 Sep 2014, 06:59

Re: How-To: Auto Restart Dedicated Server & Backup

Post by SGoldberg » 06 Oct 2014, 19:17

Holzmodem wrote:Nur um noch mal sicher zu gehen, heißt es nun das dass Script jede Minute überprüft ob der Server läuft, und wenn er abgestürtzt ist z.B. (.exe ist abgestürtzt | Passiert bei mir alle 3-4 Tage 1x) das dass Script dann den Server wieder startet?

Wenn nicht, wie mach ich das?
Wenn ja, top! Vielen dank.

Gruß Holz



Hey,

genau das heißt es. Das Script prüft jede Minute ob der Prozess noch läuft. Es kommt jedoch vor, dass der Prozess bei einem Absturz von der Windows Fehlerberichtserstattung gesperrt wird und deshalb nicht terminiert werden kann. Auch diesen Fehler fängt das Script ab und startet den LiF Server neu.

MfG


Holzmodem
 
Posts: 5
Joined: 29 Sep 2014, 20:36

Re: How-To: Auto Restart Dedicated Server & Backup

Post by Holzmodem » 06 Oct 2014, 19:25

Okay,....
Gut problem ist bei mir gerade nur dass er nichts macht :(
Alles so eingestellt wie im Tutorial beschrieben, leider tut sich nichts :(


SGoldberg
 
Posts: 8
Joined: 26 Sep 2014, 06:59

Re: How-To: Auto Restart Dedicated Server & Backup

Post by SGoldberg » 07 Oct 2014, 05:52

Holzmodem wrote:Okay,....
Gut problem ist bei mir gerade nur dass er nichts macht :(
Alles so eingestellt wie im Tutorial beschrieben, leider tut sich nichts :(


Hi,

prüf mal bitte ob du die Powershell überhaupt installiert hast. Das Script kannst du aus der Powershell auch manuell aufrufen um zu sehen ob es funktioniert oder nicht. (Powerschell öffnen und c:\lif_tools\lif_healthcheck.ps1 eingeben)

Prüf bitte nochmal ob du alle Pfadangaben berücksichtigt bzw. angepasst hast, inkl. der innerhalb der Scripte.


Holzmodem
 
Posts: 5
Joined: 29 Sep 2014, 20:36

Re: How-To: Auto Restart Dedicated Server & Backup

Post by Holzmodem » 08 Oct 2014, 20:54

Ach die Ordner müssen alle exakt so heißen wie im Tutorial?
Dachte ich könnte den Ordner erstellen wo ich mag und auch nennen. Und ja, Windows Powershell ist installiert gewesen.
DateiPfad eig. auch alle richtig, sogar schon mehrmals überprüft :P

Aber mal schauen, ich versuchs noch mal ganz von vorn.


OnkelBazi
 
Posts: 133
Joined: 22 Sep 2014, 09:24
Location: Bavaria

Re: How-To: Auto Restart Dedicated Server & Backup

Post by OnkelBazi » 09 Oct 2014, 11:28

Holzmodem wrote:Ach die Ordner müssen alle exakt so heißen wie im Tutorial?
Dachte ich könnte den Ordner erstellen wo ich mag und auch nennen. Und ja, Windows Powershell ist installiert gewesen.
DateiPfad eig. auch alle richtig, sogar schon mehrmals überprüft :P

Aber mal schauen, ich versuchs noch mal ganz von vorn.


bei mir gehts es leider auch nicht. Werde aber wohl auch nochmal komplett von vorne anfangen am WE und sehen wo der Fehler liegt


CloudStrife
 
Posts: 1
Joined: 08 Oct 2014, 22:53

Re: How-To: Auto Restart Dedicated Server & Backup

Post by CloudStrife » 10 Oct 2014, 09:12

Hat alles wunderbar funktioniert besten dank!


Chronotowb
 
Posts: 3
Joined: 05 Oct 2014, 15:47

Re: How-To: Auto Restart Dedicated Server & Backup

Post by Chronotowb » 10 Oct 2014, 12:52

Halloo~

Danke dass du die beiden netten scripts mit uns teilst :)

allerdings scheint die 7z funktion nicht richtig zu laufen. die archive sind leer :D kannst du da noch mal drüberschauen ? die sql exports klappen.
Image


Heimdall
 
Posts: 6
Joined: 08 Oct 2014, 09:41

Re: How-To: Auto Restart Dedicated Server & Backup

Post by Heimdall » 13 Oct 2014, 14:50

Bei mir Funktioniert das mit den Backups auch nicht:

Sicherung Datenbank ´lif_1´
Das System kann die angegebene Datei nicht finden.

7-Zip [64] 9.22 beta Copyright (c) 1999-2011 Igor Pavlov 2011-04-18

c:\life_tools\sicherung\lif_1_13.10.2014:1643.sql: WARNING: Das System kann den angegebenen Pfad nicht finden.

Creating aarchive C:_Stuff\SaveGames\Life_is_Feudal\lif_1_13.10.2014:1643.7z

WARNINGS for files:

c:\life_tools\sicherung\lif_1_13.10.2014:1643.sql : Das System kann den angegebenen Pfad nicht finden


Haudi1986
True Believer
 
Posts: 1
Joined: 15 Oct 2014, 01:06

Re: How-To: Auto Restart Dedicated Server & Backup

Post by Haudi1986 » 15 Oct 2014, 01:10

Alles funktioniert wunderbar....

ABER:

Es ploppt jede Minute ein schwarzes kleines Powershell Fenster auf, kann man das unterbinden oder auflassen um es wo anderst hin schieben zu können?

MFG Haudi


Kristensen
 
Posts: 14
Joined: 16 Oct 2014, 09:34

Re: How-To: Auto Restart Dedicated Server & Backup

Post by Kristensen » 16 Oct 2014, 11:03

Anyone able to repost this guide in english, as its confusing after google translate have been at it :)


Chronotowb
 
Posts: 3
Joined: 05 Oct 2014, 15:47

[Translation]: How-To: Auto Restart Dedicated Server & Backu

Post by Chronotowb » 20 Oct 2014, 19:16

there you go (:


Tools

- Microsoft Powershell v1 or higher (for Windows 2008 R2 SP1 Server allready installed) http://www.microsoft.com/en-us/download ... x?id=34595
- 7Zip x64 http://downloads.sourceforge.net/sevenzip/7z920-x64.msi


Powershell Configuration

1. Start Powershell
2. Type Set-ExecutionPolicy Unrestricted and confirm.


Automated restart of Dedicated LiF Server

1. Create a Folder which will contain the scripts. e.g. c:\lif_tools
2. Create a new File and name it lif_healthcheck.ps1 (make sure the File-Extension is ".ps1")
3. Open c:\lif_tools\lif_healthcheck.ps1 with notepad or any other Editor.
4. Copy and paste the following code:

Code: Select all
    $app = "C:\Steam\SteamApps\common\Life is Feudal Your Own Dedicated Server\ddctd_cm_yo_server.exe"
    $arguments = "-worldID 1"
    $proclif = "ddctd_cm_yo_server"
    $procerror = "werfault"

    $p = get-process $proclif
    $e = get-process $procerror

    if($e -eq $null)
    {
      if($p -eq $null)
      {
          Start-Process $app $arguments
      }
    }
    else
    {
      kill -processname $procerror
      kill -processname $proclif
      Start-Process $app $arguments
    }



5. Change the first line accoring to your LiF Server Directory.
6. Save File.

7. Open Windows Task-Scheduler (Start->Control Panel->System and Security->Administrative Tools->Task-Scheduler)

8. Rightclick Task-Scheduler-Libary
9. "Create Basic Task"
10. Name: LiF-Healthcheck [Next >]
11. Trigger: Daily [Next >]
12. Täglich: Adjust Time and date for the first Start, Recur every 1 Day [Next >]
13. Action: Start a Programm.
14. Programm: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Add Arguments: c:\lif_tools\lif_healthcheck.ps1 [Finish]


15. Rightclick the new Task -> Properties

16. Select the Trigger and click Edit.
17. Check "Repeat task every" - "1 Minute for a duration of 1 Day" [click okay]

18. Done! 8-)



Automated Backup LiF Database with 7z compression

1. Install 7Zip x64
2. Create a Folder which will contain the Backups. c:\lif_tools\backup

3. New File in c:\lif_tools , name it "save_lif_db.cmd". (make sure the File-Extension is ".cmd")

4. Open save_lif_db.cmd with notepad or any other Editor.
5. Copy and Paste the following:

Code: Select all
@echo off
    echo Backup Database 'lif_1'
    FOR /F "tokens=1,2,3 delims=/: " %%a in ('Time/T') do set CTIME=%%a%%b%%c
    set ZEIT=%CTIME%
    set DATUM=%date%
    "C:\Program Files\MariaDB 5.5\bin\mysqldump" -uroot -p<your Database Password> lif_1 > c:\lif_tools\backup\lif_1_%DATUM%_%ZEIT%.sql

    "C:\Program Files\7-Zip\7z.exe" a -t7z C:\_Stuff\SaveGames\Life_is_Feudal\lif_1_%DATUM%_%ZEIT%.7z "c:\lif_tools\sicherung\lif_1_%DATUM%_%ZEIT%.sql"
    del c:\lif_tools\sicherung\lif_1_%DATUM%_%ZEIT%.sql




6. Change "<your Database Password>" to your PW.
7. Open Windows Task-Scheduler (Start->Control Panel->System and Security->Administrative Tools->Task-Scheduler)

8. Rightclick Task-Scheduler-Libary
9. "Create Basic Task"
10. Name: LiF-Backup [Next >]
11. Trigger: Daily [Next >]
12. Täglich: Adjust Time and date for the first Start, Recur every 1 Day [Next >]
13. Action: Start a Programm.
14. Programm: c:\lif_tools\save_lif_db.cmd [Finish]

15. Rightclick the new Task -> Properties
16. Select the Trigger and click Edit.
17. Check "Repeat task every" - "2 Hours for a duration of 1 Day" [click okay]

18. Done! 8-)

Now the Database will be exported to c:\lif_tools\backup\ every 2 hours.

every now and then you should delete some old backup files so your HDD isn't running out of space ;-)

Have Fun.
Image


Kristensen
 
Posts: 14
Joined: 16 Oct 2014, 09:34

Re: How-To: Auto Restart Dedicated Server & Backup

Post by Kristensen » 21 Oct 2014, 06:44

Many thanks :D


Elias_Emporus
 
Posts: 2
Joined: 21 Oct 2014, 21:15

Re: How-To: Auto Restart Dedicated Server & Backup

Post by Elias_Emporus » 21 Oct 2014, 21:29

Hi

Als erstes Danke das du dir die Arbeit gemacht hast die Scripte zu schreiben :good: :Bravo: :good:

beide funktionieren Tadellos

Ich hab nur noch zwei Fragen dazu werden in der Datenbank ebenfals alle Änderungen der Welt gespeichert sprich plazierte Häuser Mauern etc? Und wo genau kann ich bei MariaDB 5.5.39 die gesicherte Datenbank wieder importieren ich habe da nur den Menüpunkt Datenbank SQL Export?


Chronotowb
 
Posts: 3
Joined: 05 Oct 2014, 15:47

Re: How-To: Auto Restart Dedicated Server & Backup

Post by Chronotowb » 22 Oct 2014, 10:38

werden in der Datenbank ebenfals alle Änderungen der Welt gespeichert sprich plazierte Häuser Mauern etc? Und wo genau kann ich bei MariaDB 5.5.39 die gesicherte Datenbank wieder importieren ich habe da nur den Menüpunkt Datenbank SQL Export?


Ja, das werden sie. Es wird alles was sich auf deiner Map geändert hat gesichert + bestehende Charactere auf dem server, ihr inventar, skills etc. ..Alles :)

Ich nehme an du nutzt HeidiSQL. Erinnerst du dich wie du die new.sql 'importiert' hast, als du den server aufgesetzt hast ? Genau so importierst du die backups.


Backup.sql mit editor öffnen > alles markieren + kopieren > LiF Datenbank in HeidiSQL anwählen/markieren > Reiter 'Abfrage' im rechten fenster > einfügen > bevor du den "Play Button" drückst, die Option 'sende mehrere Abfragen in einem Schritt' aktivieren > Abfrage starten

Bevor du ein Backup aufspielst musst du als erstes aber wieder die Datanbank neu erstellen und die new.sql importieren.
Image


Elias_Emporus
 
Posts: 2
Joined: 21 Oct 2014, 21:15

Re: How-To: Auto Restart Dedicated Server & Backup

Post by Elias_Emporus » 23 Oct 2014, 06:07

Hi

Danke für die Antworten jetzt bin ich um einiges schlauer :D


:good: :beer:
Elias


Heimdall
 
Posts: 6
Joined: 08 Oct 2014, 09:41

Re: How-To: Auto Restart Dedicated Server & Backup

Post by Heimdall » 27 Oct 2014, 08:24

Ich auch, vielen Dank !


Dragnod0
 
Posts: 3
Joined: 17 Jan 2015, 13:00

Re: How-To: Auto Restart Dedicated Server & Backup

Post by Dragnod0 » 23 Jan 2015, 18:49

Hi,
erst mal vielen dank für deine tolle Arbeit. Der "lif_healthcheck.ps1" Script funktioniert bei mir soweit ich das nach ein paar Minuten beurteilen kann ziemlich gut!

Aber der Backupscript funktioniert so leider nicht.

In Zeile 6 ist ein Fehler.
Nicht:
Code: Select all
C:\Programme\MariaDB 5.5\bin\mysqldump" -uroot -p<RootPasswort> lif_1 > c:\lif_tools\sicherung\lif_1


Sondern
C:\Programme\MariaDB 5.5\bin\mysqldump.exe" -uroot -pRootPasswort lif_1 > c:\lif_tools\sicherung\lif_1

Vielleicht wäre der Hinweis sinnvoll das bei dem Passwort auch die <> Zeichen entfernt werden müssen.
Jemand der wie ich kaum Ahnung von Batch Programmierung hat der könnte glauben das diese Notwendig sind da sie ja in der selben Zeile wieder benutzt werden.

Auserdem speichert der Script das Backup nicht in c:\lif_tools\sicherung sondern in C:\_Stuff\SaveGames\Life_is_Feudal\

Dazu einfach in Zeile 6
Code: Select all
"C:\Program Files\7-Zip\7z.exe" a -t7z C:\_Stuff\SaveGames\Life_is_Feudal\lif_1_%DATUM%_%ZEIT%.7z "c:\lif_tools\sicherung\lif_1_%DATUM%_%ZEIT%.sql"

Das Zielverzeichniss
C:\Program Files\7-Zip\7z.exe" a -t7z C:\_Stuff\SaveGames\Life_is_Feudal\lif_1_%DATUM%_%ZEIT%.7z "c:\lif_tools\sicherung\lif_1_%DATUM%_%ZEIT%.sql

zu dem Ort ändern wohin man es haben will.


Sorry wenn das jetzt etwas Umständlich und unfreundlich geschrieben war. Ist nicht böse gemeint ;)



Gruß


AliAladin
 
Posts: 1
Joined: 15 Feb 2015, 11:30

Re: How-To: Auto Restart Dedicated Server & Backup

Post by AliAladin » 15 Feb 2015, 11:47

Hallo,

habe alles nach der Beschreibung gemacht aber der Auto Restart funzt nicht.

Folgende Fehlermeldung bekomme ich.

Code: Select all
get-process : Es kann kein Prozess mit dem Namen "werfault" gefunden werden. Überprüfen Sie den Prozessname, rufen Sie das Cmdlet erneut auf.
In C:\lif_tools\lif_healthcheck.ps1:7 Zeichen:10
+       $e = get-process $procerror
     
      + CategoryInfo                         : ObjectNotFound: (werfault:String) [Get-Process], ProcessCommandException
      + FullyQualifiedErrorId              : NoProcessFoundForGivenName,Microsoft.PowerShell.Commands.GetProcessCommand


Auf den Server läuft als Betriebssystem Windows 2012R2
Last edited by AliAladin on 15 Feb 2015, 11:55, edited 1 time in total.


Illnux
 
Posts: 10
Joined: 09 Mar 2015, 00:56

Re: How-To: Auto Restart Dedicated Server & Backup

Post by Illnux » 09 Mar 2015, 02:02

Hallo zusammen,

erst mal, vielen Dank SGoldberg! Schöne Anleitung!
Ich hatte jedoch das gleiche Problem wie AliAladin.
Unter Windows Server 2012 Standard bekam ich ebenfalls den "Es kann kein Prozess mit dem Namen "werfault" gefunden werden." Fehler.
Daraufhin hab ich angefangen ein wenig mit deiner Vorlage rumzubasteln.

Dabei ist das folgende Script rausgekommen:
Alte Version im Spoiler:
Spoiler


Neue Version:
Code: Select all
### edit start ###
$app = "C:\Server\LifeIsFeudalServer\ddctd_cm_yo_server.exe"
$arguments = "-worldID 1"
$port = "28000"    # Port the server uses
$serverIP = "127.0.0.1"    # server IP (do not change if script runs on same server)
$processLiF = "ddctd_cm_yo_server"
$processError = "werfault"
$log = "C:\Server\Logs\Life_is_Feudal\aliveCheck.txt"
### edit end ###

### email settings start ### comment out this section if not used
# $emailPath = "C:\Server\Tools\send_email.ps1"    # path to send_mail script
# $sender = "Primus LiF Status <yourmail@address.com>"    # your sender name and email
# $subject = "LiF Server Crash"    # what in subject line is shown
# $email = "Your Life is Feudal Server has crashed.`nTime: " + (Get-Date).tostring()   # your error message
### email settings end ###

$lifProcess = Get-Process | Where-Object { $_.ProcessName -eq $processLiF }
$errorProcess = Get-Process | Where-Object { $_.ProcessName -eq $processError }
$LiF_response = $lifProcess.Responding

if($lifProcess -eq $null){
    echo "Server not running"
    # do nothing
}else{
    if($lifProcess.mainWindowTitle.Contains("players")){
        # Server should be running and ready to connect to, do ping check
        $udpClient = New-Object System.Net.Sockets.UdpClient
        $pingBuf = New-Object Byte[] -ArgumentList 1
        $pingBuf[0] = 14
        $udpClient.Connect($serverIP,$port)
        $udpClient.Client.ReceiveTimeout=2000
        $udpClient.Send($pingBuf,1) | Out-Null
        $udpRecIP= New-Object System.Net.IPEndPoint([System.Net.IPAddress]::Any, 0)
        try{
            $recv = $udpClient.Receive([ref]$udpRecIP)
            $pingCheck = "OK"
        }
        catch{
            $pingCheck = "ERROR"
        }
   
        if($pingCheck -eq "OK"){
            echo "Server is responding."
            # do nothing
        }else{
            # &$emailPath -sender $sender -subject $subject -message $email    # send email via mail script; comment out if not used
            $error = (Get-Date).tostring() + " Error: Kill LiF-Server and restart."
            echo $error
            Add-Content $log $error
            if($errorProcess -ne $null){    # not equal, therefore errorPorcess exists
                kill -processname $processerror
            }
            kill -processname $processLiF
            Start-Process $app $arguments
        }
    }else{
        echo "Server is probably starting."
        # do nothing
    }
}

Dazu sei gesagt:
  • Meine Tests hat es alle bestanden, es sollte also funktionieren.
  • Vorgehensweise des Scripts:
    • Zuerst werden alle Variablen werden initialisiert.
    • Das Script prüft nun ob die Server Applikation (ddctd_cm_yo_server) überhaupt gestartet ist.
      Falls nein, dann ist das Script fertig. Hier starte ich auch nicht automatisch, da das mit meinem auto-update script kollidieren würde.
      Falls ja, dann wird weiter geprüft.
    • Das Script prüft ob im Server Fenster das Wort "players" auftaucht. Dieses (players 0/40) wird erst angezeigt wenn der Server auch komplett hochgefahren und geladen ist, sodass mans ich dahin verbinden kann.
      Taucht das Wort nicht auf, dann startet der Server wohl grade und kann noch nicht via Ping angesprochen werden (nächster Punkt). Da der Start je nach Servereinstellung sogar 1 Stunde dauern kann, wäre es blöd ihn jedesmal abzuschießen während er bootet, aber nicht ansprechbar ist.
      Ist die Bedingung erfüllt, prüft das Script weiter, ansonsten ist es fertig.
    • Nun wird der Server auf die, von den Entwicklern dafür eingerichtete, Schnittstelle ein Ping losgelassen. Meldet sich der Server auf diesen Ping innerhalb von 2 Sekunden, dann ist alles OK. Das Script ist fertig.
      Falls der Ping fehlschlagen, dann geht es weiter.
    • Die Fehlermeldung wird ins Log geschrieben.
      Sollte der Windows Error Prozess "werfault" gestartet sein, dann wird dieser geschlossen.
      Der Server Prozess wird geschlossen und neu gestartet.
      Das Script ist fertig.
  • Der Vorteil dieses Script ist, dass es unabhängig von dem Windows Error Prozess agieren kann, der ja auch bei anderen Programmen auftauchen kann und dann fälschlicherweise den LiF Server abschießen würde.
  • Auskommentiert ist auch schon seine Funktion eingebaut, die bei Serverabsturz eine E-Mail verschickt, sodass man dann zeitnah mal nach dem rechten sehen kann. (Dazu kommt noch ein extra Beitrag, wenn ich Zeit habe da eine Anleitung für zu schreiben.)

Ich war auch noch so dreist und habe bei dem Backup Skript die ersten Zeilen geändert zu:
Code: Select all
echo Sicherung Datenbank 'LiF_1'
for /f "tokens=1-3 delims=. " %%a in ('date/t') do set tag=%%a&set monat=%%b&set jahr=%%c
for /f "tokens=1-3 delims=: " %%d in ('time/t') do set hour=%%d&set minute=%%e
set ZEIT=%hour%%minute%
set DATUM=%jahr%%monat%%tag%

Das Skript nimmt nun das Datum auseinander und sortiert es nach dem Format JahrMonatTag, sodass man im Ordner die Backups chronologisch sortiert hat (ohne nach Dateierstelldatum sortieren zu müssen) und immer direkt das neuste findet. Vielleicht gefällt es ja dem einen ander anderern. (Ich mag's sortiert.)

Zu guter Letzt:
Ich arbeite derweil an einem Skript, dass den Server automatisch updaten soll (am besten mit Valves steamCMD.exe).
Der Schritt der mir momentan noch Probleme bereitet ist abrufen zu können, ob überhaupt ein Update verfügbar ist.
Das Kommando +app_update 320850 unter steamCMD fragt zwar zuerst noch einem Update, installiert es dann aber sofort.
Für den Server wäre es natürlich besser wenn man vorher fragt:
Gibt es ein Update, falls Nein --> tue nichts; falls Ja --> beende Server,
frage ob Server aus ist, falls Nein --> warte nochmal und frage erneut; falls Ja --> mache update,
wenn Update fertig starte Server neu

Ich habe nun stundenlang gesucht, aber mir ist kein Ansatz über den Weg gelaufen, um das zu verwirklichen. Wenn ich blind war, dann bitte ich um einen Link zur Anleitung. :)

Für Ideen bin ich dankbar und denke die kommen allen hier zugute.

Gruß
illnux

Edit: Das crash-restart script ist nun überarbeitet (getestet & funktioniert) und Anmerkungen dazu sind hinzugefügt.
Last edited by Illnux on 29 Mar 2015, 02:02, edited 1 time in total.


Illnux
 
Posts: 10
Joined: 09 Mar 2015, 00:56

Re: How-To: Auto Restart Dedicated Server & Backup

Post by Illnux » 26 Mar 2015, 20:48

Hallo zusammen,

ich habe mein auto-update script fertig!

Voraussetzungen:
  • Microsoft Powershell v1.0 oder höher (wie im ersten Post)
    http://www.microsoft.com/en-us/download ... x?id=34595
    1. Powershell öffnen
    2. Den Befehl Set-ExecutionPolicy Unrestricted eingeben und mit Ja bestätigen. (Falls noch nicht durch 1. Post geschehen)
  • steamCMD
    http://media.steampowered.com/installer/steamcmd.zip
    1. Erstelle ein steamCMD Ordner
    2. Extrahiere die Zip-Datei hinein
    3. Falls Steam Guard aktiviert ist (ist Standard), dann muss noch der Code eingegeben werden um steamCMD zu autorisieren. Dazu steamCMD starten, mit Anmededaten anmelden, auf die Mail von Steam warten und dann Code eingeben.


Meine Idee für den Check ob es ein Update gibt nutze ich eine zweite Life is Feudal Serverinstallation. Dieser Server läuft jedoch nicht, sondern dient lediglich dem Abgleichen.

Anleitung:
Ich empfehle den LiF-Server direkt mit steamCMD zu installieren.
Falls der Server schon mit der normalen Steam Anwendung installiert wurde ist das kein Problem.

Entweder passe den Pfad im Script auf den Steam Pfad an, oder installiere einmal den Server neu mit:
Code: Select all
steamcmd +login BENUTZERNAME PASSWORT +force_install_dir C:\Server\LifeIsFeudalServer +app_update 320850 +quit

Dabei natürlich BENUTZERNAME und PASSWORT erstzen, sowie den Wunschpfad ggf. anpassen. (Ohne Leerzeichen, oder eben in "" setzen.)
Dann die alte Installation aus SteamApps/common/... einfach über die neue Installation kopieren und ersetzen, so hat man alle Konfiguationen und Weltdaten (PassabilityWorldMap usw.) wieder da.
Nicht vergessen die Shortcuts/Verlinkung (auf dem Desktop o.ä.) und die Firewallregeln auf den neuen Pfad anzupassen.

Nun kommen wir zur Einrichtung für das auto-update:
1. Erzeugen des zweiten Server Ordners für den Update-Check:
  • kopiere den "produktiven" Life is Feudal Server Ordner an eine neue Stelle und bennenne ihn (z.B.: zzz_LifeIsFeudalServer_updatecheck)
2. Erstelle einen Ordner für Log Dateien
  • Hier können die Log-Dateien gespeichert werden, falls dies nicht gewünscht wird unbedingt dran denken die zwei Stellen im Script auszukommentieren. (Ist im Script durch Kommentare markiert.)
3. Das Script anpassen
  • Die ersten 9 Zeilen im Script beinhalten die Variablen wie Pfade und Zugangsdaten. Diese müssen angepasst werden.
Ich habe den Code soweit kommentiert, dass er hoffentlich verständlich ist.
Code: Select all
### edit start ###
$steamUser = "USERNAME"    # your Steam username
$steamPassword = "PASSWORD"    # your Steam password
$checkPath = "C:\Server\zzz_LifeIsFeudalServer_updatecheck"    # path to second LiF installation for check purpose only
$updatePath = "C:\Server\LifeIsFeudalServer"    # your actual LiF server path
$steamCMD = "C:\Server\steamcmd\steamcmd.exe"    # path to steamCMD.exe
$log = "C:\Server\Logs\Life_is_Feudal\updates.txt"    # path to log file; comment line 56 and 63 out if not wanted!
$serverArguments = "-worldID 1"    # for starting the right world when server restarts after update
### edit end ###

# build paths for steamCMD
$argumentsCheck = "+login " + $steamUser + " " + $steamPassword + " +force_install_dir " + $checkPath + " +app_update 320850 +quit"
$argumentsDoUpdate = "+login " + $steamUser + " " + $steamPassword + " +force_install_dir " + $updatePath + " +app_update 320850 +quit"

$loginCheck = "Logged in OK"    # needed to check if steamCMD has connection
$updateCheck = "already up to date"    # needed to check if server is up to date
$processLiF = "ddctd_cm_yo_server"     # needed to check if server is running and stop it
$server = $updatePath + "\ddctd_cm_yo_server.exe"    # build path for restart

# build steamCMD process to catch its output
$check = New-Object System.Diagnostics.ProcessStartInfo
$check.FileName = $steamCMD
$check.Arguments = $argumentsCheck
$check.UseShellExecute = $false
$check.CreateNoWindow = $true
$check.RedirectStandardOutput = $true

$checkProcess = New-Object System.Diagnostics.Process
$checkProcess.StartInfo = $check
echo "Checking Life is Feudal server for updates."
$checkProcess.Start() | Out-Null    # start the process
$checkProcess.WaitForExit()     # waits to end process

$checkResult = $checkProcess.StandardOutput.ReadToEnd()    # read output from checkProcess

if ($checkResult.Contains($loginCheck)) {    # check if connection OK
    if ($checkResult.Contains($updateCheck)) {    # check output for $updateCheck string
        echo "Already up to date!"
        $msg = (Get-Date).tostring() + " Server already up to date."
        #Add-Content $log $msg    # uncomment if you want this info in your log.
    } else {
        echo "New update available!"
        Write-Host "Server is running: " -NoNewLine
        $p = Get-Process | Where-Object { $_.ProcessName -eq $processLiF }
        $LiF_alive = $p.Responding
        if($LiF_alive){
            Write-Host "yes"
            echo "stopping server"
            Stop-Process -processname $ProcessLiF
            Wait-Process -name $ProcessLiF
            echo "server stopped"
        }else{
            Write-Host "no"
        }
        echo "start update"
        Start-Process $steamCMD $argumentsDoUpdate -NoNewWindow -Wait    # starts actual update
        $msg = (Get-Date).tostring() + " Server updated."
        Add-Content $log $msg    # comment this line out if you want no log file
        echo "Starting Life is Feudal server."
        Start-Process $server $serverArguments    # restarts server
    }
}else{
    $msg = (Get-Date).tostring() + " steamCMD had no working connection."
    Add-Content $log $msg    # comment this line out if you want no log file
}

  • Speichere dieses Script ab mit einer .ps1 Endung (z.B.: Life_Is_Feudal_Server_updateCheck.ps1)

4. Aufgabe planen (aus dem 1. Post kopiert)
  • Windows Aufgabenplanung öffnen (Start->Systemsteuerung->Verwaltung->Aufgabenplanung)
  • Mit der rechten Maustaste auf "Aufgabenplanungsbibliothek" klicken
  • "Einfache Aufgabe erstellen" auswählen
  • Name: LiF-Update [Weiter klicken]
  • Trigger: Täglich [weiter klicken]
  • Täglich: Datum und Uhrzeit für den ersten Start anpassen, wiederholung alle 1 Tage [weiter klicken]
  • Aktion: Programm starten
  • Programm starten: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
    Argumente hinzufügen: C:\Server\Tools\Life_Is_Feudal_Server_updateCheck.ps1
  • Mit der rechten Maustaste auf die neu angelegte Aufgabe "LiF-Healthcheck" klicken -> Eigenschaften.
  • Den Reiter Trigger öffnen und den Eintrag bearbeiten
  • Häckchen bei "Wiederholen jede:" aktivieren und die Werte ändern in "12 Stunden für die Dauer von 1 Tag" [ok klicken]
  • Das Eigenschaftenfenster von dem Task mit OK bestätigen.
  • Fertig
Somit wird 2 Mal pro Tag nach Updates gesucht.

Fertig.

Jetzt wird ale 12 Stunden überprüft, ob es ein neues Update gibt und nur bei Bedarf der Server gestoppt und nach dem Update wieder gestartet.
Die zweite LiF-Server Installation läd zwar auch das komplette Update, das bedeutet pro Update den doppelten Datentransfer, aber ich finde der Nutzen überwiedgt das und sollte mit den heutigen Bandbreiten kein Problem darstellen. Gleichzeitig ist damit auch der Abgleich auf ein weiteres Update wieder möglich.
Und dass der Server nur wirklich bei einem Update neu startet ist für mich das bisschen Traffic wert.

Konfliktmöglichkeiten mit dem Absturz-auto-restart-script:
Falls ihr das restart-script von SGoldberg nutzt, dann kommt euch das möglicherweise während ein Update gemacht wird (und der Server dabei ja aus ist) in die Quere und startet den Server während der noch Daten runterläd neu. Das kann natürlich gut in einem Crash des Servers enden und wenn es dann noch ganz blöd läuft zerschießt der dabei die Datenbank.
In meiner (Achtung: bis jetzt nicht vollständigen getesteten) Variante im vorherigen Post versuche ich das Problem zu umgehen.

Was noch zu verbessern wäre:
  • Schön wäre eine Nachricht vor der Serverabschaltung im globalen Chat, dass der Server gleich ein Update macht und wann er dann ungefähr wieder zu erreichen wäre.
    (Hier hab ich aber auch noch gar keine Idee wie das zu machen wäre, außer z.B. mit einem wahrlich unschönen und fehleranfälligen AutoIt Script. Und mir fehlt der Konsolen Befehl für eine Chat Nachricht wie z.B. /say blablabla.)
  • (erledigt) Ein weiterer Punkt ist, zu prüfen, ob überhaupt eine Internetverbindung besteht. Das werde ich demnächst noch einfügen.

Für konstruktive Kritik bin ich offen und dankbar.

Gruß
illnux

Edit: Steam Guard Hinweis eingefügt
Edit2: Login Check ins Script hinzugefügt.

User avatar
HolyCrusader
Beta Tester
 
Posts: 251
Joined: 24 Nov 2014, 15:47

Re: How-To: Auto Restart Dedicated Server & Backup

Post by HolyCrusader » 20 Nov 2015, 03:02

Illnux wrote:Hallo zusammen,

erst mal, vielen Dank SGoldberg! Schöne Anleitung!
Ich hatte jedoch das gleiche Problem wie AliAladin.
Unter Windows Server 2012 Standard bekam ich ebenfalls den "Es kann kein Prozess mit dem Namen "werfault" gefunden werden." Fehler.
Daraufhin hab ich angefangen ein wenig mit deiner Vorlage rumzubasteln.


Thank you for this!

I used FireDaemon to point to the PowerShell executable and then in the Parameters, I pointed it to the .ps1 file called autorestart (& copied your code into it)

It works but if you try to run two LIF processes, it will shutdown the other LiF process

Return to Deutschsprachige Diskussionen