|
#!/ bin / bash |
|
################################################### ###################### |
|
# Script de sauvegarde pour les serveurs minecraft avec SCP vers un autre site. # |
|
# Arrête et démarre le serveur minecraft spécifié pour des sauvegardes à 100%. # |
|
# Prend en charge plusieurs serveurs minecraft sur la même machine # |
|
# # |
|
# Auteur # |
|
# Pierre Christoffersen, www.nahaz.se # |
|
# N'hésitez pas à redistribuer, changer ou améliorer, mais laissez l'original # |
|
# auteurs et contributeurs dans les commentaires. # |
|
# http://github.com/Nahaz/Minecraft-Backup-Bash-Script # |
|
# # |
|
# Codes de sortie: # |
|
# 0 = terminé sans erreur # |
|
# 1 = sauvegarde effectuée, serveur non redémarré # |
|
# 2 = Échec # |
|
# # |
|
# Variables utilisées: # |
|
# # |
|
# Lié au serveur Minecraft: # |
|
# MCDIR = / Dir / vers / minecraft / serveur # |
|
# MCSRV = Nom du serveur.jar utilisé # |
|
# JXMS = 512 Mo # Nombre de RAM minimum pour JVM # |
|
# JXMX = 3072M # Nombre de ram maximum pour JVM # |
|
# GUI = nogui #nogui, ne changez pas, seulement un var pour des fins futures # |
|
# WORLDNAME = Nom du monde minecraft # |
|
# SCREEN = Nom du serveur d'écran Minecraft en cours d'exécution dans # |
|
# # |
|
# Minuterie de redémarrage / arrêt du serveur et message # |
|
# TIME = 60 # Compte à rebours en secondes pour arrêter le serveur # |
|
# MSG = "Le serveur redémarre dans" $ TIME "secondes, de retour dans une minute!" # |
|
# TRIES = 3 #Nombre d'essais pour démarrer / arrêter le serveur avant d'abandonner # |
|
# # |
|
# Répertoire temporaire et site distant pour la sauvegarde # |
|
# TMPDIR = / dir / to / tmp # |
|
# BCKSRV = HOSTNAME #Hostname of backupserver # |
|
# BCKDIR = / dir / on / backupserver / to / store / in # |
|
# # |
|
# Ne les modifiez pas à moins de comprendre ce que vous faites # |
|
# LOG = $ TMP / mc. $ WORLDNAME.fullbck.log # |
|
# OF = / tmp / $ FILE # |
|
# BUDIR = $ MCDIR / $ WORLDNAME # |
|
# FILE = $ WORLDNAME. $ TIMESTAMP.fullbck.tar.gz # |
|
# TIMESTAMP = $ (date +% y% m% d.% T) # |
|
# TIMSTAMP = $ (date +% y% m% d % T) # |
|
################################################### ###################### |
|
|
|
#Propriétés Minecraft |
|
MCDIR = / home / killa / minecraft_new |
|
MCSRV = Minecraft_Mod.jar |
|
JXMS = 1024M |
|
JXMX = 2048M |
|
GUI = nogui |
|
WORLDNAME = world |
|
ÉCRAN = MINECRAFT-SERVER |
|
|
|
#Propriétés de la carte |
|
MAPGENDIR = / home / killa / c10t-1.5 |
|
MAPGENOPTS ="-M1536" |
|
MAPGENTARGETHOST = vlin1.nc23.de |
|
MAPGENTARGETUSER = killa |
|
MAPGENTARGETDIR = / var / www / vhosts / killa / public / minecraft / map |
|
MAPGENTARGETKEY = / home / killa / .ssh / id_rsa |
|
|
|
#Redémarrer les propriétés |
|
TIME = 15 |
|
MSG ="Redémarrage du serveur dans "$ TIME" secondes, de retour dans une minute!" |
|
ESSAIS = 3 |
|
|
|
#Variables de sauvegarde |
|
TMPDIR = / tmp |
|
BCKSRV = googlerocks.dyndns.org |
|
BCKSRVUSR = mcbck-killa |
|
BCKDIR = |
|
|
|
#pas besoin de les changer |
|
TIMESTAMP =$ (date +% y-% m-% d.% H-% M-% S) |
|
LOGSTAMP =$ (date +% y% m% d % T) |
|
|
|
LOGFILE =$ TMPDIR/ mc.$ WORLDNAME.fullbck.log |
|
BUDIR =$ MCDIR |
|
FICHIER =$ WORLDNAME.$ TIMESTAMP.fullbck.tar.gz |
|
OF =$ TMPDIR/$ FILE |
|
|
|
#fonctions astucieuses, ne modifiez rien ci-dessous |
|
|
|
#Vérifiez si le serveur minecraft fonctionne, ONLINE == 1 s'il est hors ligne, ONLINE == 2 s'il fonctionne |
|
une fonction srv_check () |
|
CMD ="ps ux |
|
|
|
une fonction Journal () |
|
écho "[[[[$ LOGSTAMP] $ @" >> $ LOGFILE |
|
|
|
|
|
#Tuez le serveur minecraft, mais postez $ MSG sur le serveur $ TIME avant l'arrêt et avertissez 5 secondes avant l'arrêt. Si "stop" ne fonctionne pas, supprimez $ PID. |
|
une fonction kill_mc () awk "imprimer $ 1;") |
|
local STOP =$ ESSAIS |
|
tandis que [[[[[[[[$ STOP -gt 0 && $ EN LIGNE == 2]]; faire |
|
Journal "Essayez #$ STOP d'arrêter le serveur minecraft." |
|
tuer $ PID |
|
srv_check |
|
STOP =$ (($ STOP–1)) |
|
terminé |
|
si [[[[$ STOP == 0]; puis |
|
Journal "Impossible de tuer le serveur Minecraft, en quittant" |
|
sortie 2 |
|
autre |
|
Journal "Serveur minecraft tué après $ STOP nombre d'essais, en procédant à une sauvegarde complète." |
|
Fi |
|
Fi |
|
|
|
#Démarrez le serveur Minecraft avec $ PARAMS |
|
une fonction start_mc () grep "ÉCRAN -AmdS $ ÉCRAN" |
|
|
|
une fonction create_map () |
|
Journal "Commencer à créer une carte" |
|
CD $ MAPGENDIR |
|
CMD ="./google-api.sh $ TMPDIR/$ WORLDNAME.$ TIMESTAMP/$ WORLDNAME $ TMPDIR/$ WORLDNAME.$ TIMESTAMP.MAPGEN $ MAPGENOPTS" |
|
écho $ CMD |
|
$ CMD |
|
tar -czfv – $ TMPDIR/$ WORLDNAME.$ TIMESTAMP.MAPGEN /* |
|
|
|
une fonction run_backup () |
|
#Répertoire de sauvegarde, sortie vers $ LOG |
|
mkdir $ TMPDIR/$ WORLDNAME.$ TIMESTAMP |
|
cp -rf $ BUDIR/* $ TMPDIR/$ WORLDNAME.$ TIMESTAMP |
|
Journal "Procédure de démarrage du serveur …" |
|
start_mc |
|
create_map |
|
tar -czf $ DE $ TMPDIR/$ WORLDNAME.$ TIMESTAMP |
|
si [[[[$? == 0]; puis |
|
Journal "TAR de $ BUDIR à $ OF était un succès." |
|
elif [[[[$? == 1 ]; puis |
|
Journal "TAR de $ BUDIR à $ OF a réussi, mais la sauvegarde n'est pas à 100% $ BUDIR, probablement parce qu'il a été modifié lors de la lecture." |
|
autre |
|
Journal "TAR de $ BUDIR à $ OF n'a PAS réussi, raison: $ ? ERREUR FATALE." |
|
Fi |
|
rm -rf $ TMPDIR/$ WORLDNAME.$ TIMESTAMP |
|
#Sauvegarde SCP vers $ BCKSRV, sortie vers $ LOG |
|
scp -i ~/.ssh/id_rsa $ DE $ BCKSRVUSR@$ BCKSRV:$ BCKDIR |
|
si [[[[$? == 0]; puis |
|
Journal "SCP de $ OF à $ BCKSRV était un succès." |
|
autre |
|
Journal "SCP de $ OF à $ BCKSRV n'a PAS réussi, raison: $ ?: Une erreur s'est produite." |
|
Fi |
|
|
|
|
|
|
|
#Le serveur minecraft fonctionne-t-il? oui – arrêtez puis continuez, non – continuez |
|
Journal "Début de la sauvegarde complète de $ BUDIR" |
|
srv_check |
|
si [[[[$ EN LIGNE == 2]; puis |
|
kill_mc |
|
si [[[[$ EN LIGNE == 1 ]; puis |
|
run_backup |
|
Fi |
|
autre |
|
run_backup |
|
Fi |
Commentaires
Laisser un commentaire