Files
Ansible-Minecraft-Server/roles/04-backups/templates/restore.sh.j2
hcornet 8f0877cd53
Some checks failed
Ansible Minecraft CI/CD / Ansible Lint (push) Successful in 8s
Ansible Minecraft CI/CD / Syntax Check (push) Failing after 7s
Ansible Minecraft CI/CD / Deploy to Staging (push) Has been skipped
Ansible Minecraft CI/CD / Deploy to Production (push) Has been skipped
new version
2025-08-27 15:11:08 +02:00

53 lines
1.4 KiB
Django/Jinja

#!/bin/bash
# Script de restauration Minecraft
set -e
if [ $# -ne 2 ]; then
echo "Usage: $0 <type> <backup_name>"
echo "Types: daily, weekly, monthly"
echo "Exemple: $0 daily minecraft-daily-20240127_020000"
exit 1
fi
TYPE=$1
BACKUP_NAME=$2
BACKUP_DIR="{{ minecraft_backups_dir }}/${TYPE}"
TARGET_DIR="{{ minecraft_server_dir }}"
if [ ! -d "${BACKUP_DIR}/${BACKUP_NAME}" ]; then
echo "Erreur: Sauvegarde ${BACKUP_NAME} introuvable dans ${BACKUP_DIR}"
exit 1
fi
echo "ATTENTION: Cette opération va remplacer les données actuelles du serveur."
read -p "Voulez-vous continuer? (y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo "Restauration annulée."
exit 1
fi
# Arrêt du serveur
echo "Arrêt du serveur Minecraft..."
systemctl stop minecraft || true
sleep 5
# Sauvegarde du répertoire actuel
CURRENT_BACKUP="${TARGET_DIR}.backup-$(date +%Y%m%d_%H%M%S)"
echo "Sauvegarde du répertoire actuel vers ${CURRENT_BACKUP}"
cp -r "${TARGET_DIR}" "${CURRENT_BACKUP}"
# Restauration
echo "Restauration de ${BACKUP_NAME}..."
rsync {{ rsync_options }} "${BACKUP_DIR}/${BACKUP_NAME}/" "${TARGET_DIR}/"
# Correction des permissions
chown -R {{ minecraft_user }}:{{ minecraft_group }} "${TARGET_DIR}"
# Redémarrage du serveur
echo "Redémarrage du serveur Minecraft..."
systemctl start minecraft
echo "Restauration terminée avec succès."
echo "Sauvegarde de l'ancienne version disponible dans: ${CURRENT_BACKUP}"