No description
Find a file
2026-04-10 21:26:42 +02:00
install.sh feat: config-datei support, git credentials, readme 2026-04-10 21:26:42 +02:00
README.md first commit 2026-04-10 21:24:20 +02:00
wow-backup.service feat: config-datei support, git credentials, readme 2026-04-10 21:26:42 +02:00
wow-backup.sh feat: config-datei support, git credentials, readme 2026-04-10 21:26:42 +02:00
wow-backup.timer feat: config-datei support, git credentials, readme 2026-04-10 21:26:42 +02:00

wow-backup-scripts

Automatisches Backup von WoW Interface/ und WTF/-Ordnern per rsync + Git.
Entwickelt für Linux-Setups mit Bottles / Wine, läuft aber mit jedem WoW-Installationspfad.

Was wird gesichert?

  • Interface/ — Addon-Dateien und Konfigurationen (ohne Blizzard-eigene Addons)
  • WTF/ — Account-Config, Keybinds, Macros, SavedVariables

Alle WoW-Versionen (_retail_, _classic_era_, _anniversary_, _xptr_, ...) werden automatisch erkannt — neue Versionen werden ohne Anpassung mitgesichert.

Features

  • Dynamische Erkennung aller WoW-Versionsordner (_*)
  • rsync + Git — inkrementelle Backups mit voller History
  • Interaktiver Restore — jeden Stand gezielt wiederherstellen
  • Auto-Push zu einem Git-Remote (Gitea, Forgejo, GitHub, ...)
  • systemd-Timer — automatische Backups alle 6 Stunden
  • Config-Datei — kein Hardcoding, pro Rechner konfigurierbar
  • Git-Credentials im Installer integriert (HTTPS + Access Token)

Installation

git clone https://git.dkrtn.de/deko/wow-backup-scripts.git
cd wow-backup-scripts
./install.sh

Der Installer fragt interaktiv nach:

  1. WoW-Installationspfad (sucht automatisch)
  2. Backup-Verzeichnis (Default: ~/wow-backup)
  3. Auto-Push Einstellung
  4. Git-Credentials (Server, User, Access Token)
  5. systemd-Timer Aktivierung

Die Konfiguration wird in ~/.config/wow-backup/config gespeichert.

Befehle

wow-backup.sh backup    # Backup erstellen (Default)
wow-backup.sh restore   # Stand interaktiv wiederherstellen
wow-backup.sh status    # Übersicht: Versionen, letztes Backup, Repo-Größe
wow-backup.sh list      # Backup-History anzeigen
wow-backup.sh init      # Backup-Repo initialisieren (macht install.sh automatisch)

Fish-Shell: ~/.local/bin muss im PATH sein — einmalig fish_add_path ~/.local/bin ausführen.

Konfiguration

Die Config liegt in ~/.config/wow-backup/config:

# Pfad zum WoW-Ordner (enthält _retail_, _classic_era_, etc.)
WOW_BASE="/home/deko/games/bottles/wow_12x/drive_c/Program Files (x86)/World of Warcraft"

# Wo das Backup-Repo liegt
BACKUP_DIR="/home/deko/wow-backup"

# Automatisch zum Git-Remote pushen
AUTO_PUSH="true"

# Git-Einstellungen
GIT_REMOTE="origin"
GIT_BRANCH="main"

Umgebungsvariablen überschreiben die Config:

WOW_BACKUP_AUTO_PUSH=true wow-backup.sh backup
WOW_BACKUP_BASE="/anderer/pfad" wow-backup.sh status

systemd-Timer

Der Timer läuft als User-Unit alle 6 Stunden und holt verpasste Backups nach (Persistent=true).

systemctl --user list-timers              # Timer anzeigen
systemctl --user status wow-backup        # Service-Status
journalctl --user -u wow-backup -f        # Logs verfolgen
systemctl --user restart wow-backup.timer # Timer neu starten

rsync-Excludes

Folgende Dateien/Ordner werden nicht gesichert:

  • Interface/AddOns/Blizzard_* — werden vom Client automatisch wiederhergestellt
  • WTF/Account/*/SavedVariables/*.bak / *.old — Backup-Artefakte von WoW
  • Cache/, *.tmp, *.bak

Zusätzliche Excludes können in der Config ergänzt werden:

EXCLUDES+=(
    "Interface/AddOns/MeinAddon/"
)

Dateistruktur

wow-backup-scripts/          # Dieses Repo (Skripte)
├── wow-backup.sh            # Hauptskript
├── install.sh               # Installer
├── wow-backup.service       # systemd Service-Unit
├── wow-backup.timer         # systemd Timer-Unit
└── README.md

~/wow-backup/                # Backup-Repo (separates Git-Repo)
├── _retail_/
│   ├── Interface/
│   └── WTF/
├── _classic_era_/
│   ├── Interface/
│   └── WTF/
├── _anniversary_/
└── _xptr_/

Voraussetzungen

  • bash, rsync, git
  • systemd (User-Units)
  • Für Auto-Push: Git-Credentials oder SSH-Key

Lizenz

MIT