diff --git a/backup.sh b/backup.sh index 33c77ba..f5bd0bf 100755 --- a/backup.sh +++ b/backup.sh @@ -23,6 +23,7 @@ SUPPRESS_WARNINGS=false # Suppress warnings LOCK_FILE="" # Optional lock file to acquire to ensure two backups don't run at once LOCK_FILE_TIMEOUT="" # Optional lock file wait timeout (in seconds) WINDOW_MANAGER="screen" # Choices: screen, tmux, RCON +BUKKIT=false # Other Variables (do not modify) DATE_FORMAT="%F_%H-%M-%S" @@ -67,6 +68,7 @@ while getopts 'a:cd:e:f:hi:l:m:o:p:qr:s:t:u:vw:' FLAG; do echo "-u Lock file timeout seconds (empty = unlimited)" echo "-v Verbose mode" echo "-w Window manager: screen (default), tmux, RCON" + echo "-x Bukkit-style server backup mode (world files are split by dimension)" exit 0 ;; i) SERVER_WORLD=$OPTARG ;; @@ -81,6 +83,7 @@ while getopts 'a:cd:e:f:hi:l:m:o:p:qr:s:t:u:vw:' FLAG; do u) LOCK_FILE_TIMEOUT=$OPTARG ;; v) DEBUG=true ;; w) WINDOW_MANAGER=$OPTARG ;; + x) BUKKIT=true ;; *) log-fatal "Invalid option -$FLAG"; exit 1 ;; esac done @@ -476,6 +479,18 @@ clean-up () { trap "clean-up" 2 do-backup () { + # set bukkit world paths if this is a bukkit server + if "$BUKKIT"; then + WORLD_PARENT_DIR=$(dirname "$SERVER_WORLD") + + # overwrite SERVER_WORLD so that restic gets all 3 dirs + SERVER_WORLD="$SERVER_WORLD"\ "$SERVER_WORLD"_nether\ "$SERVER_WORLD"_the_end + TAR_ARGS=$(basename -a "$SERVER_WORLD") + else + # no bukkit--retain previous functionality + WORLD_PARENT_DIR="$SERVER_WORLD" + TAR_ARGS="." + fi # Notify players of start message-players "Starting backup..." "$ARCHIVE_FILE_NAME" @@ -491,10 +506,10 @@ do-backup () { case $COMPRESSION_ALGORITHM in # No compression - "") tar -cf "$ARCHIVE_PATH" -C "$SERVER_WORLD" . + "") tar -cf "$ARCHIVE_PATH" -C "$WORLD_PARENT_DIR" "$TAR_ARGS" ;; # With compression - *) tar -cf - -C "$SERVER_WORLD" . | $COMPRESSION_ALGORITHM -cv -"$COMPRESSION_LEVEL" - > "$ARCHIVE_PATH" 2>> /dev/null + *) tar -cf - -C "$WORLD_PARENT_DIR" "$TAR_ARGS" | $COMPRESSION_ALGORITHM -cv -"$COMPRESSION_LEVEL" - > "$ARCHIVE_PATH" 2>> /dev/null ;; esac EXIT_CODES=("${PIPESTATUS[@]}")