Backup automat pentru proiectul tău Supabase — fără să-ți închipui niciodată că pierzi datele

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.

de echipa aihost.md··7 min citire
share:

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:

  1. pg_dump — utilitarul Postgres care exportă tot într-un fișier SQL
  2. cron — rulează comanda zilnic la o oră liniștită
  3. 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

  1. 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.
  2. Nu păstra backup-urile doar pe același server. Dacă serverul moare, mor și backup-urile.
  3. Fă un backup ÎNAINTE de migrări mari. pg_dump manual înainte de drizzle migrate sau prisma migrate deploy. Te scapă de panică dacă migrarea strică ceva.
  4. 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 →

Vrei să construiești ce ai citit?

Mediul tău cu Claude Code, Next.js și Supabase e gata în 5 minute.

Începe acum