Skip to content

Instantly share code, notes, and snippets.

@kmtu
Last active February 4, 2022 09:24
Show Gist options
  • Save kmtu/6326127 to your computer and use it in GitHub Desktop.
Save kmtu/6326127 to your computer and use it in GitHub Desktop.
Minecraft backup script
#!/bin/sh
WORLD='world'
SERVER='localhost'
PASSWD='mcrcon-password'
MCUSER='minecraft'
MCPATH='/srv/minecraft'
BACKUPPATH='/srv/minecraft/backup/worlds'
REMOTE_BACKUPSERVER=example.com
REMOTE_USER=foo
REMOTE_BACKUPPATH='/home/foo/backup/minecraft/worlds'
echo "Start backup script - $(date)"
if pgrep -u minecraft > /dev/null; then
# server is running
echo "Server is running"
mcrcon -sc -H $SERVER -p $PASSWD "save-off" "save-all"
mcrcon -sc -H $SERVER -p $PASSWD "say SERVER BACKUP STARTING. Server going readonly..."
sync
sleep 10
else
echo "Server is not running; no need to suspend world auto-save"
fi
NOW=`date "+%Y-%m-%d_%Hh%MJP"`
BACKUP_FILE="$BACKUPPATH/${WORLD}_${NOW}.tgz"
echo "Backing up minecraft world..."
tar -C "$MCPATH" -zcf "$BACKUP_FILE" $WORLD
if pgrep -u minecraft > /dev/null; then
# server is running
mcrcon -sc -H $SERVER -p $PASSWD "save-on"
mcrcon -sc -H $SERVER -p $PASSWD "say SERVER BACKUP ENDED. Server going read-write..."
fi
chown -R $MCUSER $MCPATH
echo "Sending backup files to $REMOTE_BACKUPSERVER:$REMOTE_BACKUPPATH"
rsync -avh "$BACKUP_FILE" ${REMOTE_USER}@${REMOTE_BACKUPSERVER}:$REMOTE_BACKUPPATH/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment