53 lines
1.2 KiB
Bash
53 lines
1.2 KiB
Bash
#! /bin/sh
|
|
#
|
|
# nightly.sh
|
|
# Nightly world backups for Minecraft
|
|
# Copyright (C) 2020 Vintage Salt <rehashedsalt@cock.li>
|
|
#
|
|
# Distributed under terms of the MIT license.
|
|
#
|
|
|
|
set -e
|
|
|
|
export MCDIR="{{ paper_home }}/{{ paper_name }}"
|
|
export OUTDIR="$MCDIR/backups"
|
|
retention=24 # 1hr intervals
|
|
|
|
# Helper functions
|
|
log() {
|
|
[ -z "$1" ] && return 1
|
|
printf "$(date -Iseconds): $1\n"
|
|
}
|
|
stuff() {
|
|
[ -z "$1" ] && return 1
|
|
screen -p 0 -S "{{ paper_name }}" -X eval "stuff \"say $1\\015\""
|
|
}
|
|
|
|
# Sanity checks
|
|
if ! [ -d "$OUTDIR" ]; then
|
|
if ! mkdir "$OUTDIR"; then
|
|
log "Unable to find or create output directory: $OUTDIR"
|
|
stuff "World backup failed: see log for details"
|
|
retuirn 2
|
|
fi
|
|
fi
|
|
|
|
# Enforce permissions on our output dir
|
|
chown -R minecraft-paper. "$OUTDIR"
|
|
|
|
# Remove old backups
|
|
find "$OUTDIR" -type f -mtime +1 -iname "backup-*.tar.gz" -delete
|
|
|
|
# WE MAKE BACKUP NOW SERGEI
|
|
if cd "$OUTDIR"; then
|
|
log "Initiating world backup"
|
|
stuff "Initiating world backup"
|
|
tar czhf "$OUTDIR/backup-$(date -Iseconds).tar.gz" "$MCDIR"/world*
|
|
log "World backup complete"
|
|
stuff "World backup complete"
|
|
else
|
|
log "Could not change directory: $OUTDIR"
|
|
stuff "World backup failed: see log for details"
|
|
return 3
|
|
fi
|