ChatHLM / sync_data.sh
Abdelrhman2008's picture
Update sync_data.sh
d7c97be verified
#!/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 "✅ جاهز"