#!/bin/bash # ======================================== # Open WebUI GitHub Sync - Simple # ======================================== DB_FILE="/app/backend/data/webui.db" DATA_DIR="./data" TEMP_DIR="$DATA_DIR/git_temp" SYNC_INTERVAL=10800 # 3 ساعات log() { echo "[$(date '+%H:%M:%S')] $1"; } # ======================================== # رفع إلى GitHub # ======================================== push_to_github() { [[ -z "${G_NAME:-}" ]] || [[ -z "${G_TOKEN:-}" ]] && return 1 [[ ! -f "$DB_FILE" ]] && return 1 log "📤 رفع البيانات إلى GitHub..." rm -rf "$TEMP_DIR" mkdir -p "$TEMP_DIR" local repo_url="https://${G_TOKEN}@github.com/${G_NAME}.git" # Clone أو Init if ! git clone --depth 1 --quiet "$repo_url" "$TEMP_DIR" 2>/dev/null; then cd "$TEMP_DIR" git init --quiet git remote add origin "$repo_url" echo "# Open WebUI Backup" > README.md cd - > /dev/null fi cd "$TEMP_DIR" git config user.name "Sync" git config user.email "sync@local" # نسخ الملف cp "$DB_FILE" ./webui.db 2>/dev/null git add -A git commit -m "Sync $(date '+%Y-%m-%d %H:%M')" --quiet 2>/dev/null || true git push origin HEAD:main --force --quiet 2>/dev/null || \ git push -u origin HEAD:main --force --quiet 2>/dev/null || \ git push origin HEAD:master --force --quiet 2>/dev/null cd - > /dev/null rm -rf "$TEMP_DIR" log "✅ تم الرفع" } # ======================================== # تحميل من GitHub # ======================================== pull_from_github() { [[ -z "${G_NAME:-}" ]] || [[ -z "${G_TOKEN:-}" ]] && return 1 log "📥 تحميل البيانات من GitHub..." rm -rf "$TEMP_DIR" mkdir -p "$TEMP_DIR" "$(dirname "$DB_FILE")" local repo_url="https://${G_TOKEN}@github.com/${G_NAME}.git" if git clone --depth 1 --quiet "$repo_url" "$TEMP_DIR" 2>/dev/null; then if [[ -f "$TEMP_DIR/webui.db" ]]; then cp "$TEMP_DIR/webui.db" "$DB_FILE" chmod 666 "$DB_FILE" 2>/dev/null log "✅ تم التحميل ($(du -h "$DB_FILE" | cut -f1))" else log "ℹ️ لا يوجد ملف محفوظ" fi else log "ℹ️ المستودع فارغ" fi rm -rf "$TEMP_DIR" } # ======================================== # التشغيل # ======================================== log "🚀 بدء المزامنة" mkdir -p "$DATA_DIR" # تحميل عند البداية pull_from_github # المزامنة الدورية ( sleep 300 # انتظار 5 دقائق while true; do log "🔄 مزامنة..." push_to_github log "⏰ القادمة بعد 3 ساعات" sleep $SYNC_INTERVAL done ) & log "✅ جاهز"