Przejdź do treści
AdministracjaStron

Kopia zapasowa WordPress, czyli co, jak często i gdzie trzymać

Kopia zapasowa WordPress ma znaczenie tylko w jednej chwili: gdy trzeba z niej odtworzyć stronę. Wtedy okazuje się, czy obejmuje bazę danych, czy leży gdzie indziej niż zepsuty serwer, czy sięga wystarczająco daleko wstecz i czy w ogóle da się ją rozpakować. W tym poradniku opisujemy, co dokładnie kopiować, jak często, gdzie trzymać kopie i jak regularnie sprawdzać, że odtworzenie działa.

Sprawdź stronę

Z czego składa się strona na WordPressie

Strona na WordPressie to dwie części, które muszą do siebie pasować: pliki i baza danych. Kopia tylko jednej z nich nie odtworzy strony.

  • Baza danych MySQL albo MariaDB: wpisy, strony, ustawienia, konta, zamówienia WooCommerce, zgłoszenia z formularzy. To część, która zmienia się najczęściej.
  • Katalog wp-content: wgrane pliki (uploads), motywy, wtyczki, a często także pliki generowane przez wtyczki, na przykład faktury czy eksporty.
  • Plik wp-config.php z danymi dostępu do bazy, kluczami i ustawieniami strony.
  • Plik .htaccess albo konfiguracja serwera z przekierowaniami i regułami bezpieczeństwa.
  • Rdzeń WordPressa (wp-admin, wp-includes) można pobrać ponownie w tej samej wersji, ale w pełnej kopii i tak warto go mieć, żeby odtworzenie było jednym krokiem.

Z kopii możesz wyłączyć katalogi cache i pliki tymczasowe, bo odtwarzają się same, a potrafią kilkakrotnie powiększyć archiwum. Nie wyłączaj natomiast katalogu uploads tylko dlatego, że jest duży. To zwykle jedyne miejsce, gdzie leżą zdjęcia i dokumenty, których nie masz nigdzie indziej.

Jak wykonać kopię poprawnie

Bazę danych eksportuje się narzędziem mysqldump albo poleceniem WP-CLI wp db export. Przy tabelach InnoDB użyj opcji --single-transaction, żeby zrzut był spójny także wtedy, gdy w tej samej chwili ktoś składa zamówienie. Pliki pakuje się do archiwum albo kopiuje przyrostowo, czyli za każdym razem tylko to, co się zmieniło. Wtyczki do kopii, na przykład UpdraftPlus czy BackWPup, robią obie rzeczy z panelu, ale działają na tym samym serwerze co strona, więc przy dużych stronach potrafią przekroczyć limity czasu i pamięci PHP i kończą pracę w połowie. Zawsze sprawdzaj w logu, czy kopia zakończyła się sukcesem.

Jak często robić kopię zapasową strony WordPress

Częstotliwość kopii wynika z pytania, ile pracy albo danych możesz stracić. Jeśli kopia powstaje raz na dobę, w najgorszym razie tracisz dobę zmian. Dla strony wizytówki, którą edytujesz raz w miesiącu, to akceptowalne. Dla sklepu, który przyjmuje kilkadziesiąt zamówień dziennie, już nie.

Rodzaj strony Rozsądna częstotliwość
Strona firmowa, rzadko zmieniana Rozsądna częstotliwość kopia codziennie
Strona z blogiem i formularzami Rozsądna częstotliwość kopia codziennie oraz przed każdą aktualizacją
Sklep WooCommerce, portal z kontami Rozsądna częstotliwość kopia bazy co godzinę albo częściej, pliki codziennie

Niezależnie od harmonogramu rób kopię tuż przed każdą zmianą: aktualizacją, instalacją wtyczki, zmianą motywu, importem produktów czy przeniesieniem na inny serwer. To ona pozwala cofnąć nieudaną zmianę bez utraty tego, co wydarzyło się wcześniej tego dnia.

Gdzie trzymać kopie według zasady 3-2-1

Najczęstszy błąd to kopia leżąca na tym samym serwerze, co strona. Gdy serwer ulegnie awarii, konto zostanie zawieszone albo atakujący dostanie się do plików, znika strona i kopia jednocześnie. Dobrym punktem wyjścia jest zasada 3-2-1.

  • Trzy egzemplarze danych: działająca strona i co najmniej dwie kopie.
  • Dwa różne nośniki albo dwie różne usługi, na przykład kopia u hostingu i kopia w osobnej przestrzeni obiektowej.
  • Jeden egzemplarz poza miejscem, w którym działa strona, najlepiej u innego dostawcy i na koncie z innymi danymi logowania.

Czy kopie hostingu wystarczą

Kopie wykonywane przez hosting są przydatne jako dodatkowa warstwa, ale rzadko jako jedyna. Leżą w tej samej infrastrukturze, mają z góry ustaloną retencję, bywają niedostępne przy zawieszeniu konta, a odtworzenie czasem obejmuje całe konto zamiast jednej strony. Sprawdź w umowie, jak długo hosting trzyma kopie, czy obejmują bazę danych i ile trwa odtworzenie.

Szyfrowanie i ochrona przed usunięciem

Kopia zawiera wszystko, co jest na stronie, w tym dane osobowe klientów i dane dostępu z wp-config.php. Dlatego szyfruj archiwa, ogranicz dostęp do miejsca, gdzie leżą, i sprawdź, czy przechowujesz je na terenie Europejskiego Obszaru Gospodarczego, jeśli tego wymaga Twoja polityka ochrony danych. Dobrze też, gdy miejsce na kopie ma wersjonowanie albo blokadę usuwania: nawet jeśli ktoś przejmie dostęp do strony, nie skasuje historii kopii.

Kopia sklepu WooCommerce

Sklep to szczególny przypadek, bo jego baza zmienia się przez cały dzień: zamówienia, stany magazynowe, konta klientów, kupony. Odtworzenie wczorajszej kopii oznacza utratę wszystkich dzisiejszych zamówień, a klient, który zapłacił, nie znajdzie swojego zakupu. Dlatego w sklepie bazę kopiuje się znacznie częściej niż pliki, a przed każdą zmianą robi się dodatkową kopię. Przy odtwarzaniu trzeba też pamiętać o zamówieniach, które wpłynęły między kopią a awarią: ich ślad zostaje w panelu operatora płatności i w mailach z powiadomieniami, więc da się je odtworzyć ręcznie. Więcej o utrzymaniu sklepu piszemy na stronie opieka WooCommerce.

Jak długo przechowywać kopie

Retencja to czas, przez jaki trzymasz starsze kopie. Ma znaczenie przy problemach, które wychodzą z opóźnieniem. Infekcja może siedzieć na stronie tygodniami, zanim ktoś ją zauważy, a błąd w danych po imporcie produktów wychodzi dopiero przy inwentaryzacji. Jeśli trzymasz tylko siedem ostatnich kopii, może się okazać, że wszystkie zawierają już problem.

  • Minimum dla strony firmowej to około 30 dni codziennych kopii.
  • Dla sklepów i stron z danymi klientów sensowne jest 60 do 90 dni, a przy wymaganiach działu IT nawet rok.
  • Dłuższa retencja oznacza dłuższe przechowywanie danych osobowych. Zapisz ją w polityce prywatności i rejestrze czynności przetwarzania, żeby była spójna z RODO.

Jak sprawdzić, że kopia działa

Kopia, której nikt nigdy nie odtworzył, jest tylko obietnicą. Test odtworzenia rób regularnie, najlepiej co miesiąc, na osobnym środowisku, a nie na działającej stronie.

  • Pobierz ostatnią kopię z miejsca poza serwerem, tak jak zrobiłbyś to w dniu awarii.
  • Sprawdź integralność archiwum: czy się rozpakowuje i czy suma kontrolna zgadza się z zapisaną przy tworzeniu.
  • Odtwórz pliki i bazę na kopii testowej. Jeśli domena jest inna, podmień adresy poleceniem wp search-replace, które poprawnie obsługuje dane serializowane (zwykła zamiana tekstu w pliku SQL potrafi je uszkodzić).
  • Przejdź przez stronę: logowanie, formularze, kilka wpisów z obrazami, a w sklepie ostatnie zamówienia i koszyk.
  • Zmierz czas. Jeśli odtworzenie zajęło cztery godziny, tyle mniej więcej potrwa przestój w dniu prawdziwej awarii. Warto to wiedzieć wcześniej.

