Spaces:
Running
Running
Update entrypoint.sh
#1
by alpgul - opened
- entrypoint.sh +38 -51
entrypoint.sh
CHANGED
|
@@ -7,74 +7,61 @@ set -euo pipefail
|
|
| 7 |
export DB_DIR="/app/data"
|
| 8 |
export REPO_ID="${REPO_ID:-alpgul/omniroute-storage}"
|
| 9 |
export HF_HOME="/tmp/.cache/huggingface"
|
| 10 |
-
|
| 11 |
-
# SQLite Üçlüsü: Ana dosya + Paylaşılan Bellek + Yazma Günlüğü
|
| 12 |
-
FILES=("storage.sqlite" "storage.sqlite-shm" "storage.sqlite-wal")
|
| 13 |
# ===========================================================
|
| 14 |
|
| 15 |
-
echo "[$(date +'%T')] --- OmniRoute /app/data
|
| 16 |
|
| 17 |
# 1. Dizin Kontrolü
|
| 18 |
mkdir -p "$DB_DIR"
|
| 19 |
|
| 20 |
-
# 2. HF
|
| 21 |
if [[ -z "${HF_TOKEN:-}" ]]; then
|
| 22 |
echo "[HATA] HF_TOKEN eksik! Settings > Secrets kısmından ekleyin."
|
| 23 |
exit 1
|
| 24 |
fi
|
| 25 |
|
| 26 |
-
|
| 27 |
-
hf auth login --token "$HF_TOKEN" &> /dev/null
|
| 28 |
-
|
| 29 |
-
# 3. Restore (3 Dosyayı da Hub'dan İndir)
|
| 30 |
echo "[Restore] Hub'dan dosyalar kontrol ediliyor..."
|
| 31 |
-
|
| 32 |
-
python3 -c "
|
| 33 |
from huggingface_hub import hf_hub_download
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 39 |
" || true
|
| 40 |
-
done
|
| 41 |
|
| 42 |
-
# 4. Arka Plan Senkronizasyonu
|
| 43 |
-
|
| 44 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 45 |
|
| 46 |
-
|
| 47 |
-
sleep 60
|
| 48 |
-
CURRENT_COMBINED_HASH=""
|
| 49 |
-
|
| 50 |
-
# Dosyaların durumunu kontrol et ve birleşik hash oluştur
|
| 51 |
-
for FILE in "${FILES[@]}"; do
|
| 52 |
-
FILE_PATH="${DB_DIR}/${FILE}"
|
| 53 |
-
if [[ -f "$FILE_PATH" ]]; then
|
| 54 |
-
FILE_HASH=$(md5sum "$FILE_PATH" | cut -d' ' -f1)
|
| 55 |
-
CURRENT_COMBINED_HASH+="${FILE_HASH}"
|
| 56 |
-
fi
|
| 57 |
-
done
|
| 58 |
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
for FILE in "${FILES[@]}"; do
|
| 64 |
-
FILE_PATH="${DB_DIR}/${FILE}"
|
| 65 |
-
if [[ -f "$FILE_PATH" ]]; then
|
| 66 |
-
# Hata mesajlarını görmek için 2>/dev/null'u kaldırdık
|
| 67 |
-
python3 -c "from huggingface_hub import HfApi; HfApi().upload_file(path_or_fileobj='$FILE_PATH', path_in_repo='$FILE', repo_id='$REPO_ID', repo_type='dataset', commit_message='WAL Sync: $FILE')" || echo "! $FILE yüklenemedi."
|
| 68 |
-
fi
|
| 69 |
-
done
|
| 70 |
-
|
| 71 |
-
LAST_COMBINED_HASH="$CURRENT_COMBINED_HASH"
|
| 72 |
-
echo "[Sync] Başarılı: $(date +'%T')"
|
| 73 |
-
fi
|
| 74 |
-
done
|
| 75 |
-
) &
|
| 76 |
|
| 77 |
# 5. Uygulamayı Başlat
|
| 78 |
echo "[System] OmniRoute başlatılıyor (/app/data)..."
|
| 79 |
-
|
| 80 |
-
exec node run-standalone.mjs
|
|
|
|
| 7 |
export DB_DIR="/app/data"
|
| 8 |
export REPO_ID="${REPO_ID:-alpgul/omniroute-storage}"
|
| 9 |
export HF_HOME="/tmp/.cache/huggingface"
|
|
|
|
|
|
|
|
|
|
| 10 |
# ===========================================================
|
| 11 |
|
| 12 |
+
echo "[$(date +'%T')] --- OmniRoute /app/data Yedekleme ---"
|
| 13 |
|
| 14 |
# 1. Dizin Kontrolü
|
| 15 |
mkdir -p "$DB_DIR"
|
| 16 |
|
| 17 |
+
# 2. HF Token Denetimi
|
| 18 |
if [[ -z "${HF_TOKEN:-}" ]]; then
|
| 19 |
echo "[HATA] HF_TOKEN eksik! Settings > Secrets kısmından ekleyin."
|
| 20 |
exit 1
|
| 21 |
fi
|
| 22 |
|
| 23 |
+
# 3. Restore (Dosyaları Hub'dan İndir)
|
|
|
|
|
|
|
|
|
|
| 24 |
echo "[Restore] Hub'dan dosyalar kontrol ediliyor..."
|
| 25 |
+
python3 -c "
|
|
|
|
| 26 |
from huggingface_hub import hf_hub_download
|
| 27 |
+
|
| 28 |
+
files = ['storage.sqlite', 'storage.sqlite-shm', 'storage.sqlite-wal']
|
| 29 |
+
for f in files:
|
| 30 |
+
try:
|
| 31 |
+
hf_hub_download(
|
| 32 |
+
repo_id='${REPO_ID}',
|
| 33 |
+
filename=f,
|
| 34 |
+
repo_type='dataset',
|
| 35 |
+
local_dir='${DB_DIR}',
|
| 36 |
+
token='${HF_TOKEN}'
|
| 37 |
+
)
|
| 38 |
+
print(f'√ {f} indirildi.')
|
| 39 |
+
except Exception as e:
|
| 40 |
+
print(f'- {f} bulunamadı, atlanıyor.')
|
| 41 |
" || true
|
|
|
|
| 42 |
|
| 43 |
+
# 4. CommitScheduler ile Arka Plan Senkronizasyonu
|
| 44 |
+
echo "[Scheduler] Otomatik senkronizasyon başlatılıyor..."
|
| 45 |
+
python3 -c "
|
| 46 |
+
import time
|
| 47 |
+
from huggingface_hub import CommitScheduler
|
| 48 |
+
|
| 49 |
+
scheduler = CommitScheduler(
|
| 50 |
+
repo_id='${REPO_ID}',
|
| 51 |
+
repo_type='dataset',
|
| 52 |
+
folder_path='${DB_DIR}',
|
| 53 |
+
allow_patterns=['*.sqlite', '*.sqlite-shm', '*.sqlite-wal'],
|
| 54 |
+
every=5,
|
| 55 |
+
squash_history=True,
|
| 56 |
+
token='${HF_TOKEN}',
|
| 57 |
+
)
|
| 58 |
|
| 59 |
+
print('[Scheduler] Aktif: her 5 dakikada bir sync, squash_history=True')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 60 |
|
| 61 |
+
while True:
|
| 62 |
+
time.sleep(60)
|
| 63 |
+
" &
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 64 |
|
| 65 |
# 5. Uygulamayı Başlat
|
| 66 |
echo "[System] OmniRoute başlatılıyor (/app/data)..."
|
| 67 |
+
node run-standalone.mjs
|
|
|