Backup WordPressa – skrypt bash’a

#!/bin/bash #backup WordPressa if [ $# == 0 ]; then ...Nawet jeśli nasz dostawca usług hostingowych wykonuje regularny backup danych (o dziwo niektórzy nie robią) warto co jakiś czas samodzielnie wykonać kopię zapasowa danych – różne rzeczy się zdarzają, a przezorny zawsze ubezpieczony. W celu ułatwienia sobie tego zadania warto napisać prosty skrypt tworzący archiwum zawierające kopię bazy danych oraz plików. Przedstawię tutaj przykładowe rozwiązanie do backupu WordPressa.

Do wykonania kopii zapasowej bazy MySQL można użyć programu mysqldump. Wystarczy podać dane dostępowe i nazwę bazy danych, a program dokona zrzutu bazy w postaci zapytań SQL.

Odczyt danych dostępowych

Dane dostępowe do bazy przechowywane są w pliku wp-config.php, więc zamiast umieszczać je w skrypcie lub podawać ręcznie, możemy je odczytać z tego pliku. Interesują nas następujące linie:

Aby odnaleźć konkretną linię można skorzystać z programu grep. W najprostszy sposób można uzyskać informacje na temat hosta – jego nazwa jest ograniczona apostrofami i nie może ich w sobie zawierać. Zatem możemy użyć programu cut. Jeśli rozdzielimy linię na części używając apostrofu jako znaku podziału, to czwarte pole będzie zawierało potrzebną informację.

Jednak w nawie bazy danych, użytkownika lub haśle może znaleźć się apostrof. Będzie on poprzedzony znakiem wstecznego ukośnika \ który będzie znakiem ucieczki, a nie częścią interesujących nas danych – trzeba go więc usunąć. Do tych zadań można zastosować edytor strumieniowy sed (ang. Stream EDitor) a w nim odpowiednie polecenia oparte na wyrażeniach regularnych. W pierwszym kroku pozbywamy się wszystkiego od początku linii do , ' (s/^.*, '//s oznacza zastepowanie), w drugim kroku z końca linii usuwamy '); (s/');$//) na koniec zamieniamy wszystkie \' na ' (s/\\\'/'/gg oznacza globalne, wszystkie wystąpienia).

Zatem pobranie danych dostępowych do bazy danych z pliku konfiguracyjnego WordPressa i wykonanie backupu bazy MySQL wyglądać będzie następująco:

Bezpieczeństwo

Jednak jeśli inni użytkownicy mogą wyświetlać listę wszystkich procesów w systemie to uruchomienie polecenia mysqldump wraz z jawnie podanym hasłem (--password=nasze_haslo) rodzi niebezpieczeństwo jego ujawnienia. Jest na to rada. Dane dostępowe do bazy danych można zapisać w pliku konfiguracyjnym i podczas uruchomienia programu mysqldump wczytać ten plik (--defaults-file). Dla pliku warto ustawić uprawnienia umożliwiające odczyt tylko jego właścicielowi. Dodatkowo jeśli w pliku zapiszemy tylko hasło bez nazwy bazy i użytkownika, to wejście w posiadane samego pliku nie będzie wystarczające aby uzyskać dostęp do bazy.

Skrypt bash’a do backupu WordPressa

Kompletny skrypt uwzględniający wszystkie opisane powyżej aspekty będzie wyglądał następująco:

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

To prevent spam, URLs are not allowed in comments. All comments are moderated and subject to approval.
Aby zapobiec spamowi, adresy URL nie są dozwolone w komentarzach. Wszystkie komentarze są moderowane i podlegają zatwierdzeniu.