#!/bin/bash if [[ -z $1 ]]; then echo "Usage: $0 backup_dir" exit 2 fi backup_dir="$1" # Check if directory exists if [[ ! -d "$backup_dir" ]]; then echo "Error: directory \"$backup_dir\" not found." exit 1 fi # Check if server is active status=$(systemctl show mcbe -p ActiveState --value) # shutdown server if it is active if [[ $status == active ]]; then echo "Server is active: executing shutdown..." systemctl stop mcbe sleep 1 fi worlds_dir=/home/mcadmin/worlds # if worlds dir is non-empty, save it as worlds.bak if [[ ! -z $(ls $worlds_dir) ]]; then echo "Worlds directory is nonempty: saving backup as $worlds_dir.bak" if [[ -e $worlds_dir.bak ]]; then rm -r $worlds_dir.bak fi mv $worlds_dir $worlds_dir.bak mkdir $worlds_dir chown $(stat -c %U:%G $worlds_dir.bak) $worlds_dir fi # copy backup to worlds_dir echo "Copying worlds from backup directory..." rsync -aSH "$backup_dir/" $worlds_dir/ # copy resources to each world in worlds_dir echo "Copying resources to worlds..." resources_dir=/vol/data/resources for d in $worlds_dir/*; do rsync -aSH "$resources_dir/" "$d/" done # start server back up if it was active if [[ $status == active ]]; then echo "Server was active: starting server again..." systemctl start mcbe sleep 5 fi echo "Done!"