Spaces:
Running
Running
File size: 2,893 Bytes
93409a3 30b021f 3f98e3c d7c97be 3f98e3c 4581739 d7c97be 3f98e3c d7c97be 3f98e3c d7c97be 3f98e3c d7c97be dbcbb03 d7c97be 3f98e3c d7c97be 88739ff 3f98e3c d7c97be 3f98e3c 88739ff 3f98e3c d7c97be 88739ff 3f98e3c d7c97be ab007ce d7c97be ab007ce d7c97be ab007ce d7c97be ab007ce d7c97be 3f98e3c d7c97be ab007ce d7c97be ab007ce d7c97be 3f98e3c d7c97be 3f98e3c d7c97be 3f98e3c dbcbb03 d7c97be dbcbb03 d7c97be 3f98e3c d7c97be | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | #!/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 "✅ جاهز" |