build files for making podman containers
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

48 lines
1.2 KiB

#!/bin/bash
worlds_dir="/home/vhadmin/.config/unity3d/IronGate/Valheim/worlds_local"
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 valheim -p ActiveState --value)
# shutdown server if it is active
if [[ $status == active ]]; then
echo "Server is active: executing shutdown..."
systemctl stop valheim
sleep 1
fi
# 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/
# start server back up if it was active
if [[ $status == active ]]; then
echo "Server was active: starting server again..."
systemctl start valheim
sleep 5
fi
echo "Done!"