Backup automat pentru proiectul tău Supabase — fără să-ți închipui niciodată că pierzi datele
Supabase Pro îți dă 7 zile de backup-uri, dar nu poți restaura un singur tabel și nici nu poți păstra istoric mai vechi. Iată cum faci backup zilnic offsite gratuit — sau cum îl ai inclus din prima.
Cea mai costisitoare greșeală pe care o poți face cu un proiect Supabase nu e un bug în cod. E să nu ai backup când îți trebuie.
Am întâlnit asta literal în săptămâna asta. Un developer mi-a scris la 2 noaptea: "am rulat o migrare drizzle care a șters o coloană greșită — am pierdut un tabel întreg". Supabase avea backup-ul, dar restaurarea înlocuiește toată baza de date — adică pierdeai și 4 ore de comenzi noi care veniseră între timp.
Ce backup-uri ai nativ în Supabase
Pe planul Free: zero. Niciun backup. Dacă cineva îți drop-uiește un tabel, datele sunt duse.
Pe planul Pro (25$/lună): 7 zile de backup-uri zilnice automate. Bune, dar:
- Restaurarea înlocuiește toată baza — nu poți recupera doar un tabel
- După 7 zile, backup-ul vechi se șterge — nu păstrezi istoric lung
- Backup-urile rămân pe infrastructura Supabase — dacă ei pică, pici și tu
- Trebuie să intri în Dashboard ca să restaurezi (nu poți automatiza)
Pe Team sau Enterprise ai PITR (Point-in-Time Recovery) — recuperezi la orice secundă din ultimele 28 zile. Dar costă de la 599$/lună. Pentru un proiect mic e overkill.
Soluția DIY: pg_dump + cron + storage offsite
Dacă vrei controlul tău, ai nevoie de 3 piese:
- pg_dump — utilitarul Postgres care exportă tot într-un fișier SQL
- cron — rulează comanda zilnic la o oră liniștită
- Storage offsite — Backblaze B2, AWS S3, Cloudflare R2, sau chiar Google Drive
Pasul 1: ia connection string-ul Supabase
Din Supabase Dashboard → Project Settings → Database → Connection string (URI mode). Arată cam așa:
postgresql://postgres.xyzproject:PAROLA@aws-0-eu-central-1.pooler.supabase.com:6543/postgres
Pasul 2: scriptul de backup
#!/usr/bin/env bash
set -euo pipefail
DB_URL="postgresql://postgres.xyz:..."
DEST="/var/backups/supabase"
NAME="supabase-$(date +%F-%H%M).sql.gz"
mkdir -p "$DEST"
pg_dump "$DB_URL" --no-owner --no-acl | gzip > "$DEST/$NAME"
# Upload la Backblaze B2 (gratuit primii 10 GB)
b2 upload-file backups-bucket "$DEST/$NAME" "supabase/$NAME"
# Șterge backup-uri locale mai vechi de 14 zile
find "$DEST" -name "supabase-*.sql.gz" -mtime +14 -delete
echo "✓ backup $NAME ($(du -h $DEST/$NAME | cut -f1))"
Pasul 3: cron zilnic la 3 dimineața
0 3 * * * /home/youruser/backup-supabase.sh >> /var/log/backup.log 2>&1
Cât te costă DIY
- VPS minim ca să ruleze cron-ul: ~5€/lună (Hetzner / iHost)
- Backblaze B2 primii 10 GB: 0$. Peste: 6$/TB/lună
- Timp de setup: 1-2 ore prima dată, după nu mai pui mâna
Dezavantajul real: trebuie să-ți aduci aminte să verifici lunar că backup-ul rulează. Backup care rulează tăcut și pe care nu-l verifici niciodată e backup care nu există.
Cum rezolvă aihost.md asta
La aihost.md backup-ul e parte din planul de bază. Concret:
- Snapshot zilnic al întregii baze Postgres + fișiere
- 30 zile retention pe planul Hobby (de la 150 MDL/lună), 90 zile pe Starter
- Restore granular: restaurezi întreaga bază sau doar un singur tabel din UI
- Stocare offsite: backup-urile pleacă pe un al doilea server, în altă locație
- Notificare email când un backup eșuează — nu mai trebuie să verifici manual
- Download oricând ca .sql.gz din dashboard, dacă vrei o copie locală
Diferența majoră: nu pui mâna pe nimic. Setup-ul e zero, nu există un script de cron care să se strice peste 6 luni când ai uitat că exista.
Câteva reguli care te scapă de toate dramele
- Testează restaurarea măcar o dată. Backup care n-a fost niciodată restaurat = backup care poate că nu funcționează. Restaurează într-un proiect de test.
- Nu păstra backup-urile doar pe același server. Dacă serverul moare, mor și backup-urile.
- Fă un backup ÎNAINTE de migrări mari.
pg_dumpmanual înainte dedrizzle migratesauprisma migrate deploy. Te scapă de panică dacă migrarea strică ceva. - Documentează cum restaurezi. În CLAUDE.md sau README. La 2 noaptea când serverul e jos, nu vrei să cauți pe Google.
Concluzie
Dacă proiectul tău e doar pentru experimentat, Supabase Free + un export manual săptămânal e suficient. Dacă ai useri reali și date pe care nu vrei să le pierzi, ai nevoie de backup automat — fie DIY (1-2 ore setup, ~5€/lună), fie inclus de la început într-un plan ca aihost.md.
Costul "de a nu face nimic" e ascuns. Plătești o singură dată, când e prea târziu.
Pornește un proiect aihost.md cu backup automat din prima zi →
