Je suis actuellement en train d'écrire un script de démarrage avancé pour mon serveur Minecraft. Tout fonctionne comme je le veux. Mais le problème est celui des sauvegardes. J'ai créé une fonction pour cela. Il fonctionne aussi très bien et fait exactement ce que je veux qu'il fasse. Mais comme le serveur doit être arrêté pendant la sauvegarde et que la sauvegarde elle-même prend des heures, j'ai besoin d'accélérer la sauvegarde !
Ma sauvegarde actuelle fonctionne comme suit :
tar -cjvf $BACKUP_PATH/$filename $MINECRAFT_PATH
Comme je l'ai dit, cela prend du temps !
J'ai donc eu l'idée de créer un fichier tar sans le compresser, puis de démarrer le serveur et enfin de compresser l'archive.
tar -cvf $BACKUP_PATH/$filename $MINECRAFT_PATH
START_SERVER
bzip2 -9 $BACKUP_PATH/$filename
rm $BACKUP_PATH/$filename
Cela devrait fonctionner plus rapidement. Mais ensuite j'ai eu une idée. Et c'est là que j'ai besoin de vous.
Tout d'abord, je voulais modifier la sauvegarde actuelle d'une manière qui montre la quantité déjà sauvegardée et une estimation du temps qu'il faudra approximativement pour terminer. Pour cela, la sortie de tar serait supprimée, la commande serait exécutée en arrière-plan et une boucle (while) (qui attend que la commande se termine) calculerait le pourcentage calculé ainsi qu'une estimation du temps restant.
Pour cela, il faut d'abord appeler du
pour obtenir la taille de tous les fichiers en cours de compression. Ceci serait sauvegardé dans une variable. Le i obtiendrait l'horodatage actuel. Également enregistré dans une variable. A ce stade, la boucle commence. Puis, dans la boucle, le pourcentage et le temps restant seraient calculés (simple...) et cela serait imprimé sur deux lignes qui seraient toujours mises à jour. Et c'est là mon principal problème. Je serais très heureux si quelqu'un pouvait m'aider avec la boucle !
Un peu de code de base :
tar -cf $BACKUP_PATH/$filename $MINECRAFT_PATH &
backupsize=$(du -bs $MINECRAFT_PATH)
starttimestamp=$(date +%s)
# Here is the loop (how do I stay here while the tar command is still running?
# And how do i update the two lines with the newly created numbers?
START_SERVER
bzip2 -9 $BACKUP_PATH/$filename
rm $BACKUP_PATH/$filename
Si vous êtes d'humeur serviable, vous pouvez m'aider à faire en sorte que ce genre de chose fonctionne également pour le système d'alerte précoce. bzip
commande. Si ce n'est pas possible, je vais laisser tomber ! ( bzip
accepte les mêmes drapeaux que zip
)