#!/bin/bash # Script de restauration Minecraft set -e if [ $# -ne 2 ]; then echo "Usage: $0 " 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}"