Ten sam proces przydaje się przy przeprowadzce strony. Opisujemy go szerzej w poradniku o przeniesieniu strony WordPress na inny serwer.

Dwa pytania, które porządkują strategię kopii

W planowaniu kopii przydają się dwa pojęcia używane przez działy IT. RPO (Recovery Point Objective) określa, z jakiego momentu najpóźniej musi pochodzić kopia, czyli ile danych możesz stracić. RTO (Recovery Time Objective) określa, jak szybko strona musi znowu działać. Kopia bazy co godzinę daje RPO równe godzinie. Test odtworzenia, który zajął dwie godziny, mówi, że realne RTO to co najmniej dwie godziny, niezależnie od tego, co zapisano w dokumentach.

Te dwie liczby warto ustalić na zimno, zanim cokolwiek się stanie. Pozwalają dobrać częstotliwość kopii, miejsce przechowywania i sposób odtwarzania do tego, ile naprawdę kosztuje Cię przestój i utracone zamówienia.

Odtworzenie w dniu awarii

Gdy strona przestaje działać po awarii serwera, nieudanej zmianie albo infekcji, trzymaj się stałej kolejności.

  • Ustal, co się stało i od kiedy. Od tego zależy, którą kopię wybrać: ostatnią przed awarią, a przy infekcji ostatnią sprzed dnia, w którym się pojawiła.
  • Zabezpiecz obecny stan, nawet uszkodzony. Mogą w nim być zamówienia i zgłoszenia, których nie ma w kopii.
  • Odtwórz pliki i bazę danych z tej samej chwili, żeby do siebie pasowały.
  • Uzupełnij dane, które powstały po kopii, na przykład zamówienia ze sklepu, porównując je z panelem płatności i skrzynką z powiadomieniami.
  • Sprawdź stronę tak jak po teście odtworzenia i dopiero wtedy wyłącz stronę konserwacji.

Jeśli strona nie działa, a nie wiesz dlaczego, zajrzyj do listy kroków na stronie nie działa strona internetowa.

Błędy, przez które kopia zawodzi

  • Kopia obejmuje tylko pliki albo tylko bazę danych.
  • Kopia leży na tym samym serwerze lub koncie, co strona.
  • Kopie przestały się wykonywać tygodnie temu, a nikt nie dostał powiadomienia.
  • Archiwum jest uszkodzone, bo wtyczka przekroczyła limit czasu PHP.
  • Retencja jest tak krótka, że wszystkie kopie zawierają już infekcję.
  • Hasło do miejsca z kopiami jest takie samo jak do hostingu.
  • Nikt nie wie, jak przeprowadzić odtworzenie, bo nigdy go nie ćwiczono.

Kopie zapasowe w opiece AdministracjaStron

W opiece kopia zapasowa WordPress powstaje automatycznie według planu, zawsze obejmuje pliki i bazę danych i jest zapisywana poza Twoim serwerem. Co miesiąc wykonujemy test odtworzenia, a jego wynik trafia do raportu miesięcznego. Odtworzenie strony z kopii robimy w ramach planu, ile razy trzeba.

  • Start (299 zł netto miesięcznie): kopie codziennie, przechowywane 30 dni.
  • Firma (599 zł netto miesięcznie): kopie codziennie, przechowywane 60 dni.
  • Biznes (1 499 zł netto miesięcznie): kopie codziennie i przed każdą zmianą, przechowywane 90 dni.
  • Enterprise (2 990 zł netto miesięcznie): kopie co godzinę dla sklepów, przechowywane 365 dni.

Pierwsza pełna kopia powstaje przy przejęciu strony i jest w cenie pierwszego miesiąca. Jak traktujemy dane z kopii i umowę powierzenia, opisujemy na stronie bezpieczeństwo i RODO, a wszystkie plany porównasz w cenniku. Chcesz wiedzieć, jak Twoja strona wypada dziś, zanim wybierzesz plan? Uruchom jednorazowy audyt WordPress.

Czytaj także

Wszystkie wpisy

Sprawdź, w jakim stanie jest Twoja strona.

Sprawdź stronę