test other version
Some checks failed
Ansible Minecraft CI/CD Pipeline / Ansible Lint Check (push) Successful in 58s
Ansible Minecraft CI/CD Pipeline / Project Structure Validation (push) Failing after 3s
Ansible Minecraft CI/CD Pipeline / Security Scan (push) Successful in 4s
Ansible Minecraft CI/CD Pipeline / Deploy to Staging (push) Has been skipped
Ansible Minecraft CI/CD Pipeline / Deploy to Production (push) Has been skipped
Ansible Minecraft CI/CD Pipeline / Backup System Check (push) Has been skipped
Some checks failed
Ansible Minecraft CI/CD Pipeline / Ansible Lint Check (push) Successful in 58s
Ansible Minecraft CI/CD Pipeline / Project Structure Validation (push) Failing after 3s
Ansible Minecraft CI/CD Pipeline / Security Scan (push) Successful in 4s
Ansible Minecraft CI/CD Pipeline / Deploy to Staging (push) Has been skipped
Ansible Minecraft CI/CD Pipeline / Deploy to Production (push) Has been skipped
Ansible Minecraft CI/CD Pipeline / Backup System Check (push) Has been skipped
This commit is contained in:
@@ -1,29 +1,42 @@
|
||||
#!/bin/bash
|
||||
# Daily Minecraft Backup Script
|
||||
# Generated by Ansible
|
||||
|
||||
BACKUP_DIR="{{ minecraft_backups_dir }}/daily"
|
||||
SERVER_DIR="{{ minecraft_server_dir }}"
|
||||
set -e
|
||||
|
||||
# Source backup functions
|
||||
source {{ minecraft_tools_dir }}/backup-functions.sh
|
||||
|
||||
# Configuration
|
||||
BACKUP_DIR="{{ backup_daily_dir }}"
|
||||
DATE=$(date +%Y%m%d_%H%M%S)
|
||||
BACKUP_NAME="minecraft_daily_${DATE}"
|
||||
RETENTION={{ backup_retention_daily }}
|
||||
BACKUP_NAME="daily_backup_$DATE"
|
||||
LOG_FILE="{{ minecraft_base_dir }}/logs/backup-daily.log"
|
||||
|
||||
# Stop server for consistent backup
|
||||
{{ minecraft_tools_dir }}/mcrcon -H 127.0.0.1 -P {{ minecraft_rcon_port }} -p {{ minecraft_rcon_password }} save-all
|
||||
sleep 5
|
||||
{{ minecraft_tools_dir }}/mcrcon -H 127.0.0.1 -P {{ minecraft_rcon_port }} -p {{ minecraft_rcon_password }} save-off
|
||||
# Create log entry
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Starting daily backup..." >> "$LOG_FILE"
|
||||
|
||||
# Create backup
|
||||
rsync -av --delete "${SERVER_DIR}/" "${BACKUP_DIR}/${BACKUP_NAME}/"
|
||||
# Create backup directory
|
||||
mkdir -p "$BACKUP_DIR/$BACKUP_NAME"
|
||||
|
||||
# Re-enable saving
|
||||
{{ minecraft_tools_dir }}/mcrcon -H 127.0.0.1 -P {{ minecraft_rcon_port }} -p {{ minecraft_rcon_password }} save-on
|
||||
# Stop Minecraft server for consistent backup
|
||||
stop_minecraft
|
||||
|
||||
# Compress backup if enabled
|
||||
{% if backup_compression %}
|
||||
tar -czf "${BACKUP_DIR}/${BACKUP_NAME}.tar.gz" -C "${BACKUP_DIR}" "${BACKUP_NAME}"
|
||||
rm -rf "${BACKUP_DIR}/${BACKUP_NAME}"
|
||||
{% endif %}
|
||||
# Perform backup
|
||||
{% for source in backup_sources %}
|
||||
echo "Backing up {{ source }}..." >> "$LOG_FILE"
|
||||
rsync {{ rsync_options }} "{{ source }}/" "$BACKUP_DIR/$BACKUP_NAME/$(basename {{ source }})/"
|
||||
{% endfor %}
|
||||
|
||||
# Clean old backups
|
||||
find "${BACKUP_DIR}" -name "minecraft_daily_*" -type {% if backup_compression %}f{% else %}d{% endif %} -mtime +${RETENTION} -delete
|
||||
# Start Minecraft server
|
||||
start_minecraft
|
||||
|
||||
echo "Daily backup completed: ${BACKUP_NAME}"
|
||||
# Clean old daily backups
|
||||
clean_old_backups "$BACKUP_DIR" {{ backup_retention_days }}
|
||||
|
||||
# Compress backup
|
||||
cd "$BACKUP_DIR"
|
||||
tar -czf "${BACKUP_NAME}.tar.gz" "$BACKUP_NAME"
|
||||
rm -rf "$BACKUP_NAME"
|
||||
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Daily backup completed: ${BACKUP_NAME}.tar.gz" >> "$LOG_FILE"
|
@@ -1,29 +1,42 @@
|
||||
#!/bin/bash
|
||||
# Monthly Minecraft Backup Script
|
||||
# Generated by Ansible
|
||||
|
||||
BACKUP_DIR="{{ minecraft_backups_dir }}/monthly"
|
||||
SERVER_DIR="{{ minecraft_server_dir }}"
|
||||
set -e
|
||||
|
||||
# Source backup functions
|
||||
source {{ minecraft_tools_dir }}/backup-functions.sh
|
||||
|
||||
# Configuration
|
||||
BACKUP_DIR="{{ backup_monthly_dir }}"
|
||||
DATE=$(date +%Y%m%d_%H%M%S)
|
||||
BACKUP_NAME="minecraft_monthly_${DATE}"
|
||||
RETENTION={{ backup_retention_monthly }}
|
||||
BACKUP_NAME="monthly_backup_$DATE"
|
||||
LOG_FILE="{{ minecraft_base_dir }}/logs/backup-monthly.log"
|
||||
|
||||
# Stop server for consistent backup
|
||||
{{ minecraft_tools_dir }}/mcrcon -H 127.0.0.1 -P {{ minecraft_rcon_port }} -p {{ minecraft_rcon_password }} save-all
|
||||
sleep 5
|
||||
{{ minecraft_tools_dir }}/mcrcon -H 127.0.0.1 -P {{ minecraft_rcon_port }} -p {{ minecraft_rcon_password }} save-off
|
||||
# Create log entry
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Starting monthly backup..." >> "$LOG_FILE"
|
||||
|
||||
# Create backup
|
||||
rsync -av --delete "${SERVER_DIR}/" "${BACKUP_DIR}/${BACKUP_NAME}/"
|
||||
# Create backup directory
|
||||
mkdir -p "$BACKUP_DIR/$BACKUP_NAME"
|
||||
|
||||
# Re-enable saving
|
||||
{{ minecraft_tools_dir }}/mcrcon -H 127.0.0.1 -P {{ minecraft_rcon_port }} -p {{ minecraft_rcon_password }} save-on
|
||||
# Stop Minecraft server for consistent backup
|
||||
stop_minecraft
|
||||
|
||||
# Compress backup if enabled
|
||||
{% if backup_compression %}
|
||||
tar -czf "${BACKUP_DIR}/${BACKUP_NAME}.tar.gz" -C "${BACKUP_DIR}" "${BACKUP_NAME}"
|
||||
rm -rf "${BACKUP_DIR}/${BACKUP_NAME}"
|
||||
{% endif %}
|
||||
# Perform backup
|
||||
{% for source in backup_sources %}
|
||||
echo "Backing up {{ source }}..." >> "$LOG_FILE"
|
||||
rsync {{ rsync_options }} "{{ source }}/" "$BACKUP_DIR/$BACKUP_NAME/$(basename {{ source }})/"
|
||||
{% endfor %}
|
||||
|
||||
# Clean old backups
|
||||
find "${BACKUP_DIR}" -name "minecraft_monthly_*" -type {% if backup_compression %}f{% else %}d{% endif %} -mtime +$((${RETENTION} * 30)) -delete
|
||||
# Start Minecraft server
|
||||
start_minecraft
|
||||
|
||||
echo "Monthly backup completed: ${BACKUP_NAME}"
|
||||
# Clean old monthly backups (convert months to days approximately)
|
||||
clean_old_backups "$BACKUP_DIR" $(({{ backup_retention_months }} * 30))
|
||||
|
||||
# Compress backup
|
||||
cd "$BACKUP_DIR"
|
||||
tar -czf "${BACKUP_NAME}.tar.gz" "$BACKUP_NAME"
|
||||
rm -rf "$BACKUP_NAME"
|
||||
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Monthly backup completed: ${BACKUP_NAME}.tar.gz" >> "$LOG_FILE"
|
@@ -1,29 +1,42 @@
|
||||
#!/bin/bash
|
||||
# Weekly Minecraft Backup Script
|
||||
# Generated by Ansible
|
||||
|
||||
BACKUP_DIR="{{ minecraft_backups_dir }}/weekly"
|
||||
SERVER_DIR="{{ minecraft_server_dir }}"
|
||||
set -e
|
||||
|
||||
# Source backup functions
|
||||
source {{ minecraft_tools_dir }}/backup-functions.sh
|
||||
|
||||
# Configuration
|
||||
BACKUP_DIR="{{ backup_weekly_dir }}"
|
||||
DATE=$(date +%Y%m%d_%H%M%S)
|
||||
BACKUP_NAME="minecraft_weekly_${DATE}"
|
||||
RETENTION={{ backup_retention_weekly }}
|
||||
BACKUP_NAME="weekly_backup_$DATE"
|
||||
LOG_FILE="{{ minecraft_base_dir }}/logs/backup-weekly.log"
|
||||
|
||||
# Stop server for consistent backup
|
||||
{{ minecraft_tools_dir }}/mcrcon -H 127.0.0.1 -P {{ minecraft_rcon_port }} -p {{ minecraft_rcon_password }} save-all
|
||||
sleep 5
|
||||
{{ minecraft_tools_dir }}/mcrcon -H 127.0.0.1 -P {{ minecraft_rcon_port }} -p {{ minecraft_rcon_password }} save-off
|
||||
# Create log entry
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Starting weekly backup..." >> "$LOG_FILE"
|
||||
|
||||
# Create backup
|
||||
rsync -av --delete "${SERVER_DIR}/" "${BACKUP_DIR}/${BACKUP_NAME}/"
|
||||
# Create backup directory
|
||||
mkdir -p "$BACKUP_DIR/$BACKUP_NAME"
|
||||
|
||||
# Re-enable saving
|
||||
{{ minecraft_tools_dir }}/mcrcon -H 127.0.0.1 -P {{ minecraft_rcon_port }} -p {{ minecraft_rcon_password }} save-on
|
||||
# Stop Minecraft server for consistent backup
|
||||
stop_minecraft
|
||||
|
||||
# Compress backup if enabled
|
||||
{% if backup_compression %}
|
||||
tar -czf "${BACKUP_DIR}/${BACKUP_NAME}.tar.gz" -C "${BACKUP_DIR}" "${BACKUP_NAME}"
|
||||
rm -rf "${BACKUP_DIR}/${BACKUP_NAME}"
|
||||
{% endif %}
|
||||
# Perform backup
|
||||
{% for source in backup_sources %}
|
||||
echo "Backing up {{ source }}..." >> "$LOG_FILE"
|
||||
rsync {{ rsync_options }} "{{ source }}/" "$BACKUP_DIR/$BACKUP_NAME/$(basename {{ source }})/"
|
||||
{% endfor %}
|
||||
|
||||
# Clean old backups
|
||||
find "${BACKUP_DIR}" -name "minecraft_weekly_*" -type {% if backup_compression %}f{% else %}d{% endif %} -mtime +$((${RETENTION} * 7)) -delete
|
||||
# Start Minecraft server
|
||||
start_minecraft
|
||||
|
||||
echo "Weekly backup completed: ${BACKUP_NAME}"
|
||||
# Clean old weekly backups (convert weeks to days)
|
||||
clean_old_backups "$BACKUP_DIR" $(({{ backup_retention_weeks }} * 7))
|
||||
|
||||
# Compress backup
|
||||
cd "$BACKUP_DIR"
|
||||
tar -czf "${BACKUP_NAME}.tar.gz" "$BACKUP_NAME"
|
||||
rm -rf "$BACKUP_NAME"
|
||||
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Weekly backup completed: ${BACKUP_NAME}.tar.gz" >> "$LOG_FILE"
|
116
roles/04-backups/templates/restore-backup.sh.j2
Normal file
116
roles/04-backups/templates/restore-backup.sh.j2
Normal file
@@ -0,0 +1,116 @@
|
||||
#!/bin/bash
|
||||
# Minecraft Backup Restore Script
|
||||
# Generated by Ansible
|
||||
|
||||
set -e
|
||||
|
||||
# Usage function
|
||||
usage() {
|
||||
echo "Usage: $0 <backup_type> <backup_file>"
|
||||
echo "backup_type: daily, weekly, or monthly"
|
||||
echo "backup_file: name of the backup file to restore"
|
||||
echo ""
|
||||
echo "Example: $0 daily daily_backup_20241225_120000.tar.gz"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Check arguments
|
||||
if [ $# -ne 2 ]; then
|
||||
usage
|
||||
fi
|
||||
|
||||
BACKUP_TYPE="$1"
|
||||
BACKUP_FILE="$2"
|
||||
LOG_FILE="{{ minecraft_base_dir }}/logs/restore.log"
|
||||
|
||||
# Source backup functions
|
||||
source {{ minecraft_tools_dir }}/backup-functions.sh
|
||||
|
||||
# Validate backup type
|
||||
case "$BACKUP_TYPE" in
|
||||
daily)
|
||||
BACKUP_DIR="{{ backup_daily_dir }}"
|
||||
;;
|
||||
weekly)
|
||||
BACKUP_DIR="{{ backup_weekly_dir }}"
|
||||
;;
|
||||
monthly)
|
||||
BACKUP_DIR="{{ backup_monthly_dir }}"
|
||||
;;
|
||||
*)
|
||||
echo "Invalid backup type: $BACKUP_TYPE"
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
|
||||
# Check if backup file exists
|
||||
BACKUP_PATH="$BACKUP_DIR/$BACKUP_FILE"
|
||||
if [ ! -f "$BACKUP_PATH" ]; then
|
||||
echo "Backup file not found: $BACKUP_PATH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Confirmation
|
||||
echo "WARNING: This will replace the current Minecraft server data!"
|
||||
echo "Backup file: $BACKUP_PATH"
|
||||
echo "Type 'yes' to continue:"
|
||||
read -r confirmation
|
||||
if [ "$confirmation" != "yes" ]; then
|
||||
echo "Restore cancelled."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Start restoration process
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Starting restore from $BACKUP_FILE..." >> "$LOG_FILE"
|
||||
|
||||
# Stop Minecraft server
|
||||
stop_minecraft
|
||||
|
||||
# Create temporary restore directory
|
||||
TEMP_DIR="/tmp/minecraft_restore_$"
|
||||
mkdir -p "$TEMP_DIR"
|
||||
|
||||
# Extract backup
|
||||
echo "Extracting backup..." >> "$LOG_FILE"
|
||||
cd "$TEMP_DIR"
|
||||
tar -xzf "$BACKUP_PATH"
|
||||
|
||||
# Find the extracted directory
|
||||
EXTRACTED_DIR=$(find . -maxdepth 1 -type d -name "*backup*" | head -1)
|
||||
if [ -z "$EXTRACTED_DIR" ]; then
|
||||
echo "Could not find extracted backup directory"
|
||||
rm -rf "$TEMP_DIR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Backup current data
|
||||
CURRENT_BACKUP="{{ minecraft_base_dir }}/current_backup_$(date +%Y%m%d_%H%M%S)"
|
||||
mkdir -p "$CURRENT_BACKUP"
|
||||
{% for source in backup_sources %}
|
||||
if [ -d "{{ source }}" ]; then
|
||||
cp -r "{{ source }}" "$CURRENT_BACKUP/"
|
||||
fi
|
||||
{% endfor %}
|
||||
|
||||
echo "Current data backed up to: $CURRENT_BACKUP" >> "$LOG_FILE"
|
||||
|
||||
# Restore data
|
||||
echo "Restoring data..." >> "$LOG_FILE"
|
||||
{% for source in backup_sources %}
|
||||
SOURCE_NAME=$(basename {{ source }})
|
||||
if [ -d "$EXTRACTED_DIR/$SOURCE_NAME" ]; then
|
||||
rm -rf "{{ source }}"
|
||||
cp -r "$EXTRACTED_DIR/$SOURCE_NAME" "{{ source }}"
|
||||
chown -R {{ minecraft_user }}:{{ minecraft_group }} "{{ source }}"
|
||||
fi
|
||||
{% endfor %}
|
||||
|
||||
# Cleanup temporary directory
|
||||
rm -rf "$TEMP_DIR"
|
||||
|
||||
# Start Minecraft server
|
||||
start_minecraft
|
||||
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Restore completed successfully" >> "$LOG_FILE"
|
||||
echo "Restore completed successfully!"
|
||||
echo "Previous data backed up to: $CURRENT_BACKUP"
|
@@ -1,59 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
BACKUP_TYPE="$1" # daily, weekly, monthly
|
||||
BACKUP_DATE="$2" # YYYYMMDD_HHMMSS format
|
||||
SERVER_DIR="{{ minecraft_server_dir }}"
|
||||
BACKUP_BASE_DIR="{{ minecraft_backups_dir }}"
|
||||
|
||||
if [ $# -ne 2 ]; then
|
||||
echo "Usage: $0 <backup_type> <backup_date>"
|
||||
echo "Example: $0 daily 20241201_020000"
|
||||
echo "Available backups:"
|
||||
echo "Daily:"
|
||||
ls -1 "${BACKUP_BASE_DIR}/daily/" | grep minecraft_daily
|
||||
echo "Weekly:"
|
||||
ls -1 "${BACKUP_BASE_DIR}/weekly/" | grep minecraft_weekly
|
||||
echo "Monthly:"
|
||||
ls -1 "${BACKUP_BASE_DIR}/monthly/" | grep minecraft_monthly
|
||||
exit 1
|
||||
fi
|
||||
|
||||
BACKUP_NAME="minecraft_${BACKUP_TYPE}_${BACKUP_DATE}"
|
||||
BACKUP_DIR="${BACKUP_BASE_DIR}/${BACKUP_TYPE}"
|
||||
|
||||
{% if backup_compression %}
|
||||
BACKUP_FILE="${BACKUP_DIR}/${BACKUP_NAME}.tar.gz"
|
||||
{% else %}
|
||||
BACKUP_FILE="${BACKUP_DIR}/${BACKUP_NAME}"
|
||||
{% endif %}
|
||||
|
||||
if [ ! -e "${BACKUP_FILE}" ]; then
|
||||
echo "Backup not found: ${BACKUP_FILE}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Stop Minecraft server
|
||||
systemctl stop minecraft
|
||||
|
||||
# Backup current server (just in case)
|
||||
RESTORE_BACKUP_DIR="${BACKUP_BASE_DIR}/restore_backup"
|
||||
mkdir -p "${RESTORE_BACKUP_DIR}"
|
||||
mv "${SERVER_DIR}" "${RESTORE_BACKUP_DIR}/server_before_restore_$(date +%Y%m%d_%H%M%S)"
|
||||
|
||||
# Restore from backup
|
||||
{% if backup_compression %}
|
||||
mkdir -p "${SERVER_DIR}"
|
||||
tar -xzf "${BACKUP_FILE}" -C "${BACKUP_DIR}"
|
||||
rsync -av "${BACKUP_DIR}/${BACKUP_NAME}/" "${SERVER_DIR}/"
|
||||
rm -rf "${BACKUP_DIR}/${BACKUP_NAME}"
|
||||
{% else %}
|
||||
rsync -av "${BACKUP_FILE}/" "${SERVER_DIR}/"
|
||||
{% endif %}
|
||||
|
||||
# Fix permissions
|
||||
chown -R {{ minecraft_user }}:{{ minecraft_group }} "${SERVER_DIR}"
|
||||
|
||||
# Start Minecraft server
|
||||
systemctl start minecraft
|
||||
|
||||
echo "Restore completed from: ${BACKUP_FILE}"
|
Reference in New Issue
Block a user