Advertisement
Guest User

Untitled

a guest
Feb 17th, 2019
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.85 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. BOT_TOKEN="xxx"
  4.  
  5. FTP_HOST="xxx"
  6. FTP_USER="xxx"
  7. FTP_PASS="xxx"
  8.  
  9. # Other Variables (do not modify)
  10. DATE_FORMAT="%F_%H-%M-%S"
  11. TIMESTAMP=$(date +$DATE_FORMAT)
  12. ARCHIVE_FILE_NAME=$TIMESTAMP.tar
  13.  
  14. SERVERS=($(ls /home/servers))
  15.  
  16. execute-command () {
  17. local SCREEN_NAME=$1
  18. local COMMAND=$2
  19.  
  20. if [[ $SCREEN_NAME != "" ]]; then
  21. screen -S $SCREEN_NAME -p 0 -X stuff "$COMMAND$(printf \\r)"
  22. fi
  23. }
  24.  
  25. send() {
  26. local MESSAGE=$1
  27.  
  28. curl -s \
  29. -X POST \
  30. https://api.telegram.org/bot${BOT_TOKEN}/sendMessage \
  31. -d text="$MESSAGE" \
  32. -d chat_id=-246797235
  33. }
  34.  
  35. for SERVER in "${SERVERS[@]}"
  36. do
  37. if [[ $SERVER == *"-Test"* ]]; then
  38. continue;
  39. fi
  40.  
  41. echo "Start backup $SERVER";
  42.  
  43. execute-command $SERVER "save-all"
  44. sleep 15s
  45. execute-command $SERVER "save-off"
  46.  
  47. START_TIME=$(date +"%s")
  48.  
  49. BACKUP_DIR="/home/backups/$SERVER"
  50.  
  51. mkdir -p $BACKUP_DIR
  52.  
  53. ARCHIVE_PATH="$BACKUP_DIR/$ARCHIVE_FILE_NAME"
  54. SERVER_ROOT="/home/servers/$SERVER"
  55.  
  56. if tar -cf $ARCHIVE_PATH -C $SERVER_ROOT world plugins/WorldGuard/worlds; then
  57. sync
  58.  
  59. END_TIME=$(date +"%s")
  60.  
  61. execute-command $SERVER "save-on"
  62. execute-command $SERVER "save-all"
  63.  
  64. TIME_DELTA=$((END_TIME - START_TIME))
  65.  
  66. echo "World archived in $TIME_DELTA sec"
  67.  
  68. START_TIME=$(date +"%s")
  69.  
  70. if curl -T $ARCHIVE_PATH ftp://${FTP_USER}:${FTP_PASS}@${FTP_HOST}/maps/${SERVER}/${ARCHIVE_FILE_NAME}; then
  71. rm -rf $ARCHIVE_PATH
  72. else
  73. send "Failed to upload backup ${SERVER}!"
  74. fi
  75.  
  76. END_TIME=$(date +"%s")
  77.  
  78. TIME_DELTA=$((END_TIME - START_TIME))
  79.  
  80. echo "Archive sended in $TIME_DELTA sec"
  81. else
  82. execute-command $SERVER "save-on"
  83. execute-command $SERVER "save-all"
  84.  
  85. send "Failed to create backup ${SERVER}!"
  86. fi
  87.  
  88. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement