Kopie zapasowe aplikacji dla firmy — co, gdzie, jak często i jak sprawdzić, że da się odtworzyć?
Kopia to trzy osobne rzeczy: baza, pliki użytkowników i kod z konfiguracją — każda z innym mechanizmem i inną retencją. W planie Pro Supabase codzienne kopie bazy sięgają 7 dni wstecz, a pliki z magazynu nie wchodzą do kopii bazy (odczyt 31.08.2026). Kopię sprawdza się odtworzeniem, nie istnieniem pliku.
Model zagrożeń: co realnie kasuje dane aplikacji?
Siedem scenariuszy w tabeli niżej. Ani jeden nie jest włamaniem — to pomyłka operatora, migracja, koniec planu u dostawcy albo plik, którego kopia bazy nigdy nie obejmowała.
Model zagrożeń dla kopii odpowiada na cztery pytania: kto albo co uderza, czym, co firma traci i który mechanizm to ratuje. Jeśli przy którymś wierszu nie umiesz wskazać mechanizmu, ten scenariusz kończy się utratą danych.
Mechanizm nie jest jeden dla całej aplikacji. Dokumentacja Supabase mówi wprost, że kopie bazy nie obejmują obiektów zapisanych przez interfejs magazynu plików, bo w bazie leżą wyłącznie dane o nich (odczyt 31.08.2026).
| Kto albo co | Czym | Co traci firma | Mechanizm, który to ratuje |
|---|---|---|---|
| Własny operator w panelu | kasuje rekord albo całą listę jednym poleceniem | dane od ostatniej kopii | odtworzenie do wybranego momentu albo kopia dobowa |
| Błędna migracja bazy | zmienia schemat albo nadpisuje kolumnę na produkcji | spójność tabel i historię zapisów | kopia wykonana ręcznie tuż przed migracją |
| Dostawca — awaria albo zamknięcie konta | projekt znika razem z kopiami, które w nim leżą | aplikację i kopie naraz | eksport na magazyn poza kontem dostawcy |
| Brak aktywności w planie darmowym | dostawca wstrzymuje projekt po tygodniu niskiej aktywności | dostęp do bazy do czasu wznowienia | plan płatny albo własny zrzut bazy u siebie |
| Przejęte konto administratora | kasuje dane i kopie dostępne z tego samego konta | dane i możliwość odtworzenia | druga kopia z osobnym dostępem i osobnym hasłem |
| Wygasła karta u dostawcy | plan schodzi niżej, okno kopii i wdrożeń kurczy się do domyślnego | okno odtworzenia | termin płatności w kalendarzu i eksport poza konto |
| Skasowane pliki użytkowników | odtworzenie bazy przywraca odnośniki, nie pliki | załączniki, zdjęcia, dokumenty | osobna kopia magazynu plików |
Trzy składniki kopii: baza, pliki i kod
Kopia aplikacji to trzy mechanizmy z trzema różnymi retencjami. Pytanie „czy robicie kopie” bez wskazania składnika ma tyle poprawnych odpowiedzi, ile jest składników — i każda z nich brzmi uspokajająco.
Baza. Dostawca robi ją automatycznie według planu: w Pro codzienne kopie sięgają 7 dni wstecz, w Team 14 dni, w Enterprise do 30 dni (dokumentacja Supabase, odczyt 31.08.2026).
W planie darmowym cennik przy automatycznych kopiach podaje, że nie wchodzą w plan, a dokumentacja zaleca własny zrzut bazy z wiersza poleceń i utrzymywanie kopii poza dostawcą. To jedyna kopia, jaką ma darmowy projekt.
Odtworzenie do wybranego momentu (PITR) jest u tego dostawcy płatnym dodatkiem: 100 USD miesięcznie za 7 dni okna, do wyboru 7, 14 albo 28 dni. Deklarowany punkt odtworzenia w najgorszym przypadku to dwie minuty. Włączenie dodatku wyłącza kopie dobowe.
Pliki użytkowników. Nie wchodzą do kopii bazy — po odtworzeniu zostają odnośniki do plików, których nie ma. Dokumentacja dodaje, że odtworzenie starszej kopii nie przywraca obiektów skasowanych po jej wykonaniu. Magazyn w cenniku: 1 GB w planie darmowym, 100 GB w Pro, potem 0,0213 USD za GB.
Kod i konfiguracja. Źródłem jest repozytorium, nie hosting. Domyślna retencja wdrożeń na Vercelu to 30 dni w planie Hobby dla każdego stanu wdrożenia, a w Pro i Enterprise rok dla produkcyjnych i 180 dni dla podglądowych (dokumentacja, odczyt 31.08.2026).
Są wyjątki: ostatnie dziesięć wdrożeń projektu i ostatnie dwadzieścia gotowych wdrożeń produkcyjnych zostaje niezależnie od terminu, a skasowane wdrożenie da się przywrócić przez 30 dni. To mechanizm cofnięcia zmiany, nie archiwum kodu.
U nas jedna baza to jedna kopia i jeden model uprawnień. Dlatego pierwsza wersja aplikacji nie jest rozbijana na kilka usług: przy trzech bazach odtworzenie oznacza trzy punkty w czasie, które trzeba do siebie dopasować ręcznie.
Zasady, których nie da się dołożyć po awarii
Pięć zasad. Każda kosztuje kilkanaście minut przy zakładaniu projektu, a po awarii żadnej nie da się zastosować wstecz — nie ma już czego odtwarzać.
Plan kopii obejmuje trzy składniki naraz. Baza, pliki i repozytorium z konfiguracją, każde z własną retencją i własnym miejscem.
Błąd, który wyklucza: odpowiedź „dostawca robi kopie” traktowana jako cały plan.
Koszt błędu: baza wraca, aplikacja rusza, a załączniki i zdjęcia klientów są odnośnikami donikąd.
Jedna kopia leży poza kontem dostawcy. Eksport bazy i plików na magazyn, do którego nie ma dostępu konto administrujące aplikacją.
Błąd, który wyklucza: jedyna kopia w tym samym projekcie, który może zostać wstrzymany albo przejęty.
Koszt błędu: konto staje się jednym punktem awarii dla aplikacji i dla kopii naraz. Dokumentacja Supabase sama zaleca darmowym projektom własny zrzut i kopie poza dostawcą, a kopie fizyczne nowszych wersji bazy nie są dostępne do pobrania.
Kopia przed każdą migracją bazy. Wykonana ręcznie tuż przed zmianą schematu, nie ta sprzed nocy.
Błąd, który wyklucza: migracja na produkcji z założeniem, że kopia dobowa wystarczy.
Koszt błędu: bez dodatku odtwarzającego do wybranego momentu cofasz się do kopii z poprzedniej doby, razem ze wszystkim, co klienci zdążyli w tym czasie wpisać.
Próba odtworzenia z zapisanym punktem i czasem. Kopie sprawdzamy odtworzeniem, nie istnieniem pliku; punkt odtworzenia i czas odtworzenia są zapisane, zanim będą potrzebne.
Błąd, który wyklucza: zdanie „kopie robią się codziennie” podane jako dowód.
Koszt błędu: o tym, że kopia jest niepełna albo że odtworzenie trwa pół dnia, dowiadujesz się w dniu, w którym jest jedyna.
Kopia ma termin, tak jak dane w aplikacji. Usunięcie danych obejmuje również kopie, z terminem wynikającym z retencji dostawcy.
Błąd, który wyklucza: polityka usuwania danych opisująca wyłącznie bazę produkcyjną.
Koszt błędu: żądanie wykonane w aplikacji i niewykonane w kopii. Terminy i mechanikę usuwania zbiera tekst o RODO wdrożonym w kodzie, a nie w regulaminie.
Punkt odtworzenia i czas odtworzenia — dwie liczby zamiast zapewnień
Słownik NIST, za publikacją SP 800-34 Rev. 1, definiuje je krótko. Punkt odtworzenia to moment w czasie, do którego dane muszą zostać odtworzone po awarii. Czas odtworzenia to łączny czas, przez jaki elementy systemu mogą pozostawać w fazie odtwarzania, zanim odbije się to na działaniu organizacji.
Pierwsza liczba wynika z planu u dostawcy. Kopia dobowa daje punkt odtworzenia liczony w dobach, a dodatek odtwarzający do wybranego momentu deklaruje w najgorszym przypadku dwie minuty (odczyt 31.08.2026).
Druga liczba nie wynika z żadnego cennika. Czas odtworzenia to wynik próby przeprowadzonej na konkretnej bazie, z konkretną liczbą tabel i plików. Dopóki nikt takiej próby nie przeprowadził, ta liczba po prostu nie istnieje.
Jak to sprawdzić samemu w 5 minut?
Pięć sprawdzeń bez programisty. Żadne nie rusza danych, a razem zajmują około pięciu minut — plus czas, którego wykonawca potrzebuje na punkt trzeci.
- Zapytaj o datę ostatniej próby odtworzenia (30 sekund). Dobra odpowiedź ma trzy liczby: dzień próby, ile danych stracono i ile trwało odtworzenie. Odpowiedź o częstotliwości kopii mówi o pliku, nie o odtworzeniu.
- Sprawdź plan dostawcy w jego cenniku (60 sekund). W planie darmowym automatyczne kopie są oznaczone jako spoza planu, a projekt bywa wstrzymywany po tygodniu niskiej aktywności. Plan płatny podaje, ile dni wstecz sięgają kopie dobowe.
- Poproś o eksport i odbierz plik (90 sekund twojego czasu). Zrzut bazy i pliki z magazynu, przekazane tak, żeby leżały u ciebie. Kopia, której nigdy nie widziałeś, jest kopią wykonawcy, nie firmy.
- Sprawdź, gdzie leży repozytorium (30 sekund). Ma być na koncie firmy u dostawcy repozytoriów, z dostępem dla więcej niż jednej osoby. Kod na jednym laptopie to nie repozytorium, tylko katalog.
- Sprawdź, czy hosting ma jeszcze poprzednie wdrożenie (60 sekund). Lista wdrożeń pokazuje, do której wersji da się cofnąć jednym kliknięciem. Retencja jest ograniczona terminem planu, więc to nie zastępuje repozytorium.
Wynik negatywny to lista zadań, nie awantura z wykonawcą. Trzy pierwsze punkty poprawia się w jeden dzień, dopóki aplikacja nie ma jeszcze lat historii i tysięcy plików w magazynie.
Osobne pytanie, czy w ogóle da się dostać do cudzych danych, rozstrzyga pięć testów z tekstu o zasadach bezpieczeństwa od pierwszego dnia. Kopia chroni przed utratą, nie przed wyciekiem.
Czego nie ma w dokumentacji
Operator płatności trzyma własną historię transakcji, ale nie publikuje okresu przechowywania kopii ani eksportów. Dokumentacja Stripe opisuje usuwanie i redakcję danych — transakcji nie da się usunąć, można je zredagować dopiero po 90 dniach — a okresu przechowywania kopii nie znaleźliśmy w dokumentacji na dzień 31 sierpnia 2026.
Wniosek praktyczny jest jeden: historii płatności nie traktuj jak swojej kopii. Dane, które mają przetrwać zmianę operatora, leżą w twojej bazie i w twoim eksporcie.
Reszta wątków ma osobne miejsca. Podział aplikacji na warstwy opisuje tekst o warstwach aplikacji dla firmy, a to, co dzieje się z awariami i aktualizacjami po starcie — tekst o aplikacji po starcie.
Rachunek za bazę i magazyn w dłuższym oknie zbiera zestawienie kosztu aplikacji w trzy lata. Tutaj liczy się jedno: kopia bez próby odtworzenia jest wydatkiem, nie zabezpieczeniem.
Najczęstsze pytania
Czy dostawca chmury robi kopie za mnie?
Tak, ale według planu i wyłącznie na swoim koncie. W dokumentacji Supabase plan Pro daje dostęp do 7 dni kopii dobowych, Team do 14 dni, Enterprise do 30 dni; w planie darmowym automatycznych kopii nie ma, a dokumentacja zaleca własny zrzut bazy i kopię poza dostawcą (odczyt 31.08.2026). Kopia leżąca na koncie dostawcy nie chroni przed utratą samego konta.
Jak często robić kopie?
Trzy progi. Przed każdą migracją — ręcznie, tuż przed zmianą schematu. Codziennie — automatem dostawcy, jeśli plan to obejmuje. Do wybranego momentu — gdy aplikacja przyjmuje płatności i doba utraconych danych oznacza rozjazd z operatorem; u Supabase to płatny dodatek, 100 USD miesięcznie za 7 dni okna, z punktem odtworzenia dwóch minut w najgorszym przypadku (odczyt 31.08.2026).
Co z plikami, które wgrywają użytkownicy?
Kopia bazy ich nie obejmuje. Dokumentacja Supabase mówi, że kopie nie zawierają obiektów zapisanych przez interfejs magazynu, bo baza trzyma tylko dane o nich, a odtworzenie starszej kopii nie przywraca plików skasowanych później. Magazyn ma osobny cennik: 1 GB w planie darmowym, 100 GB w Pro, potem 0,0213 USD za GB (odczyt 31.08.2026). Eksport plików planuje się osobno.
Czy hosting przechowuje starą wersję aplikacji?
Przez czas retencji wdrożeń, nie bezterminowo. Na Vercelu domyślnie 30 dni w planie Hobby, a w Pro i Enterprise rok dla wdrożeń produkcyjnych i 180 dni dla podglądowych; dziesięć najnowszych wdrożeń projektu zostaje niezależnie od terminu, a skasowane można przywrócić przez 30 dni (odczyt 31.08.2026). Źródłem kodu pozostaje repozytorium, nie panel hostingu.
Kto odpowiada, gdy kopia zawiedzie?
To pytanie do umowy, nie do dokumentacji dostawcy — i lepiej postawić je przed startem. Trzy rzeczy warto mieć zapisane: który składnik kopii należy do kogo (baza, pliki, repozytorium), jaki jest deklarowany punkt i czas odtworzenia oraz kto przeprowadza próbę odtworzenia i jak często ją dokumentuje. Ocena konkretnej sytuacji należy do prawnika.
Źródła
- Supabase — Database Backups: kopie dobowe (Pro 7 dni, Team 14, Enterprise do 30), PITR 7/14/28 dni i RPO dwóch minut, kopie fizyczne bez możliwości pobrania, brak obiektów magazynu w kopii bazy — https://supabase.com/docs/guides/platform/backups (odczyt 31.08.2026)
- Supabase — cennik: automatyczne kopie poza planem darmowym, Point in Time Recovery 100 USD miesięcznie za 7 dni okna, magazyn 1 GB / 100 GB i 0,0213 USD za GB — https://supabase.com/pricing (odczyt 31.08.2026)
- Supabase — Project Pausing: wstrzymanie projektu planu darmowego przy niskiej aktywności w oknie 7 dni, wznowienie do roku od wstrzymania — https://supabase.com/docs/guides/platform/free-project-pausing (odczyt 31.08.2026)
- Supabase CLI — polecenie db dump: zrzut zawartości zdalnej bazy do pliku (kopia logiczna wykonywana samodzielnie) — https://supabase.com/docs/reference/cli/supabase-db-dump (odczyt 31.08.2026)
- Vercel — Deployment Retention: domyślne okresy retencji wdrożeń (Hobby 30 dni, Pro i Enterprise rok dla produkcyjnych, 180 dni dla podglądowych), wyjątki i 30-dniowe okno przywrócenia — https://vercel.com/docs/deployment-retention (odczyt 31.08.2026)
- NIST Computer Security Resource Center — hasło Recovery Point Objective (definicja za NIST SP 800-34 Rev. 1) — https://csrc.nist.gov/glossary/term/recovery_point_objective (odczyt 31.08.2026)
- NIST Computer Security Resource Center — hasło Recovery Time Objective (definicja za NIST SP 800-34 Rev. 1) — https://csrc.nist.gov/glossary/term/recovery_time_objective (odczyt 31.08.2026)
- Stripe — Handling customer deletion requests: redakcja zamiast usunięcia, transakcje możliwe do zredagowania dopiero po 90 dniach (okresu przechowywania kopii i eksportów dokumentacja nie podaje) — https://docs.stripe.com/privacy/deletion-requests (odczyt 31.08.2026)
- Kopie zapasowe i próby odtworzenia w naszych wdrożeniach — praktyka zespołu — https://jakzrobicaplikacje.pl/o-serwisie/#skad (2026-08-31)
Tekst przygotował Agent AI Tomka Niedźwieckiego — treść wygenerowana przez sztuczną inteligencję na podstawie własnych wdrożeń zespołu, dokumentacji dostawców i źródeł podanych wyżej, sprawdzona w osobnym przebiegu weryfikacji faktów i zredagowana. Za fakty odpowiada Tomek Niedźwiecki. Ostatnia weryfikacja: 10 września 2026.