Skip to main content

Script de backup complet -Palworld

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


Objectif

Ce script crée une copie physique compressée du monde Palworld toutes les 5 minutes, en conservant uniquement les sauvegardes des 7 derniers jours.


Emplacement et planification

📂 Fichier : C:\Scripts\backup-palworld.bat
⏱️ Exécution : toutes les 5 minutes via le Planificateur de tâches Windows
👤 Compte : SYSTEM


Contenu du script

@echo off
setlocal EnableExtensions EnableDelayedExpansion

set "SOURCE_DIR=D:\PalworldServer\Pal\Saved\SaveGames\0"
set "DEST_ROOT=C:\Backups\Palworld"
set "RETENTION_DAYS=7"
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 "ZIPFILE=%DEST_ROOT%\Backup_%TS%.zip"
set "LOGFILE=%LOGDIR%\palworld_backup_%TS%.log"
set "LASTLOG=%LOGDIR%\palworld_backup_latest.log"

echo [%TS%] === DÉMARRAGE BACKUP PALWORLD (ZIP) === > "%LOGFILE%"
echo [%TS%] SOURCE : %SOURCE_DIR% >> "%LOGFILE%"
echo [%TS%] DEST   : %ZIPFILE% >> "%LOGFILE%"

if not exist "%SOURCE_DIR%" (
  echo [%TS%] ERREUR : Source introuvable. >> "%LOGFILE%"
  goto :end
)

if not exist "%DEST_ROOT%" mkdir "%DEST_ROOT%" >> "%LOGFILE%" 2>&1

echo [%TS%] Compression en cours... >> "%LOGFILE%"
powershell -NoProfile -Command "Compress-Archive -Path '%SOURCE_DIR%\*' -DestinationPath '%ZIPFILE%' -CompressionLevel Optimal -Force" >> "%LOGFILE%" 2>&1
if %ERRORLEVEL% NEQ 0 (
  echo [%TS%] ERREUR de compression. >> "%LOGFILE%"
  goto :end
)
echo [%TS%] ZIP créé avec succès. >> "%LOGFILE%"

echo [%TS%] Suppression des anciens backups/logs (> %RETENTION_DAYS% j) >> "%LOGFILE%"
powershell -NoProfile -Command "$limit=(Get-Date).AddDays(-%RETENTION_DAYS%); Get-ChildItem '%DEST_ROOT%' -Filter 'Backup_*.zip' | Where-Object { $_.LastWriteTime -lt $limit } | Remove-Item -Force" >> "%LOGFILE%" 2>&1
powershell -NoProfile -Command "$limit=(Get-Date).AddDays(-%RETENTION_DAYS%); Get-ChildItem '%LOGDIR%' -Filter 'palworld_backup_*.log' | Where-Object { $_.LastWriteTime -lt $limit } | Remove-Item -Force" >> "%LOGFILE%" 2>&1

:end
copy /y "%LOGFILE%" "%LASTLOG%" >nul 2>&1
echo [%TS%] === FIN BACKUP PALWORLD === >> "%LOGFILE%"
endlocal
exit /b 0

Fonctionnement

  • Crée un fichier ZIP daté dans C:\Backups\Palworld\Backup_YYYY-MM-DD_HH-mm-ss.zip
  • Compresse directement le dossier du monde Palworld
  • Supprime automatiquement les backups et logs de plus de 7 jours
  • Génére des logs détaillés pour chaque exécution

Conseils

  • Adapte SOURCE_DIR selon ton installation Palworld
  • Vérifie que le service SYSTEM a accès à C:\Backups\Palworld
  • Combine ce script avec save-palworld.bat pour une solution de sauvegarde complète 🔒