Skip to main content

Script de sauvegarde API - Palworld

Dernière mise à jour : 19/10/2025


Objectif

Ce script automatise la sauvegarde interne du monde Palworld via l’API REST du serveur dédié. J'ai remarquer que les sauvegardes automatiques parfois s'arretais donc j'ai décider de forcer la "save" via l'api. Il envoie la commande save toutes les minutes pour forcer l’écriture du monde sur le disque, sans interrompre la partie.


Emplacement et planification

📂 Fichier : C:\Scripts\save-palworld.bat
⏱️ Exécution : toutes les 1 minute via le Planificateur de tâches Windows
👤 Compte : SYSTEM (pas besoin d’être connecté)


Contenu du script

@echo off
setlocal EnableExtensions EnableDelayedExpansion

set "API_HOST=127.0.0.1"
set "API_PORT=8212"
set "ADMIN_PASS=lex120497"
set "SAVE_URL=http://%API_HOST%:%API_PORT%/v1/api/save"

set "LOGDIR=C:\Scripts\logs"
if not exist "%LOGDIR%" mkdir "%LOGDIR%"

for /f %%I in ('powershell -NoProfile -Command "Get-Date -Format yyyy-MM-dd_HH-mm-ss"') do set "TS=%%I"
set "LOGFILE=%LOGDIR%\palworld_save_%TS%.log"
set "LASTLOG=%LOGDIR%\palworld_save_latest.log"
set "CURL=%SystemRoot%\System32\curl.exe"

set "ATTEMPTS=3"
set "DELAY_BETWEEN=5"
set "SUCCESS=0"

echo [%TS%] Démarrage sauvegarde Palworld > "%LOGFILE%"

for /l %%A in (1,1,%ATTEMPTS%) do (
    echo [%TS%] Tentative %%A/%ATTEMPTS%... >> "%LOGFILE%"
    "%CURL%" -sS -f -X POST -d "" --user "admin:%ADMIN_PASS%" --max-time 10 "%SAVE_URL%" >> "%LOGFILE%" 2>&1
    set "RC=!ERRORLEVEL!"
    if "!RC!"=="0" (
        set "SUCCESS=1"
        echo [%TS%] SUCCÈS (RC=!RC!) >> "%LOGFILE%"
        goto after_call
    ) else (
        echo [%TS%] ÉCHEC (RC=!RC!). Nouvelle tentative dans %DELAY_BETWEEN%s... >> "%LOGFILE%"
        powershell -NoProfile -Command "Start-Sleep -Seconds %DELAY_BETWEEN%" >nul 2>nul
    )
)

:after_call
if "%SUCCESS%"=="1" (
    echo [%TS%] Sauvegarde demandée avec succès. >> "%LOGFILE%"
) else (
    echo [%TS%] ÉCHEC après %ATTEMPTS% tentatives. >> "%LOGFILE%"
)

copy /y "%LOGFILE%" "%LASTLOG%" >nul 2>nul

endlocal
exit /b 0

Fonctionnement

  • Appelle l’API POST /v1/api/save sur le port 8212
  • Authentification de base (admin:lex120497)
  • Réessaie jusqu’à 3 fois en cas d’échec réseau
  • Crée des logs horodatés dans C:\Scripts\logs
  • Indépendant de l’utilisateur connecté

Conseils

  • Vérifie que ton serveur Palworld écoute bien sur 127.0.0.1:8212
  • Active l’API dans ton fichier de config PalWorldSettings.ini
  • Combine-le avec le second script (backup) pour une sauvegarde complète 🔥