From cccb3bec350595f8fbd8b7ef40a57e75836aa1e9 Mon Sep 17 00:00:00 2001 From: Mar Alegre Date: Sat, 29 Aug 2020 14:02:05 -0400 Subject: [PATCH] hopefully last fixes to mcbe-backup scripts --- src/mcbe/assets/bin/maint | 31 +++++++++++++++++++++---------- src/mcbe/assets/bin/mcbe-backup | 18 +++++++++--------- 2 files changed, 30 insertions(+), 19 deletions(-) diff --git a/src/mcbe/assets/bin/maint b/src/mcbe/assets/bin/maint index 07d7b3c..ead467b 100755 --- a/src/mcbe/assets/bin/maint +++ b/src/mcbe/assets/bin/maint @@ -1,5 +1,11 @@ #!/bin/bash +rm_ife() { + if [[ -e "$1" ]]; then + rm -r "$1" + fi +} + # Check if server is started status=$(systemctl show mcbe -p ActiveState --value) if [[ $status != active ]]; then @@ -18,21 +24,26 @@ cd /vol/data/backup # hourly backup mcbe-exec say "Autosaving..." -if [[ -e worlds-hourly-$hour ]]; then - rm -r worlds-hourly-$hour -fi +rm_ife worlds-hourly-$hour mcbe-backup worlds-hourly-$hour -if [[ $hour -eq 1 ]]; then +# 10#$var construction is to force base-10 interpretation of variable +# because otherwise, numbers starting with 0 are interpreted as octal +if [[ 10#$hour -eq 1 ]]; then # if no players are present, restart the server - # should help deal with any memory leaks - players=$(mcbe-exec list | head -n 1 | cut -d ' ' -f 3 | cut -d '/' -f 1) - if [[ $players == "0" ]]; then + # should help deal with any memory leaks or other bugs + players="" + while [[ -z $players ]]; do + players=$(mcbe-exec list | head -n 1 | cut -d ' ' -f 3 | cut -d '/' -f 1) + done + if [[ $players -eq 0 ]]; then mcbe-restart fi + # save daily and longterm backups - rsync -a worlds-hourly-$hour/ worlds-daily-$day/ - if [[ $day -eq 1 ]]; then - rsync -a worlds-daily-$day/ worlds-$year-$month-$day/ + rm_ife worlds-daily-$day + mv worlds-hourly-$hour worlds-daily-$day + if [[ 10#$day -eq 1 ]]; then + mv worlds-daily-$day worlds-$year-$month-$day fi fi diff --git a/src/mcbe/assets/bin/mcbe-backup b/src/mcbe/assets/bin/mcbe-backup index 36f91b0..e3fd142 100755 --- a/src/mcbe/assets/bin/mcbe-backup +++ b/src/mcbe/assets/bin/mcbe-backup @@ -19,15 +19,6 @@ if [[ ! -d "$worlds_dir/$world" ]]; then exit 1 fi -# Check if server is active -status=$(systemctl show mcbe -p ActiveState --value) -# if service is not active, just rsync folder directly. -if [[ $status != active ]]; then - echo "Service is inactive: running rsync directly." - rsync -a "$worlds_dir/" "$backup_dir/" - exit -fi - # Check if backup dir already exists if [[ -e "$backup_dir" ]]; then echo "Error: backup dir already exists. Delete directory before proceeding or use another directory name." @@ -36,6 +27,15 @@ fi mkdir -p "$backup_dir" cd "$backup_dir" +# Check if server is active +status=$(systemctl show mcbe -p ActiveState --value) +# if service is not active, just rsync folder directly. +if [[ $status != active ]]; then + echo "Service is inactive: running rsync directly." + rsync -a "$worlds_dir/" ./ + exit +fi + # prepare backup of active world status=$(mcbe-exec save hold) if [[ $status == "The command is already running" ]]; then