minecraft.sh 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. #!/bin/bash
  2. recover_backup=YES
  3. backup_file="/Backup/Backup/Minecraft/minecraft_ubuntu.tar.xz"
  4. function print_centered {
  5. [[ $# == 0 ]] && return 1
  6. declare -i TERM_COLS="$(tput cols)"
  7. declare -i str_len="${#1}"
  8. [[ $str_len -ge $TERM_COLS ]] && {
  9. echo "$1";
  10. return 0;
  11. }
  12. declare -i filler_len="$(( (TERM_COLS - str_len) / 2 ))"
  13. [[ $# -ge 2 ]] && ch="${2:0:1}" || ch=" "
  14. filler=""
  15. for (( i = 0; i < filler_len; i++ )); do
  16. filler="${filler}${ch}"
  17. done
  18. printf "%s%s%s" "$filler" "$1" "$filler"
  19. [[ $(( (TERM_COLS - str_len) % 2 )) -ne 0 ]] && printf "%s" "${ch}"
  20. printf "\n"
  21. return 0
  22. }
  23. function backup_tool {
  24. echo -e "\n$(tput setaf 10)Backup tool:$(tput setaf 7)"
  25. if [ -f /tmp/mcbackup.sh ];then rm /tmp/mcbackup.sh;fi
  26. cat <<'EOF'>> /tmp/mcbackup.sh
  27. #!/bin/bash
  28. ####################################
  29. #
  30. # Backup minecraft world to a
  31. # specified folder.
  32. #
  33. ####################################
  34. set -e
  35. #sudo systemctl stop watchdog >/dev/null
  36. version=2.1
  37. day_raw=$(date +%A_%d_%m_%y)
  38. function backup_ {
  39. echo -e "\e[95mMinecraft auto-backup version $version\e[0m"
  40. #archive_file="minecraft_ubuntu_$day_raw"
  41. archive_file="minecraft_ubuntu"
  42. output_folder=/tmp
  43. echo -e "Creation archive: $archive_file\n"
  44. sleep 1
  45. cd $output_folder
  46. if [ -f /tmp/Minecraft_*.tar.xz ]
  47. then
  48. rm Minecraft-*.tar.xz
  49. fi
  50. if [ -f /tmp/Minecraft_*.md5 ]
  51. then
  52. rm Minecraft-*.md5
  53. fi
  54. if [ -f /tmp/Minecraft_*.tar ]
  55. then
  56. rm Minecraft_*.tar
  57. fi
  58. echo -e "\e[97mPacking files...\e[0m"
  59. tar cf - --exclude='/home/wareck/Minecraft/cache' --exclude='/home/wareck/Minecraft/minecraft.tar.xz' --exclude='/home/wareck/Minecraft/backups' --exclude='/home/wareck/Minecraft/build' --exclude='/home/wareck/Minecraft/paperclip.jar' --exclude='/home/wareck/Minecraft/spigot-1.*.jar' --exclude='/home/wareck/Minecraft/logs' /home/wareck/Minecraft --checkpoint=.250 | pixz >$output_folder/$archive_file.tar.xz
  60. md5sum $output_folder/$archive_file.tar.xz > $archive_file.md5
  61. echo -e "\n\e[97mBackup local : \e[0m"
  62. sudo cp -v $output_folder/$archive_file.tar.xz /media/Backup/Backup/Minecraft/
  63. sudo cp -v $output_folder/$archive_file.md5 /media/Backup/Backup/Minecraft/
  64. echo -e "\n\e[97mUpload on Freebox...\e[0m"
  65. echo "Mounting..."
  66. sudo mount -t cifs //192.168.1.254/Disque\ dur/ /media/Nas/ -o user=freebox,password=password,uid=1000,gid=1000,rw,vers=1.0
  67. sleep 5
  68. sudo cp -v $output_folder/$archive_file.tar.xz /media/Nas/mc_backup
  69. sudo cp -v $output_folder/$archive_file.md5 /media/Nas/mc_backup
  70. sleep 5
  71. sudo umount /media/Nas
  72. echo "Unmounting..."
  73. sleep 2
  74. echo -e "\n\e[97mUpload on FTP...\e[0m"
  75. ncftpput -v -u "wareck" -p "zorn692611" ftpperso.free.fr minecraft_bkp/ $output_folder/$archive_file.tar.xz
  76. sleep 1
  77. echo -e "\nBackup done."
  78. }
  79. backup_
  80. EOF
  81. sudo chmod +x /tmp/mcbackup.sh
  82. sudo cp /tmp/mcbackup.sh /usr/local/bin/
  83. echo "Done"
  84. }
  85. function recovery {
  86. if [ $recover_backup = "YES" ]
  87. then
  88. echo -e "\n$(tput setaf 10)Restore Backup:$(tput setaf 7)"
  89. mkdir /home/wareck/tempo
  90. cd /home/wareck/tempo
  91. cp $backup_file .
  92. pixz -x < $backup_file | tar xf - --checkpoint=.100
  93. cd /home/wareck/tempo/home/wareck/Minecraft
  94. cp -r /home/wareck/tempo/home/wareck/Minecraft/world /home/wareck/Minecraft/
  95. cp -r /home/wareck/tempo/home/wareck/Minecraft/world_nether /home/wareck/Minecraft/
  96. cp -r /home/wareck/tempo/home/wareck/Minecraft/world_the_end /home/wareck/Minecraft/
  97. cd /home/wareck
  98. sudo rm -r /home/wareck/tempo/
  99. fi
  100. echo -e
  101. }
  102. print_centered "$(tput setaf 10)"
  103. print_centered " ⠀⠀⡰⠉⠉⣷⡄⣀⣎⠉⢹⡎⠉⢉⡞⠉⠉⣧⡎⠉⠉⡞⠉⠉⠉⠉⠉⣿⠉⠉⠉⠉⠉⢹⡏⠋⠉⠉⠉⠙⡏⠉⣉⠉⣉⠉⢿⠉⠉⠉⢉⠉⢱⡏⠉⠉⠉⢉⠉⡄"
  104. print_centered "⠀⢀⠃⠀⠀⠘⠛⠁⠀⠀⣼⠀⠀⣸⠃⠀⠀⠘⠃⠀⢰⡇⠀⠀⠛⠛⠛⣿⠀⠀⢸⣿⣿⣿⡇⠀⠈⠃⠀⣠⣿⠀⠉⣶⣍⠀⢸⡆⠀⠘⠛⠛⠛⣿⣿⡆⠀⠈⡟⠁"
  105. print_centered "⠀⡜⣀⢀⣶⣀⣰⠆⠀⢀⡏⠀⠀⣿⠀⠀⣸⣄⠤⠄⢸⠃⠀⢰⣶⣶⣶⣿⠀⠀⢸⣉⣉⣉⡇⡀⠀⣶⠀⠀⢹⠀⠀⢀⡀⢀⠀⣇⠀⠀⢶⣶⣶⢾⣿⣿⡀⠀⢱⠀"
  106. print_centered "⢰⠀⠀⢸⣿⣦⠈⠀⠀⢼⠁⠀⢰⡇⠀⠀⣿⣿⠀⠀⢼⠀⡄⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⢸⡇⠂⠀⣿⠀⠀⢸⡆⠀⢘⡧⠀⠀⣿⠀⠀⢸⠛⠃⠘⣿⣿⡇⠀⠀⡆"
  107. print_centered "⠀⠑⢤⣀⣙⡿⠉⠱⣄⣠⣷⣄⣀⣹⣄⣀⣘⡏⢆⣀⣘⣧⣀⣀⣀⣀⣀⣿⣀⣀⣀⣀⣀⣸⣇⣀⣰⣏⣀⣠⣿⣀⣀⣾⣁⣀⣴⣋⣀⡠⠃⠀⠀⠀⢿⣋⣀⡤⠋⠀"
  108. print_centered "$(tput setaf 7)"
  109. print_centered "Minecraft Ubuntu Server Builder/install v2.1"
  110. print_centered "$(tput setaf 7)"
  111. sleep 2
  112. echo -e "$(tput setaf 10)Installation java:$(tput setaf 7)"
  113. if ! [ -x "$(command -v java)" ]
  114. then
  115. sudo apt-get update
  116. sudo apt-get install curl wget git -y
  117. if ! [ -f openjdk-18_linux-x64_bin.tar.gz ]
  118. then
  119. echo -e
  120. curl -O https://download.java.net/java/GA/jdk18/43f95e8614114aeaa8e8a5fcf20a682d/36/GPL/openjdk-18_linux-x64_bin.tar.gz
  121. fi
  122. cat <<'EOF'>> openjdk-18_linux-x64_bin.tar.gz.md5
  123. f3fc42bd35c3f5e9aff967c9862a153a openjdk-18_linux-x64_bin.tar.gz
  124. EOF
  125. if md5sum -c openjdk-18_linux-x64_bin.tar.gz.md5
  126. then
  127. tar xf openjdk-18_linux-x64_bin.tar.gz --checkpoint=.100
  128. echo -e
  129. rm openjdk-18_linux-x64_bin.tar.gz
  130. rm openjdk-18_linux-x64_bin.tar.gz.md5
  131. else
  132. echo "erreur"
  133. fi
  134. if [ -d /opt/jdk-18 ]
  135. then
  136. sudo rm -r /opt/jdk-18/
  137. fi
  138. sudo mv jdk-18 /opt/
  139. if [ -f /etc/profile.d/jdk18.sh ]
  140. then
  141. sudo rm /etc/profile.d/jdk18.sh
  142. fi
  143. sudo tee /etc/profile.d/jdk18.sh <<EOF
  144. export JAVA_HOME=/opt/jdk-18
  145. export PATH=\$PATH:\$JAVA_HOME/bin
  146. EOF
  147. source /etc/profile.d/jdk18.sh
  148. fi
  149. version=$(java -version 2>&1 | head -1 | cut -d'"' -f2 | sed '/^1\./s///' | cut -d'.' -f1)
  150. if [ $version -ge 18 ]
  151. then
  152. echo -e "$(tput setaf 6)Java version $version =>> OK$(tput setaf 7)"
  153. else
  154. echo "error !"
  155. exit 1
  156. fi
  157. echo -e "\n$(tput setaf 10)Download/install mcrcon:$(tput setaf 7)"
  158. cd /home/wareck/
  159. git clone https://github.com/Tiiffi/mcrcon.git
  160. cd /home/wareck/mcrcon
  161. make
  162. sudo make install
  163. cd ..
  164. rm -r -f /home/wareck/mcrcon
  165. echo -e "$(tput setaf 10)Download Minecraft server structure:$(tput setaf 7)"
  166. cd /home/wareck/
  167. wget -c http://folivier.homelinux.org/cube/pack/minecraft.tar.xz
  168. tar xfJ minecraft.tar.xz
  169. rm minecraft.tar.xz
  170. mv minecraft Minecraft
  171. cd Minecraft
  172. rsync --append --progress --recursive * /home/wareck/Minecraft/
  173. echo -e "\n$(tput setaf 10)Download BuildTools:$(tput setaf 7)"
  174. if ! [ -d build ]; then mkdir build ;fi
  175. cd build
  176. wget -c https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar
  177. echo -e "\n$(tput setaf 10)Building Spigot:$(tput setaf 7)"
  178. java -jar BuildTools.jar
  179. cp spigot* /home/wareck/Minecraft/
  180. echo -e "\n$(tput setaf 10)minecraft.service file build/install:$(tput setaf 7)"
  181. if [ -f minecraft.service ];then rm minecraft.service;fi
  182. version=`ls -a /home/wareck/Minecraft/spigot*.jar | sed "s/\/home\/wareck\/Minecraft\///g"`
  183. short_v=`echo $version | sed "s/spigot-//g" | sed "s/.jar//g"`
  184. echo "Version builed : $version"
  185. cat <<'EOF'>> minecraft.service
  186. #!/bin/sh -e
  187. ### BEGIN INIT INFO
  188. # Provides: minecraft
  189. # Required-Start: networking
  190. # Default-Start: 3 4 5
  191. # Default-Stop: 0 6
  192. ### END INIT INFO
  193. cd /home/wareck/Minecraft/
  194. su wareck -c "screen -dmS minecraft /opt/jdk-18/bin/java -jar -Xmx2048M -Xms2048M XXXX nogui"
  195. exit 0
  196. EOF
  197. sed -i "s/XXXX/$version/g" minecraft.service
  198. sed -i "s/XXXX/$version/g" /home/wareck/Minecraft/start.sh
  199. sed -i "s/XXXX/$short_v/g" /home/wareck/Minecraft/server.properties
  200. more minecraft.service
  201. chmod +x minecraft.service
  202. sudo cp minecraft.service /etc/init.d/
  203. sudo sudo update-rc.d minecraft.service defaults
  204. backup_tool
  205. recovery
  206. echo -e "\nDone"