Sauvegarder et restaurer votre serveur FiveM
Un serveur FiveM sans sauvegarde testée, c'est une communauté qui peut disparaître d'un seul crash. Voici quoi sauvegarder, comment automatiser, et comment vraiment restaurer.
Pourquoi sauvegarder un serveur FiveM ?
Sauvegarder un serveur FiveM protège votre communauté contre une mauvaise mise à jour, un script défectueux, une suppression accidentelle, une corruption de base de données ou la perte complète du serveur.
Sur un serveur RP, les données les plus importantes sont généralement enregistrées dans MySQL ou MariaDB :
- personnages ;
- argent et comptes bancaires ;
- inventaires ;
- métiers et grades ;
- véhicules possédés ;
- logements ;
- sanctions ;
- numéros de téléphone ;
- données propres aux scripts.
Perdre uniquement les artifacts FiveM est rarement dramatique : ils peuvent être téléchargés de nouveau. Perdre la base MySQL peut en revanche supprimer plusieurs mois ou plusieurs années de progression.
Fichiers FiveM sans base MySQL
→ scripts présents, progression absente
Base MySQL sans resources/
→ données présentes, serveur potentiellement inutilisable
Fichiers + base + configurations
→ restauration complète possible
Une sauvegarde efficace doit être :
- automatique ;
- horodatée ;
- conservée en plusieurs versions ;
- copiée hors du serveur ;
- protégée contre les accès non autorisés ;
- régulièrement restaurée dans un environnement de test.
Vous restez responsable de vos données, de la fréquence des exports et de la vérification de leur restauration.
Quoi sauvegarder exactement ?
Une sauvegarde FiveM complète doit couvrir les fichiers du serveur et sa base de données.
| Élément | Contenu | Priorité |
|---|---|---|
resources/ | Scripts, maps, véhicules, frameworks et configurations | Élevée |
server.cfg | Ressources démarrées, endpoints, convars et permissions | Élevée |
txData/ | Profils txAdmin, administrateurs et paramètres | Élevée |
| Base MySQL | Personnages, inventaires, métiers et données RP | Critique |
| Fichiers ACE | Groupes et permissions du serveur | Élevée |
| Automatisations | Cron, scripts et services systemd | Moyenne |
| Version des artifacts | Numéro de build utilisé | Moyenne |
Le dossier txData/ peut contenir plusieurs profils. Vérifiez le profil réellement utilisé avant de produire votre archive.
Vous pouvez généralement exclure les fichiers régénérables :
cache/
server-cache/
server-cache-priv/
logs anciens
archives temporaires
Le cache ne contient pas la configuration métier du serveur et peut être recréé au prochain démarrage.
Sauvegarder les secrets séparément
La clé Cfx.re, la chaîne de connexion MySQL, les webhooks et les tokens doivent être conservés dans une archive distincte et chiffrée.
Ne publiez jamais :
sv_licenseKey
mysql_connection_string
webhook Discord
token d'API
mot de passe MySQL
Une archive contenant server.cfg peut contenir plusieurs de ces secrets. Protégez-la avec des permissions strictes et ne la déposez pas dans un stockage public.
Pour comprendre le fonctionnement de la base, consultez le guide sur oxmysql et MySQL avec FiveM.
Sauvegarder la base MySQL de FiveM
Pour une base utilisant principalement InnoDB, mysqldump --single-transaction permet de produire un export cohérent sans verrouiller les tables pendant toute l’opération.
Créez un dossier réservé aux paramètres de sauvegarde :
sudo install -d \
-m 700 \
/etc/fivem-backup
Créez un fichier d’identifiants :
sudo nano /etc/fivem-backup/mysql.cnf
Contenu :
[client]
user=fivem_backup
password=REMPLACEZ_PAR_UN_SECRET_FORT
host=127.0.0.1
Protégez-le :
sudo chown root:root /etc/fivem-backup/mysql.cnf
sudo chmod 600 /etc/fivem-backup/mysql.cnf
Créez ensuite le dump :
sudo mysqldump \
--defaults-extra-file=/etc/fivem-backup/mysql.cnf \
--single-transaction \
--quick \
--routines \
--triggers \
--databases fivem_db \
| gzip \
> /var/backups/fivem-db.sql.gz
Adaptez fivem_db au nom réel de la base.
Vérifiez immédiatement l’archive :
gzip -t /var/backups/fivem-db.sql.gz
ls -lh /var/backups/fivem-db.sql.gz
Ne placez jamais le mot de passe directement après
-pdans la commande. Il pourrait être enregistré dans l’historique ou devenir visible par d’autres processus.
Évitez également de copier directement les fichiers internes de MySQL pendant que le moteur fonctionne. Une copie à chaud de son répertoire de données peut produire un ensemble incohérent si elle n’est pas réalisée avec une méthode prévue pour ce type de sauvegarde.
Pour une sauvegarde finale avant une migration ou une mise à jour majeure, placez idéalement le serveur en maintenance afin d’empêcher les modifications de schéma et les nouvelles écritures applicatives pendant l’opération.
Sauvegarder les fichiers du serveur
Créez une archive horodatée contenant les ressources, les configurations et les profils txAdmin :
sudo tar \
--exclude="cache" \
--exclude="server-cache" \
--exclude="server-cache-priv" \
-czf "/var/backups/fivem-files-$(date +%F_%H-%M-%S).tar.gz" \
/home/fivem/server/resources \
/home/fivem/server/server.cfg \
/home/fivem/server/permissions.cfg \
/home/fivem/txData
Adaptez les chemins à votre installation. Le fichier server.cfg peut se trouver dans le dossier d’un profil txAdmin plutôt qu’à la racine indiquée dans cet exemple.
Vérifiez le contenu sans extraire l’archive :
sudo tar \
-tzf /var/backups/fivem-files-AAAA-MM-JJ_HH-MM-SS.tar.gz \
| head -n 30
Une archive créée sans erreur n’est pas nécessairement complète. Contrôlez la présence de :
resources/
server.cfg
permissions.cfg
txData/
Notez séparément la version des artifacts actuellement utilisée :
Artifact FiveM : build XXXXX
Date de la sauvegarde : AAAA-MM-JJ
Version ESX/QBCore : XXXXX
Version oxmysql : XXXXX
Automatiser avec un script et cron
Créez le dossier de sauvegarde :
sudo install -d \
-m 700 \
/var/backups/fivem
Créez le script :
sudo nano /usr/local/sbin/backup-fivem.sh
Ajoutez :
#!/usr/bin/env bash
set -Eeuo pipefail
umask 077
DATE="$(date +'%Y-%m-%d_%H-%M-%S')"
BACKUP_DIR="/var/backups/fivem"
SERVER_DIR="/home/fivem/server"
TXDATA_DIR="/home/fivem/txData"
MYSQL_CONFIG="/etc/fivem-backup/mysql.cnf"
DATABASE="fivem_db"
RETENTION_DAYS="14"
mkdir -p "$BACKUP_DIR"
DB_ARCHIVE="$BACKUP_DIR/mysql_${DATE}.sql.gz"
FILES_ARCHIVE="$BACKUP_DIR/files_${DATE}.tar.gz"
mysqldump \
--defaults-extra-file="$MYSQL_CONFIG" \
--single-transaction \
--quick \
--routines \
--triggers \
--databases "$DATABASE" \
| gzip > "$DB_ARCHIVE"
gzip -t "$DB_ARCHIVE"
tar \
--exclude="cache" \
--exclude="server-cache" \
--exclude="server-cache-priv" \
-czf "$FILES_ARCHIVE" \
"$SERVER_DIR/resources" \
"$SERVER_DIR/server.cfg" \
"$SERVER_DIR/permissions.cfg" \
"$TXDATA_DIR"
tar -tzf "$FILES_ARCHIVE" > /dev/null
find "$BACKUP_DIR" \
-type f \
\( -name "mysql_*.sql.gz" -o -name "files_*.tar.gz" \) \
-mtime "+$RETENTION_DAYS" \
-delete
echo "Sauvegarde FiveM terminée : $DATE"
Rendez-le exécutable :
sudo chown root:root /usr/local/sbin/backup-fivem.sh
sudo chmod 700 /usr/local/sbin/backup-fivem.sh
Lancez-le manuellement avant de l’automatiser :
sudo /usr/local/sbin/backup-fivem.sh
Vérifiez les fichiers :
sudo ls -lh /var/backups/fivem/
Planifiez ensuite une sauvegarde quotidienne avec la crontab root :
sudo crontab -e
Exemple à 04 h 00 :
0 4 * * * /usr/local/sbin/backup-fivem.sh >> /var/log/backup-fivem.log 2>&1
Consultez le guide sur les tâches planifiées avec cron pour comprendre la syntaxe et vérifier l’exécution.
Testez la rotation sans
-deleteavant la mise en production si vous modifiez les chemins ou les motifs du script.
Externaliser une copie hors site
Une sauvegarde conservée uniquement dans /var/backups/ reste stockée sur le même serveur. Elle peut disparaître avec celui-ci lors d’une suppression, d’une compromission ou d’une perte du stockage.
Copiez les archives vers un autre serveur :
rsync -avz \
-e "ssh -i /root/.ssh/fivem_backup" \
/var/backups/fivem/ \
backup@SERVEUR_DISTANT:/archives/fivem/
Utilisez une clé SSH réservée à cette tâche et limitez les droits du compte distant.
Vous pouvez aussi employer :
- SFTP ;
- SCP ;
- un stockage objet compatible avec votre outil ;
- un serveur de sauvegarde distinct ;
- une archive chiffrée conservée hors ligne.
Le guide pour transférer des fichiers vers un VPS présente les méthodes disponibles.
Des sauvegardes automatiques sont incluses pour vous aider à restaurer. Conservez aussi vos propres exports réguliers : vous restez responsable de vos données.
La stratégie de sauvegarde serveur explique également la règle 3-2-1 : plusieurs copies, sur des emplacements différents, dont une hors site.
Restaurer et tester une sauvegarde FiveM
Une sauvegarde n’a de valeur que si vous savez la restaurer. Effectuez le test sur un serveur isolé, avec une base distincte et sans accès public aux joueurs.
Restaurer les fichiers
Créez un dossier de test :
sudo mkdir -p /srv/fivem-restore-test
Extrayez l’archive :
sudo tar \
-xzf /var/backups/fivem/files_AAAA-MM-JJ_HH-MM-SS.tar.gz \
-C /srv/fivem-restore-test
Contrôlez les fichiers :
sudo find /srv/fivem-restore-test \
-maxdepth 4 \
-type f \
| head -n 50
Adaptez les propriétaires au compte du serveur de test :
sudo chown -R fivem:fivem /srv/fivem-restore-test
Restaurer la base
Créez une base séparée :
CREATE DATABASE fivem_restore_test
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
Importez le dump :
gunzip -c \
/var/backups/fivem/mysql_AAAA-MM-JJ_HH-MM-SS.sql.gz \
| mysql \
--defaults-extra-file=/etc/fivem-backup/mysql.cnf \
fivem_restore_test
Créez un fichier de configuration propre au test avec une autre chaîne de connexion et un autre port. N’utilisez pas la base de production pendant cette validation.
Démarrez le serveur avec txAdmin, puis vérifiez :
- chargement des ressources ;
- connexion MySQL ;
- personnages ;
- argent ;
- inventaires ;
- métiers ;
- véhicules ;
- logements ;
- permissions administrateur ;
- redémarrage du serveur ;
- nouvelles écritures en base.
Consultez le guide pour démarrer avec txAdmin si vous devez créer un profil de restauration.
Documentez ensuite :
Emplacement des archives
Commandes d'extraction
Procédure d'import MySQL
Chemins à reconfigurer
Ports de test
Contrôles fonctionnels
Temps de restauration observé
Une sauvegarde jamais testée peut être vide, incomplète ou impossible à réimporter. Planifiez une restauration de contrôle après les changements importants et à intervalles réguliers.
En résumé
- Sauvegarder un serveur FiveM exige de protéger les fichiers et la base MySQL.
- La base contient généralement la progression essentielle des joueurs.
- Archivez
resources/,server.cfg, les permissions ettxData/. - Excluez les caches régénérables.
- Conservez la clé Cfx.re, les webhooks et les identifiants séparément et sous forme chiffrée.
- Exportez MySQL avec
mysqldump. - Utilisez
--single-transactionpour les tables InnoDB lorsque la configuration le permet. - Ne placez jamais le mot de passe MySQL directement dans la commande.
- Protégez le fichier d’identifiants avec
chmod 600. - Automatisez le dump, l’archive et la rotation avec un script.
- Testez le script manuellement avant de l’exécuter avec cron.
- Conservez plusieurs versions des sauvegardes.
- Externalisez au moins une copie hors du serveur FiveM.
- Ne confondez pas une archive créée avec une sauvegarde restaurable.
- Restaurez régulièrement les fichiers et MySQL sur un environnement isolé.
- Vérifiez les personnages, inventaires, métiers, véhicules et écritures en base.
- Pour sauvegarder un serveur FiveM hébergé en France avec stockage NVMe, protection Anti-DDoS L3/L4/L7 incluse, panel de gestion et support francophone, découvrez les offres FiveM TalCloud.