How to Backup Drupal? Overview of the Backup and Migrate Module

Jak zrobić backup Drupala? Przegląd modułu Backup and Migrate

Podczas tworzenia witryn internetowych niejednokrotnie zachodzi potrzeba szybkiego tworzenia kopii zapasowych z danymi, które nie znajdują się w repozytorium kodu. W przypadku Drupala istnieje możliwość wygenerowania kopii za pośrednictwem modułu “Backup and Migrate”.

Moduł ten oferuje opcje zarówno dla początkujących, jak i zaawansowanych użytkowników. W niniejszym artykulę przedstawię szczegółowo jego funkcjonalności.

Daty

Moduł zadebiutował pod koniec 2007 roku dla Drupala 5. Od tej pory był intensywnie aktualizowany. Gałąź 8.x-3.x pojawiła się w 2015 roku, wraz z Drupalem 8, jednakże nie doczekała się stabilnego wydania. Dopiero trzy lata później światło dzienne ujrzała stabilna wersja 8.x-4.0.

Popularność modułu

O popularności modułu świadczy liczba jego instalacji - według oficjalnych statystyk wykorzystuje go ponad 220 tys. stron, w tym ok. 40 tys. opartych o Drupal 8.

Backup and Migrate - popularity

Autorzy modułu

Za utrzymanie modułu odpowiada czterech developerów:

W repozytorium kodu znajdują się 822 commity, stworzone przez ponad 70 osób.

Do czego służy moduł

Backup and Migrate to zaawansowane narzędzie do tworzenia kopii zapasowych. Operuje zarówno na bazie danych, jak i na plikach publicznych oraz prywatnych. Integruje się z drupalowym CRON zapewniając tym samym możliwość regularnego zapisywania kopii do różnych destynacji.

Unboxing

Moduł znajduje się na stronie https://www.drupal.org/project/backup_migrate. Możesz zainstalować go z pliku.zip lub wywołać w konsoli komendę composer require drupal/backup_migrate.

Panel do administracji ustawieniami znajdziesz w menu Configuration → Development → Backup and Migrate.

Użycie modułu

Moduł zaprojektowany jest zarówno dla użytkowników początkujących, jak i zaawansowanych. Ci pierwsi nie muszą zagłębiać się w konfigurację eksportowania danych, wystarczy, że skorzystają z opcji szybkiej kopii:

Backup and Migrate - Quick copy

Kliknięcie na “Backup now” spowoduje ściągnięcie bazy danych (lub publicznych/prywatnych plików, zgodnie z wyborem dokonanym w polu “Backup Source”). Co więcej, kopia baza będzie pozbawiona cache i wpisów dziennika, dzięki czemu zajmie zdecydowanie mniej miejsca.

Nieco więcej ustawień znajduje się w zakładce “Advanced”. Opiszę ją w dalszej części artykułu.

Źródła kopii

Klikając na Settings → Sources znajdziesz się na liście dostępnych źródeł kopii zapasowej.

Backup and Migrate - Sources

Domyślnie źródłami mogą być:

  • baza danych,
  • pliki publiczne,
  • pliki prywatne,
  • cały kod stroną wraz z bazą danych.

Zestaw ten można nieco rozszerzyć o zewnętrzne bazy MySQL oraz dowolne katalogi na serwerze. Służy do tego opcja “Add Backup Source”.

Istnieje możliwość definiowania własnych źródeł za pośrednictwem API modułu Backup and Migrate.

Miejsca docelowe kopii

Celem kopii zapasowej nazywamy miejsce, w którym ma być ona umieszczona. Może to być np. katalog serwera lub pobieranie w przeglądarce internetowej. Dostępne cele znajdują się na liście Settings → Destinations.

Backup and Migrate - Destinations

Podobnie, jak w przypadku źródeł, własne cele możesz zdefiniować za pośrednictwem przycisku “Add Backup Destination” i odpowiedniego hooka. Pamiętaj, że dywersyfikując miejsce zapisu kopii, zwiększasz bezpieczeństwo swoich danych. Na końcu artykułu przedstawiłem kilka modułów dodających cele takie, jak serwer SFTP lub chmura S3.

Szyfrowanie

Pamiętaj, że kopie zapasowe zawierają wrażliwe dane i dostęp do nich powinien być ściśle ograniczony. Drupal jest jednym z najbezpieczniejszych dostępnych CMS, warto więc skorzystać z jego prywatnego systemu plików. Dodatkowo z pomocą przychodzi możliwość szyfrowania plików z kopiami. Aby z niej skorzystać, należy dodać do projektu bibliotekę Defuse za pomocą polecenia:

composer require defuse/php-encryption

Po wyczyszczeniu pamięci podręcznej w panelu konfiguracyjnym modułu pojawi się opcja “Encrypt File” z polem do wpisania hasła. Posłuży ono do szyfrowania generowanych archiwów.

Zaawansowana kopia zapasowa

Omówiłem już sposób na stworzenie szybkiej kopii zapasowej. Pora na jej nieco bardziej zaawansowaną wersję, którą znajdziesz w zakładce “Backup” → “Advanced Backup”.

Oto krótki przegląd dostępnych opcji:

  • Source - służy do wybrania zdefiniowanego wcześniej źródła.
  • Backup file - umożliwia skonfigurowanie nazwy i formatu pliku z kopią.
  • Backup encryption - włącza szyfrowanie archiwów.
  • Take site offline - wyłącza stronę na czas tworzenia kopii.
  • Exclude database tables - pozwala na wyłączenie z kopii wybranych tabel w bazie danych (lub tylko ich zawartości).
  • Exclude files - służy do ignorowania wybranych plików przy tworzeniu kopii katalogu.
  • Destination - umożliwia wybór celu kopii.

Jeśli zależy Ci na zapisaniu takiego zestawu zaawansowanych opcji na przyszłość, zainteresuj się profilami w zakładce “Settings” → “Settings profiles”.

Lista kopii

Wszystkie kopie zapasowe zapisane na serwerze znajdują się na liście “Saved Backups”.

Backup and Migrate - Saved Backups

Co ciekawe, lista ta działa również w przypadku zapisu kopii na zewnętrznych serwerach typu SFTP i S3.

Przywracanie kopii

Rzadziej potrzebną, lecz mimo to niezwykle ciekawą opcją jest przywracanie strony z kopii zapasowej. Możesz do tego celu użyć zarówno jednej z kopii z przedstawionej przed chwilą listy, jak i wgrać dowolny plik przez formularz.

Harmonogram

Ostatnią ważną funkcjonalnością modułu Backup and Migrate jest możliwość tworzenia harmonogramów kopii zapasowej.

Backup and Migrate - Scheduling

Mamy tu wszystko, czego trzeba do zbudowania sprawnie działającego mechanizmu backupu. Działania te wykonywane są za pośrednictwem drupalowych funkcjonalności CRON. Niepotrzebna jest więc dodatkowa konfiguracja serwera.

Hooki i integracje

Backup and Migrate udostępnia jeden bazowy hook hook_backup_migrate_service_object_alter(), pozwalający na zmianę praktycznie całego silnika modułu. To tutaj definiowane są dodatkowe pluginy i filtry. Możesz zdefiniować następujące elementy:

  • Źródła kopii zapasowych - domyślnie jest to baza danych, pliki publiczne/prywatne i cała strona wraz z kodem źródłowym.
  • Destynacje kopii zapasowych - jak chociażby przechowywanie w chmurze bądź w lokalnym katalogu.
  • Filtry modyfikujące generowane archiwa - jak np. szyfrowanie.

Na bazie powyższego mechanizmu stworzono wiele modułów pomocniczych oferujących integrację z zewnętrznymi dostawcami przestrzeni dyskowej. Niestety w większości działają one wyłącznie pod kontrolą Drupal 7. Są to m.in.:

Podsumowanie

W obliczu nowych technologii moduł Backup and Migrate jest czasem uznawany za zbędny. Muszę jednak przyznać, że w naszej agencji drupalowej z niego korzystamy. Umożliwia on bowiem najprostszy sposób na pobranie bazy danych i plików ze strony opartej właśnie o Drupala. Jest łatwy w konfiguracji i działa praktycznie “od ręki”.

W przypadku mniejszych stron moduł może być przydatny jako uzupełnienie standardowego backupu. Zwłaszcza, gdy kod znajduje się na współdzielonym serwerze, na którym nie masz pełnej kontroli nad systemem.

Najlepsze praktyki