53 lines
1.4 KiB
Django/Jinja
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}" |