Dopóki backup działa, nikt o nim nie myśli. Problem zaczyna się w dniu, kiedy strona pada – po nieudanej aktualizacji, włamaniu albo migracji na inny hosting – a Ty klikasz przycisk Przywróć i widzisz komunikat o błędzie. Albo gorzej: okazuje się, że UpdraftPlus od trzech miesięcy cicho pomijał bazę danych i masz tylko pliki. W praktyce około 90% stron WordPress ma backup, który tylko wygląda na działający. Ten przewodnik to zbiór realnych problemów, które spotykają nas w pracy agencyjnej – od wygasłych tokenów Google Drive po korupcję serialized data przy restore. Zanim coś padnie, warto wiedzieć, gdzie najczęściej pęka łańcuch.
Krótka odpowiedź
Najczęstsze problemy z backupem WordPress to: brak miejsca na dysku (UpdraftPlus przerywa w połowie), PHP timeout na dużych stronach (>1 GB), wygasły OAuth do Google Drive lub Dropbox, backup bez bazy danych (zaznaczony tylko wp-content), błędy serializacji przy restore oraz backup zainfekowany razem ze stroną. Rozwiązanie: stosuj regułę 3-2-1 (3 kopie, 2 nośniki, 1 offsite), testuj restore raz w miesiącu na staging i łącz backup hostingu (np.
CyberFolks daily w cenie) z pluginem (UpdraftPlus Premium lub Duplicator Pro).
Usługi KC Mobile
Sprawdź naszą ofertę
Potrzebujesz pomocy specjalisty? Skorzystaj z naszych usług i rozwiń swój biznes online.
Backup WordPress 2026 – dlaczego 90% stron nie ma działającego backupu
Zainstalowany plugin to nie jest backup. To dopiero intencja backupu. Różnica wychodzi dopiero w dniu, kiedy trzeba coś przywrócić – i wtedy zaczynają się niespodzianki.
W naszej praktyce agencyjnej, kiedy klient trafia do nas po awarii, scenariusz wygląda najczęściej tak: UpdraftPlus pokazuje zielone Ostatni backup: wczoraj, ale archiwum ma 200 kB zamiast kilkuset MB. Albo paczka jest kompletna, ale nie ma w niej bazy danych. Albo backup siedzi na serwerze w tym samym katalogu co strona – i po włamaniu zaszyfrowały go te same boty, które zaszyfrowały resztę.
Dlaczego to się dzieje tak często:
- Backup nie jest nigdy testowany – plugin mówi sukces, więc zakładamy, że faktycznie sukces
- Przechowywanie tylko lokalnie, w `/wp-content/updraft/` – czyli tam, gdzie pierwsze padnie przy problemach z serwerem
- Domyślne ustawienia pluginów zapisują tylko pliki, bez bazy danych (albo odwrotnie)
- Brak monitoringu – nikt nie dostaje maila, kiedy backup nie wykonał się 3 dni z rzędu
- Zaufanie do jednego źródła, bez dublowania (tylko plugin albo tylko hosting)
To prowadzi do fałszywego poczucia bezpieczeństwa – największego wroga w dyskusji o danych. Jeśli nie widziałeś na własne oczy, jak Twój backup działa w praktyce, zakładaj, że nie działa. Więcej o prewencji w problemy z aktualizacjami WordPress – połowa awarii zaczyna się od rutynowego update'u. Warto też zajrzeć do problemy z wydajnością WordPress, bo powolny serwer to pierwszy sygnał, że z backupami też może być krucho.
UpdraftPlus nie robi backupu – 6 najczęstszych przyczyn
UpdraftPlus to najpopularniejszy plugin backupowy w Polsce – i jednocześnie źródło największej liczby zgłoszeń backup mi nie działa. W 95% przypadków przyczyna sprowadza się do jednej z sześciu rzeczy.
1. Brak miejsca na dysku serwera. Backup tworzy się w `/wp-content/updraft/` zanim pójdzie w cloud. Jeśli hosting ma 10 GB, a strona waży 4 GB, plugin nie skończy archiwizacji. Sprawdź w CloudPanel lub cPanel, ile miejsca zostało wolnego.
2. PHP timeout (`max_execution_time`). Domyślnie serwery dają 30-60 sekund na wykonanie skryptu. Backup 2 GB strony nie zmieści się w tym oknie. Rozwiązanie: zwiększ limit do 300 s w `php.ini` albo włącz w UpdraftPlus opcję Split archives every i ustaw 100-200 MB na paczkę.
3. Permissions na katalogu `/updraft/`. Jeśli folder nie ma praw 755 albo właściciela zgodnego z użytkownikiem PHP, plugin nie zapisze pliku. Diagnoza: `ls -la wp-content/updraft/`.
4. Zablokowany folder przez security plugin. Wordfence, iThemes Security, Solid Security czasem blokują zapis do `/backups/` uznając to za próbę malware'u. Sprawdź logi pluginu bezpieczeństwa.
5. Memory limit (`memory_limit`). Przy backupie bazy danych WordPress ładuje wiele rekordów do pamięci. 128 MB często nie wystarcza – ustaw 512 MB w `wp-config.php`: `define('WP_MEMORY_LIMIT', '512M');`.
6. Konflikt z innym pluginem backupowym. Dwa pluginy backupowe naraz potrafią się wzajemnie zablokować. Wybierz jeden i drugi wyłącz.
Jeśli UpdraftPlus nadal pada, włącz tryb debug w Ustawienia → UpdraftPlus → Expert Settings i sprawdź `/wp-content/updraft/log.*.txt` – tam widać, gdzie dokładnie skrypt się zatrzymał. Głębsze przyczyny problemów PHP opisaliśmy w problemy z hostingiem WordPress.
Potrzebujesz profesjonalnej strony WordPress?
Tworzymy strony WordPress, które są szybkie, bezpieczne i zoptymalizowane pod SEO. Od 3000 zł.
Backup się robi ale nie zapisuje do cloud – OAuth, API, permissions
To jest zdradliwy scenariusz: plugin raportuje sukces, archiwum siedzi w `/wp-content/updraft/`, ale do Google Drive nie leci już od dwóch miesięcy. Pierwszy sygnał, że coś jest nie tak, dostajesz w dniu, kiedy serwer pada i okazuje się, że cloud jest pusty.
Google Drive – wygasły OAuth token. Google co jakiś czas wymaga ponownej autoryzacji. Kiedy token wygasa, UpdraftPlus pisze w logu Authentication failed, ale e-maila o tym nie dostajesz, jeśli nie włączyłeś powiadomień. Rozwiązanie: Ustawienia → UpdraftPlus → Settings → Google Drive → kliknij Reauthenticate.
Dropbox API – przekroczony limit. Dropbox free to 2 GB, kiedy zapełni się w 100%, nowe pliki nie lecą. Dodatkowo Dropbox API ma limit zapytań – przy dużej częstotliwości backupu plugin dostaje `429 Too Many Requests`.
Amazon S3 / S3-compatible – bucket permissions. Niewłaściwa polityka IAM albo bucket ustawiony jako private bez właściwego klucza powoduje błąd `403 Forbidden`. Test w konsoli AWS CLI: `aws s3 cp test.txt s3://twoj-bucket/` – jeśli działa z CLI, ustawienia w pluginie są złe.
OneDrive, pCloud, Backblaze B2 – te same klasy problemów co wyżej. Backblaze B2 jest tańsze (~$6/TB/mies) i popularne w 2026.
Checklista diagnostyczna:
1. Sprawdź datę ostatniego pliku w cloud – czy zgadza się z ostatnim sukcesem w panelu pluginu
2. Przeczytaj `/wp-content/updraft/log.*.txt` – szukaj słów `auth`, `403`, `401`, `timeout`
3. Wykonaj ręczny backup (przycisk Backup Now) i patrz na progres na żywo
4. Jeśli wysyłka pada w 50% – to limit cloudu; jeśli na starcie – to auth
Na co zwrócić uwagę: ustaw w UpdraftPlus mailowe powiadomienia o błędach (Settings → Reporting). Bez tego o awarii dowiesz się dopiero, gdy strona padnie. Problem cloudu często zahacza też o problemy z SSL i certyfikatami – wygasły certyfikat na endpointach API potrafi wywalić cały transfer.
Przywracanie z backupu – błędy po restore i serialized data
Kliknąłem Restore, coś trwało pół godziny, a teraz strona pokazuje biały ekran albo błąd bazy." Znane? Przywracanie z backupu to osobny problem – bardzo często paczka jest w porządku, ale proces restore źle ją rozpakowuje.
Najczęstsze błędy przy restore:
- Error establishing a database connection – zwykle zła nazwa bazy, usera albo hasła w `wp-config.php` po restore. Backup zapisał `wp-config.php` ze starego serwera, a na nowym dane dostępowe są inne. Rozwiązanie: zaktualizuj `DB_NAME`, `DB_USER`, `DB_PASSWORD`, `DB_HOST` w `wp-config.php`.
- Biały ekran (White Screen of Death) – zwykle PHP fatal error. Włącz `WP_DEBUG` w `wp-config.php` i zobacz prawdziwy komunikat.
- Błąd serialized data – WordPress trzyma wiele danych (widgety, ustawienia motywu) jako serialized PHP objects. Zwykły find & replace stringów w bazie (na przykład przy zmianie domeny) psuje długości stringów w serializacji. Rozwiązanie: użyj narzędzia `WP-CLI search-replace` lub Better Search Replace, które rozumieją serialized data.
- Nieaktualne URL-e – po przywróceniu kopii na staging widzisz linki do domeny produkcyjnej. Naprawa: `wp search-replace 'https://stara.pl' 'https://staging.stara.pl' --all-tables`.
- 404 na wszystkich podstronach poza homepage – brak `.htaccess` albo nieaktualne permalinks. Wejdź w Ustawienia → Bezpośrednie odnośniki i kliknij Zapisz.
Złoty standard restore:
1. Zawsze przywracaj na staging, nigdy bezpośrednio na produkcję
2. Zrób backup aktualnego złego stanu przed restorem – czasem trzeba wrócić
3. Po restorze sprawdź stronę jako zalogowany i niezalogowany, na desktop i mobile
4. Sprawdź, czy cron WordPress działa (wp-cron)
5. Przetestuj kluczowe funkcje: checkout w sklepie, formularz kontaktowy, logowanie
Więcej o specyficznych błędach bazy w problemy z bazy danych WordPress – większość tam opisanych procedur stosuje się też po restore. Jeśli po restore widzisz biały ekran śmierci, zacznij od włączenia `WP_DEBUG` – pełną procedurę opisaliśmy w problemy z pluginami WordPress.
Duplicator Pro – najczęstsze problemy przy instalacji paczki
Duplicator Pro to ulubione narzędzie agencji do migracji stron i przenoszenia między hostingami. Jednocześnie potrafi zrobić sporo problemów na dużych stronach.
PHP version mismatch. Duplicator generuje paczkę pod konkretną wersję PHP. Jeśli eksportujesz ze strony na PHP 8.2, a importujesz na hosting z PHP 7.4, instaler może się wywalić przy rozpakowywaniu. Sprawdź wersje przed migracją – w 2026 standardem jest PHP 8.2-8.3.
Duże strony (>2 GB). Na darmowym Duplicatorze limit to ~500 MB i skrypt timeout'uje. Duplicator Pro obsługuje multi-part archives, ale wymaga konfiguracji `Max Chunk Size` w ustawieniach. Dla stron >5 GB lepiej rozważyć backup przez WP-CLI lub rsync.
Błędy przy rozpakowywaniu na targecie. Najczęstsze:
- `ZipArchive not found` – PHP bez rozszerzenia ZIP, skontaktuj się z hostingiem
- `Max execution time exceeded` – zwiększ `max_execution_time` do 600 s
- `MySQL server has gone away` – zwiększ `max_allowed_packet` w MySQL do 256 MB
- `Out of memory` – zwiększ `memory_limit` w PHP do 512 MB
Hasła i klucze bezpieczeństwa. Duplicator generuje nowe salt keys w `wp-config.php` na targecie – to dobra praktyka, ale oznacza, że wszyscy zalogowani użytkownicy zostaną wylogowani. Poinformuj klienta przed migracją.
Pliki >100 MB w wp-content. Duplicator domyślnie pomija duże pliki. Jeśli masz wideo albo PDF-y 500 MB, zaznacz je w Large files albo przenoś osobno przez FTP/SFTP.
Dla migracji między hostingami warto też przeczytać problemy z migracją WordPress – tam szczegóły dotyczące DNS, SSL i propagacji. Jeśli Twoja strona pada na błąd 503 Service Unavailable, nie próbuj robić backupu na żywej witrynie – najpierw naprawa, potem kopia.
Backup tylko plików bez bazy danych – co właściwie tracisz
Jeden z najczęstszych i najbardziej bolesnych błędów: backup ma wp-content, ma motyw, ma pluginy, ale nie ma `.sql`. Klient mówi: mam kopię, a my patrzymy na paczkę i widzimy, że brakuje 90% wartości.
Co faktycznie siedzi tylko w bazie danych WordPress:
- Posty i strony (`wp_posts`) – cała treść, wszystkie wersje robocze, menu, produkty WooCommerce
- Ustawienia witryny (`wp_options`) – nazwa, adres, wszystkie ustawienia pluginów i motywu
- Użytkownicy i ich hasła (`wp_users`, `wp_usermeta`) – konta, role, capabilities
- Komentarze (`wp_comments`) – jeśli masz aktywną społeczność, to często największa wartość
- Metadane postów (`wp_postmeta`) – custom fields, ACF, dane SEO z Yoast/Rank Math
- Kategorie i tagi (`wp_terms`, `wp_term_relationships`) – cała taksonomia
- Zamówienia WooCommerce (`wp_wc_orders` w HPOS albo `wp_posts` w classic) – historia sprzedaży
- Transients i cron – tymczasowe dane, których faktycznie nie potrzebujesz z kopii
Backup tylko plików to jest zasadniczo backup motywu i pluginów. Treść, użytkowników, zamówienia – wszystko tracisz. Na sklepie WooCommerce z historią zamówień to oznacza, że po awarii wracasz do jak nowy.
Jak to zweryfikować:
1. Rozpakuj paczkę backupową lokalnie
2. Szukaj pliku `.sql` albo `.sql.gz` – jeśli nie ma, masz backup tylko plików
3. W UpdraftPlus sprawdź zakładkę Existing backups – każda paczka ma listę komponentów (Database, Plugins, Themes, Uploads, Others). Wszystkie pięć powinno być zielone.
Domyślne ustawienia większości pluginów backupują wszystko, ale po pierwszej konfiguracji warto zajrzeć i potwierdzić. Na stronach e-commerce (zobacz problemy z WooCommerce) backup bazy jest absolutnie krytyczny – każda godzina bez bazy to tracone zamówienia. Zajrzyj też do problemy z płatnościami online – tam wyjaśniamy, dlaczego restore bazy sklepu wymaga dodatkowej weryfikacji transakcji.
Manual backup przez FTP + phpMyAdmin – kiedy jest konieczny
Pluginy backupowe to 80% przypadków. Pozostałe 20% – migracje dużych sklepów, strony z wyłączonym PHP exec, hostingi bez cron jobs – wymagają ręcznego backupu. Nie jest to skomplikowane, ale trzeba wiedzieć co robić.
Kiedy zamiast pluginu użyć manual backup:
- Strona >5 GB – pluginy często padają przy takich rozmiarach
- Migracja między hostingami z różnymi wersjami PHP/MySQL
- Full control nad procesem – backup zdejmujesz przed krytyczną operacją
- Strona kompletnie padła i nie ma dostępu do WP admin
- Hosting blokuje wykonywanie długich skryptów PHP
Backup plików przez SFTP (rsync/FileZilla):
Cała magia WordPressa siedzi w `/wp-content/`. Pliki z katalogu głównego (`wp-admin`, `wp-includes`) możesz w razie czego pobrać z WordPress.org.
# Przez rsync z lokalnej maszyny
rsync -avz -e ssh user@serwer:/sciezka/do/wp-content/ ./backup-wp-content/Backup bazy przez phpMyAdmin:
1. Zaloguj się do phpMyAdmin (panel hostingu)
2. Wybierz bazę WordPressa z lewej listy
3. Kliknij zakładkę Eksport
4. Format: SQL, metoda: Szybki (Quick) lub Własny dla dużych baz
5. Zaznacz Add DROP TABLE jeśli backup ma nadpisywać istniejącą bazę
6. Pobierz plik `.sql` (dla baz >200 MB warto skompresować przez gzip)
Backup bazy przez SSH (większe bazy):
mysqldump -u user -p nazwa_bazy | gzip > backup-$(date +%Y%m%d).sql.gzMetoda SSH jest o 10-20x szybsza niż phpMyAdmin na dużych bazach i nie ma ryzyka timeout browsera.
Restore:
- Pliki: wgraj przez SFTP do docelowego katalogu
- Baza: w phpMyAdmin zakładka Import → wybierz plik `.sql`; dla dużych baz `mysql -u user -p baza < backup.sql` przez SSH
Metoda ręczna jest niewygodna do regularnego użytku, ale absolutnie niezawodna – nie polega na żadnym pluginie, który może się zepsuć.
Backup strategy – reguła 3-2-1 dla WordPress
Branża IT wypracowała tę regułę kilkadziesiąt lat temu i nadal jest złotym standardem. Dla WordPressa wygląda to tak:
3 – Trzy kopie danych. Jedna to oryginał (działająca strona), dwie to kopie zapasowe. Jedna kopia to za mało, bo może paść razem z serwerem. Trzecia to ubezpieczenie na wypadek, gdyby druga okazała się uszkodzona.
2 – Dwa różne nośniki. Nie wszystkie kopie na tym samym dysku. W praktyce WordPress: backup lokalny na serwerze (szybki restore) plus backup w cloud (niezależny od serwera).
1 – Jedna kopia offsite. Fizycznie odseparowana od serwera produkcyjnego. Jeśli serwer padnie, ta kopia żyje.
| Warstwa | Narzędzie | Częstotliwość | Retention |
|---|---|---|---|
| Snapshot hostingu | CyberFolks, LH.pl, Zenbox | Codziennie | 7-14 dni |
| Plugin backup (cloud) | UpdraftPlus Premium → Google Drive/S3 | Codziennie (baza), tygodniowo (pliki) | 30-60 dni |
| Manual full backup | SFTP + mysqldump | Co miesiąc | 6-12 miesięcy |
Dla sklepów e-commerce dodajemy czwartą warstwę – backup bazy co godzinę. Stracić godzinę zamówień to mniej bolesne niż stracić cały dzień. Plugin WP Time Capsule robi incremental backup co kilka minut i jest tańszy od godzinnego UpdraftPlus.
Offsite oznacza: inna lokalizacja fizyczna albo przynajmniej inne konto u innego dostawcy. Backup na tym samym serwerze w katalogu `/backups/` to nie jest offsite – po włamaniu backup szyfruje się razem ze stroną.
Test restore. Reguła 3-2-1 bez regularnego testowania restore to złudzenie. Raz w miesiącu wybierz losowy backup i przywróć go na staging. Jeśli się nie udaje – wiesz o tym w spokojny dzień, a nie podczas awarii.
Ten schemat kosztuje ~30-50 zł miesięcznie na niewielką stronę (hosting z daily backup + UpdraftPlus Premium za $70/rok). Dla sklepu rozliczaj to w kontekście ryzyka: ile kosztuje godzina przestoju?
Przywracanie po włamaniu – backup a malware
Scenariusz: strona zainfekowana, pluginy Wordfence alarmują, klienci widzą redirect na podejrzane URL-e. Pierwszy odruch: przywróćmy backup sprzed tygodnia. I tu pojawia się pytanie, o którym rzadko się myśli – czy backup sprzed tygodnia też już był zainfekowany?
Malware często siedzi w stronie miesiącami zanim da znać. Skaner wykrywa go dopiero, kiedy zaczyna działać agresywnie (redirecty, injection). Backup sprzed 7 dni może zawierać te same złośliwe pliki, tylko nieaktywne. Restore = powrót do zainfekowanego stanu.
Co zrobić przed przywróceniem backupu:
1. Data zero dnia infekcji. Sprawdź logi hostingu, GSC (alerty Security Issues), daty modyfikacji plików. Zwykle widać, kiedy malware wszedł.
2. Wybór backupu sprzed infekcji. Jeśli znasz datę infekcji, wybierz backup z dnia wcześniej. Retention 30-60 dni się wtedy opłaca.
3. File integrity check. Po wybraniu backupu rozpakuj go lokalnie i przeskanuj: Wordfence CLI, Sucuri SiteCheck, albo zwyczajne porównanie z czystą instalacją WordPress (`wp core verify-checksums`).
4. Porównanie hashy. `wp core verify-checksums --allow-root` porównuje pliki rdzenia z oficjalnymi sumami kontrolnymi. To samo dla pluginów: `wp plugin verify-checksums --all`.
5. Backup bazy też skanuj. Malware potrafi injectować JavaScript do `wp_options` (pole `siteurl`, `home`) albo do treści postów. Przejrzyj eksport bazy pod kątem `eval(`, `base64_decode(`, `