mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-22 23:30:14 +00:00
Add asset backup script with zstd/pigz/gzip fallback
This commit is contained in:
parent
77f8ebd727
commit
9fc41d6f30
1 changed files with 60 additions and 0 deletions
60
tools/backup_assets.sh
Executable file
60
tools/backup_assets.sh
Executable file
|
|
@ -0,0 +1,60 @@
|
|||
#!/usr/bin/env bash
|
||||
#
|
||||
# Backup extracted WoW assets (Data/) to a compressed archive.
|
||||
# Usage: ./tools/backup_assets.sh [DATA_DIR] [BACKUP_DIR]
|
||||
#
|
||||
# If not provided, the script will prompt for both paths.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
DEFAULT_DATA="./Data"
|
||||
DEFAULT_BACKUP="$HOME/.local/share/wowee/backups"
|
||||
|
||||
# --- Resolve data directory ---
|
||||
DATA_DIR="${1:-}"
|
||||
if [ -z "$DATA_DIR" ]; then
|
||||
read -rp "Data directory to back up [$DEFAULT_DATA]: " DATA_DIR
|
||||
DATA_DIR="${DATA_DIR:-$DEFAULT_DATA}"
|
||||
fi
|
||||
|
||||
if [ ! -d "$DATA_DIR" ]; then
|
||||
echo "Error: Data directory not found: $DATA_DIR" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f "$DATA_DIR/manifest.json" ]; then
|
||||
echo "Error: No manifest.json in $DATA_DIR — doesn't look like an extracted asset directory" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# --- Resolve backup directory ---
|
||||
BACKUP_DIR="${2:-}"
|
||||
if [ -z "$BACKUP_DIR" ]; then
|
||||
read -rp "Backup destination [$DEFAULT_BACKUP]: " BACKUP_DIR
|
||||
BACKUP_DIR="${BACKUP_DIR:-$DEFAULT_BACKUP}"
|
||||
fi
|
||||
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
|
||||
# --- Build archive name with timestamp ---
|
||||
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
||||
ARCHIVE="$BACKUP_DIR/wowee_assets_$TIMESTAMP.tar.zst"
|
||||
|
||||
# --- Measure source size ---
|
||||
DATA_SIZE=$(du -sh "$DATA_DIR" | cut -f1)
|
||||
echo "Backing up $DATA_DIR ($DATA_SIZE) ..."
|
||||
echo "Destination: $ARCHIVE"
|
||||
|
||||
# --- Compress ---
|
||||
if command -v zstd &>/dev/null; then
|
||||
tar cf - -C "$(dirname "$DATA_DIR")" "$(basename "$DATA_DIR")" | zstd -T0 -3 -o "$ARCHIVE"
|
||||
elif command -v pigz &>/dev/null; then
|
||||
ARCHIVE="$BACKUP_DIR/wowee_assets_$TIMESTAMP.tar.gz"
|
||||
tar cf - -C "$(dirname "$DATA_DIR")" "$(basename "$DATA_DIR")" | pigz -p "$(nproc)" > "$ARCHIVE"
|
||||
else
|
||||
ARCHIVE="$BACKUP_DIR/wowee_assets_$TIMESTAMP.tar.gz"
|
||||
tar czf "$ARCHIVE" -C "$(dirname "$DATA_DIR")" "$(basename "$DATA_DIR")"
|
||||
fi
|
||||
|
||||
ARCHIVE_SIZE=$(du -sh "$ARCHIVE" | cut -f1)
|
||||
echo "Done: $ARCHIVE ($ARCHIVE_SIZE)"
|
||||
Loading…
Add table
Add a link
Reference in a new issue