Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- BOT_TOKEN="xxx"
- FTP_HOST="xxx"
- FTP_USER="xxx"
- FTP_PASS="xxx"
- # Other Variables (do not modify)
- DATE_FORMAT="%F_%H-%M-%S"
- TIMESTAMP=$(date +$DATE_FORMAT)
- ARCHIVE_FILE_NAME=$TIMESTAMP.tar
- SERVERS=($(ls /home/servers))
- execute-command () {
- local SCREEN_NAME=$1
- local COMMAND=$2
- if [[ $SCREEN_NAME != "" ]]; then
- screen -S $SCREEN_NAME -p 0 -X stuff "$COMMAND$(printf \\r)"
- fi
- }
- send() {
- local MESSAGE=$1
- curl -s \
- -X POST \
- https://api.telegram.org/bot${BOT_TOKEN}/sendMessage \
- -d text="$MESSAGE" \
- -d chat_id=-246797235
- }
- for SERVER in "${SERVERS[@]}"
- do
- if [[ $SERVER == *"-Test"* ]]; then
- continue;
- fi
- echo "Start backup $SERVER";
- execute-command $SERVER "save-all"
- sleep 15s
- execute-command $SERVER "save-off"
- START_TIME=$(date +"%s")
- BACKUP_DIR="/home/backups/$SERVER"
- mkdir -p $BACKUP_DIR
- ARCHIVE_PATH="$BACKUP_DIR/$ARCHIVE_FILE_NAME"
- SERVER_ROOT="/home/servers/$SERVER"
- if tar -cf $ARCHIVE_PATH -C $SERVER_ROOT world plugins/WorldGuard/worlds; then
- sync
- END_TIME=$(date +"%s")
- execute-command $SERVER "save-on"
- execute-command $SERVER "save-all"
- TIME_DELTA=$((END_TIME - START_TIME))
- echo "World archived in $TIME_DELTA sec"
- START_TIME=$(date +"%s")
- if curl -T $ARCHIVE_PATH ftp://${FTP_USER}:${FTP_PASS}@${FTP_HOST}/maps/${SERVER}/${ARCHIVE_FILE_NAME}; then
- rm -rf $ARCHIVE_PATH
- else
- send "Failed to upload backup ${SERVER}!"
- fi
- END_TIME=$(date +"%s")
- TIME_DELTA=$((END_TIME - START_TIME))
- echo "Archive sended in $TIME_DELTA sec"
- else
- execute-command $SERVER "save-on"
- execute-command $SERVER "save-all"
- send "Failed to create backup ${SERVER}!"
- fi
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement