Files
dotfiles/nix/homelab/kustomize/restore-job.yaml

118 lines
3.3 KiB
YAML

apiVersion: batch/v1
kind: Job
metadata:
name: minecraft-restore
namespace: minecraft
labels:
app: minecraft-restore
spec:
backoffLimit: 0
ttlSecondsAfterFinished: 3600
template:
metadata:
labels:
app: minecraft-restore
spec:
restartPolicy: Never
securityContext:
fsGroup: 2000
runAsUser: 1000
runAsGroup: 3000
containers:
- name: restore
image: busybox:latest
command:
- sh
- -c
- |
set -e
echo "=========================================="
echo "Minecraft World Restore Job"
echo "=========================================="
echo ""
SERVER_NAME="${SERVER_NAME}"
BACKUP_FILE="${BACKUP_FILE:-latest.tgz}"
BACKUP_PATH="/backups/${BACKUP_FILE}"
DATA_DIR="/data"
echo "Configuration:"
echo " Server: ${SERVER_NAME}"
echo " Backup file: ${BACKUP_FILE}"
echo " Backup path: ${BACKUP_PATH}"
echo " Data directory: ${DATA_DIR}"
echo ""
if [ ! -f "${BACKUP_PATH}" ]; then
echo "ERROR: Backup file not found: ${BACKUP_PATH}"
echo ""
echo "Available backups for ${SERVER_NAME}:"
ls -lh /backups/ | grep "minecraft-${SERVER_NAME}" || echo " (none found)"
echo ""
echo "All backups:"
ls -lh /backups/
exit 1
fi
echo "✓ Backup file found"
echo " Size: $(du -hL ${BACKUP_PATH} | cut -f1)"
echo ""
if [ -d "${DATA_DIR}/world" ]; then
echo "⚠ WARNING: Existing world data found!"
echo " The following directories will be removed:"
echo " - ${DATA_DIR}/world"
echo " - ${DATA_DIR}/world_nether"
echo " - ${DATA_DIR}/world_the_end"
echo ""
echo "Removing existing world data..."
rm -rf "${DATA_DIR}/world" "${DATA_DIR}/world_nether" "${DATA_DIR}/world_the_end"
echo "✓ Old world data removed"
else
echo "✓ No existing world data found (clean slate)"
fi
echo ""
echo "Extracting backup..."
echo " From: ${BACKUP_PATH}"
echo " To: ${DATA_DIR}/"
echo ""
tar -xzf "${BACKUP_PATH}" -C "${DATA_DIR}/"
echo ""
echo "=========================================="
echo "Restore Complete!"
echo "=========================================="
echo ""
echo "Restored world information:"
if [ -d "${DATA_DIR}/world" ]; then
echo " World size: $(du -sh ${DATA_DIR}/world | cut -f1)"
fi
env:
- name: SERVER_NAME
value: "main"
- name: BACKUP_FILE
value: "latest.tgz"
volumeMounts:
- name: data
mountPath: /data
- name: backups
mountPath: /backups
readOnly: true
volumes:
- name: data
persistentVolumeClaim:
claimName: minecraft-main-datadir
- name: backups
nfs:
server: 192.168.27.2
path: /backup/minecraft