Backup bazy danych WordPress przez WP-CLI — szybka automatyzacja

Backup bazy danych WordPress przez WP-CLI — szybka automatyzacja

Większość pluginów do backupu w WordPressie działa przez przeglądarkę, co przy dużych bazach oznacza timeouty i problemy z limitami PHP. Jeśli masz dostęp SSH do serwera, backup bazy danych WordPress przez WP-CLI to znacznie szybsza i bardziej niezawodna metoda. Raz ustawiony skrypt w cronie działa bez nadzoru i nie obciąża przeglądarki ani sesji PHP.

Podstawowa komenda do eksportu bazy danych.

WP-CLI oferuje polecenie wp db export, które wywołuje mysqldump i zapisuje plik SQL. Podstawowe użycie wygląda tak:

wp db export backup.sql

Komenda ta zapisze całą bazę danych do pliku backup.sql w bieżącym katalogu. Jeśli nie podasz nazwy pliku, WP-CLI wygeneruje nazwę z timestampem, np. twoja_baza-2025-01-15-1234567.sql. Możesz też wskazać pełną ścieżkę:

wp db export /home/user/backups/backup-$(date +%Y%m%d).sql

To doda aktualną datę do nazwy pliku, co ułatwia rozpoznanie wersji kopii zapasowej bez otwierania pliku.

Kompresja i opcje zaawansowane

Bez kompresji duże bazy (kilkaset MB lub więcej) generują ogromne pliki. WP-CLI pozwala od razu skompresować zrzut przez dodanie --gzip:

wp db export backup.sql.gz --gzip

Plik zostanie spakowany gzipem, co zazwyczaj zredukuje jej rozmiar nawet o 80-90%. Możesz też wskazać konkretne tabele do eksportu (przydatne, gdy chcesz pominąć logi lub cache):

wp db export backup.sql --tables=wp_posts,wp_postmeta,wp_users

Lub odwrotnie — wykluczyć konkretne tabele:

wp db export backup.sql --exclude_tables=wp_statistics_visitor,wp_wfHits

Flagę --exclude_tables często stosuję do pomijania tabel pluginów statystyk lub cache’ujących, które potrafią ważyć wiele MB, a nie zawierają kluczowych dla działania strony treści.

Kolejna przydatna opcja to --add-drop-table, która dodaje DROP TABLE IF EXISTS przed każdym CREATE TABLE w pliku SQL. Dzięki temu restore nadpisze stare tabele zamiast wyrzucić błąd, jeśli już istnieją:

wp db export backup.sql --add-drop-table

Automatyzacja backupu w cronie.

Ręczne wywoływanie komendy ma sens przy migracji lub jednorazowym zadaniu, ale dopiero automatyzacja pokaże Ci na co stać WP-CLI. Możesz dodać backup bazy danych do crontaba serwera, żeby wykonywał się codziennie o określonej godzinie.

Otwórz crontab użytkownika (tego samego, co właściciel plików WordPressa):

crontab -e

I dodaj linię (przykład dla backupu codziennie o 2:00 w nocy):

0 2 * * * cd /var/www/html/twoja-strona && /usr/local/bin/wp db export /home/user/backups/db-$(date +\%Y\%m\%d-\%H\%M).sql.gz --gzip --path=/var/www/html/twoja-strona >> /var/log/wp-backup.log 2>&1

Kilka uwag:

  • cd /var/www/html/twoja-strona — przejście do katalogu instalacji WordPress, żeby WP-CLI znalazł wp-config.php
  • /usr/local/bin/wp — pełna ścieżka do WP-CLI (znajdź ją przez which wp)
  • --path=/var/www/html/twoja-strona — jawne wskazanie ścieżki WordPress (opcjonalne, jeśli robisz cd)
  • $(date +\%Y\%m\%d-\%H\%M) — procenty muszą być escapeowane w cronie podwójnym backslashem
  • >> /var/log/wp-backup.log 2>&1 — przekierowanie wyjścia do loga, żeby móc sprawdzić błędy

Po kilku dniach masz serię plików db-20250115-0200.sql.gz, db-20250116-0200.sql.gz itd. w katalogu backupów.

Rotacja starych backupów

Bez rotacji katalog backupów szybko zapcha cały dysk Twojego serwera. Dodaj drugą linię do crona, która usuwa pliki starsze niż 7 dni:

30 2 * * * find /home/user/backups/ -name "db-*.sql.gz" -mtime +7 -delete

Ta komenda uruchomi się pół godziny po backupie i wyczyści pliki sprzed tygodnia. Możesz dostosować -mtime +7 do swoich potrzeb (np. +30 dla miesięcznego przechowywania).

Podsumowanie

Backup bazy danych WordPress przez WP-CLI jest szybszy i bardziej niezawodny niż pluginy webowe, zwłaszcza przy dużych witrynach. Podstawowa komenda wp db export z opcją --gzip zmieści się w jednej linii crona i da Ci automatyczne, codzienne kopie zapasowe bez wysiłku. Pamiętaj tylko o rotacji starych plików i regularnym sprawdzaniu logów — nawet najlepszy backup jest bezwartościowy, jeśli odkryjesz po 3 miesiącach, że się nie wykonywał.

Najczęściej zadawane pytania

Czy backup przez WP-CLI jest bezpieczniejszy niż pluginy do backupu?

WP-CLI działa na poziomie serwera i nie ma limitów czasu wykonania PHP ani problemów z uprawnieniami przeglądarki. Backup nie pojawia się w katalogu dostępnym przez web, więc nie ma ryzyka wycieku przez nieprawidłowo skonfigurowany plugin. Warto jednak zabezpieczyć katalog backupów przed dostępem SSH innych użytkowników.

Jak przywrócić bazę danych z pliku wygenerowanego przez WP-CLI?

Użyj komendy wp db import backup.sql (lub backup.sql.gz — WP-CLI automatycznie rozpakuje gzip). Upewnij się, że jesteś w katalogu WordPress i że plik backup zawiera polecenia DROP TABLE, jeśli chcesz nadpisać istniejące dane. Przed importem zrób zawsze backup aktualnej bazy na wypadek błędu.

Czy mogę robić backup bazy danych WordPress bez dostępu SSH?

Bez SSH nie użyjesz WP-CLI. W takim przypadku musisz skorzystać z pluginu (np. UpdraftPlus, BackWPup) lub ręcznego eksportu przez phpMyAdmin. Niektóre hostingi oferują crony webowe (wget/curl do endpointu), ale to wolniejsze i mniej niezawodne rozwiązanie niż WP-CLI na prawdziwym cronie systemowym.

Potrzebujesz pomocy ze swoją stroną?

Sprawdź ofertę wsparcia swojej strony w wygodnej subskrypcji.

Sprawdź ofertę

Pełną ofertę moich usług znajdziesz na stronie www.zakoduje.com.pl

ź