Jak prawidłowo robić kopie bezpieczeństwa strony

Backup

Robisz regularnie kopie bezpieczeństwa swojej strony? Jeśli nie, to niezwłocznie zacznij. Jeśli tak, to świetnie – ale czy na pewno robisz je prawidłowo? Czy w razie problemów zawsze będziesz w stanie w miarę szybko odtworzyć swoją stronę?

Postanowiłem zebrać kilka porad, z których warto korzystać przy tworzeniu kopii bezpieczeństwa naszych stron.

Nie ufaj firmie hostingowej

Każda szanująca się firma hostingowa robi kopie bezpieczeństwa stron swoich klientów. Różne firmy robią to z różną częstotliwością (niektóre nawet co kilka godzin) i przechowują różną liczbę ostatnich backupów. Zanim wybierzemy usługodawcę, koniecznie powinniśmy zorientować się jak często robi on kopie bezpieczeństwa oraz gdzie i jak długo są one przechowywane. Jeśli backup jest robiony „co jakiś czas” i przechowywany na tym samym serwerze, na którym działa nasza strona, to powinniśmy czym prędzej rozejrzeć się za inną firmą hostingową.

Niezależnie jednak od tego, jak świetnie wygląda pod tym kątem oferta wybranej przez nas firmy, absolutnie nie powinniśmy opierać się tylko i wyłącznie na tej jednej kopii bezpieczeństwa. Prawdopodobnie w razie problemów usługodawca będzie w stanie w ciągu kilkunastu minut odtworzyć naszą stronę z backupu. Co jednak jeśli w wyniku awarii kopia ulegnie uszkodzeniu lub całkowitemu zniszczeniu?

Dlatego dobrze jest mieć ograniczone zaufanie do oferowanego przez firmę hostingową mechanizmu tworzenia kopii bezpieczeństwa i zadbać o to we własnym zakresie.

Wybierz odpowiednie narzędzie

Wtyczek dla WordPressa do tworzenia kopii bezpieczeństwa jest sporo. Ja najczęściej korzystam z BackWPup, ale wybór każdego innego (w miarę popularnego) rozszerzenia będzie równie dobry.

Wybierając narzędzie warto zapoznać się z opiniami na jego temat – głównie tymi negatywnymi, tak aby wiedzieć, z jakimi problemami najczęściej zmagają się jego użytkownicy. Zwykle większość problemów jest związana tak naprawdę z konfiguracją serwera – proces tworzenia kopii bezpieczeństwa pochłania sporą ilość zasobów (szczególnie w przypadku dużych serwisów) i czasem trzeba poświęcić chwilę na odpowiednią konfigurację wtyczki lub poprosić firmę hostingową o pomoc w znalezieniu przyczyn problemów. Różne wtyczki różnie sobie radzą z ograniczeniami serwerów – jeśli jedna nie działa poprawnie na naszej stronie, to warto mimo wszystko wypróbować inne.

Niektóre wtyczki (na przykład BackupBuddy czy płatna wersja BackWPup) potrafią robić tak zwane kopie przyrostowe, czyli zawierające tylko nowe i zmodyfikowane pliki. Pozwala to zaoszczędzić mnóstwo miejsca (szczególnie przy dużych stronach) i w pewnych przypadkach wydane na wtyczkę pieniądze mogą się dość szybko zwrócić.

Możemy też skorzystać z narzędzi do tworzenia kopii działających na serwerze, takich jak na przykład duplicity. Jeśli nasza strona działa na VPSie lub serwerze dedykowanym, to będzie to naturalny wybór. Jeśli jednak korzystamy z serwera współdzielonego, to najprawdopodobniej nie będziemy nawet w stanie zainstalować takiego narzędzia.

Wybierz miejsce przechowywania kopii

Oczywiście trzymanie kopii bezpieczeństwa na tym samym serwerze, na którym działa nasza strona, nie ma większego sensu, chociaż czasem może się okazac wystarczające – na przykład jeśli chcemy odtworzyć zainfekowaną stronę. Złośliwe skrypty zwykle nie dotykają archiwów (plików .zip czy .gz), tak więc przechowywana w ten sposób kopia nie będzie nie powinna być (komentarz) zainfekowana.

Trzeba jednak zawsze zwrócić uwagę na to, czy pliki zawierające backup naszej strony są odpowiednio zabezpieczone przed dostępem z zewnątrz. Większość narzędzi do tworzenia kopii oferuje tego typu zabezpieczenia. Na przykład wspomniana już wtyczka BackWPup posiada opcję, która automatycznie tworzy plik .htaccess blokujący dostęp do zawartości katalogu z backupami (który i tak ma trudną do odgadnięcia nazwę). Jednak jeśli to możliwe, warto przenieść ten katalog poza katalog public_html, tak aby znajdował się na serwerze w miejscu całkowicie niedostępnym z zewnątrz.

Praktycznie wszystkie wtyczki do tworzenia kopii bezpieczeństwa umożliwiają automatyczne wysyłanie ich gdzieś poza nasz serwer i z tej możliwości zdecydowanie powinniśmy korzystać.

Wybór miejsca, w którym będą magazynowane nasze kopie, zależy głównie od naszych osobistych preferencji. Najpopularniejszymi usługami, które można wykorzystać do tego celu, są Dropbox, Google Drive, Microsoft OneDrive czy Amazon S3. W praktyce najkorzystniejszą cenę ma usługa Amazonu (szczególnie jeśli nasze kopie są duże), ale jest też najtrudniejsza w konfiguracji.

Ja do przechowywania kopii korzystam z Dropboksa (dla mniejszych projektów) i Amazon S3. Dodatkowo co jakiś czas pobieram kopie na dysk swojego komputera – tak na wszelki wypadek.

Dropbox oferuje darmowe 2 GB miejsca na nasze pliki oraz kosztującą 99 euro rocznie wersję Pro, w ramach której otrzymujemy 1 TB miejsca (to wystarczy nawet do bardziej zaawansowanych zastosowań).

Cennik usługi Amazon S3 jest dość skomplikowany i trudno jest wyliczyć dokładną kwotę, jaką przyjdzie nam zapłacić na koniec miesiąca. Zaletą jest natomiast to, że płacimy tylko za miejsce, które wykorzystujemy. Ja w tej chwili w usłudze S3 przechowuję nieco ponad 70 GB danych (cały czas ich przybywa), a za ubiegły miesiąc otrzymałem rachunek w wysokości $1.20 (czyli około 4,60 zł). To naprawdę dobra cena.

Ustal częstotliwość wykonywania i okres przechowywania kopii

Jeśli robimy backup codziennie, ale przechowujemy tylko kilka ostatnich kopii, to robimy to źle. Co jeśli nagle zajdzie potrzeba odzyskania zdjęcia, które usunęliśmy miesiąc temu? Co gdy dopiero po tygodniu zauważymy, że nasza strona została zainfekowana, a ostatnia „czysta” kopia już dawno została usunięta?

Częstotliwość wykonywania kopii bezpieczeństwa powinniśmy ustalać indywidualnie dla każdej strony. Jeśli mamy stronę firmową, która zmienia się stosunkowo rzadko (na przykład raz na miesiąc), to nie ma sensu robić jej kopii codziennie. Z kolei gdy prowadzimy sklep z dużą liczbą zamówień, to backup bazy danych wypadałoby robić co najmniej raz na dobę, a nawet częściej.

Najwięcej miejsca na dysku serwera zajmują zwykle pliki multimedialne (zdjęcia, pliki audio i wideo) oraz dokumenty. Z kolei kopia bazy danych, która ma postać zwykłego pliku tekstowego, jest zwykle niewielka. Dlatego też w przypadku większych serwisów możemy tworzyć kilka kopii bezpieczeństwa z różną zawartością, co przyśpieszy nieco cały proces i pozwoli zaoszczędzić trochę miejsca, ale jednocześnie wciąż będzie zabezpieczać nas przed skutkami awarii.

Przykładowo, raz dziennie możemy wykonywać kopię bazy danych, plików motywu i naszych własnych wtyczek (takich, których nie możemy pobrać z zewnętrznego źródła) oraz listy zainstalowanych wtyczek (tak aby w razie problemów łatwo można było je odtworzyć). Raz w tygodniu możemy wykonywać backup plików multimedialnych (katalog /wp-content/uploads/) oraz (opcjonalnie) kompletną kopię całej strony (aby w razie awarii można było szybko odtworzyć serwis na innym serwerze). Wszystko zależy od tego, co i jak często jest dodawane lub modyfikowane na naszej stronie.

Kopie najlepiej robić w nocy, gdy serwer jest najmniej obciążony i gdy nikomu nie będziemy tym procesem przeszkadzać.

Jeśli chodzi o czas przechowywania kopii bezpieczeństwa, to również jest to kwestia indywidualna. Dodatkowym czynnikiem jest przestrzeń dyskowa, jaką możemy przeznaczyć na magazynowanie backupów. W miarę bezpieczną opcją jest przechowywanie kopii z ostatnich 30 dni. Jeśli nasza strona jest naprawdę duża, to może wymagać to sporej ilości miejsca – nie warto jednak na tym oszczędzać, bo koszty braku backupu po awarii mogą być wielokrotnie wyższe.

Ja zwykle przechowuję 30 ostatnich kopii codziennych i 12-15 ostatnich kopii tygodniowych (całościowych). Uważam, że jest to dobra metoda ze sporym marginesem bezpieczeństwa – ale na szczęście jeszcze nigdy nie musiałem z tych backupów korzystać. Jak do tej pory zwykle spotykałem się z sytuacjami, w których kopii nie było w ogóle lub były robione źle (czegoś w nich brakowało, były robione zbyt rzadko lub nie były przechowywane odpowiednio długo).

Wybierz co znajdzie się w kopii

Teoretycznie do odtworzenia serwisu zbudowanego na WordPressie wystarczy baza danych, lista zainstalowanych wtyczek oraz zawartość katalogów /wp-content/uploads/ i /wp-content/themes/ (jeśli korzystamy z własnego motywu lub z motywu potomnego). Samego WordPressa (w dowolnej wersji) i wszystkie wtyczki można zawsze pobrać z repozytorium, tak więc nie ma sensu archiwizować tych plików. Z drugiej jednak strony, znacznie szybciej jest odtworzyć serwis z kompletnej kopii – wystarczy tylko rozpakować archiwum backupu, zaimportować bazę danych i wprowadzić nowe dane bazy danych do pliku wp-config.php. Taka kompletna kopia będzie na pewno lepsza w przypadku stron, których niedostępność przynosi wymierne straty, przez co czas potrzebny na ponowne ich uruchomienie powinien być jak najkrótszy.

Koniecznie należy też przyjrzeć się niestandardowym katalogom znajdującym się wewnątrz katalogu /wp-content/. Wiele wtyczek (na przykład do tworzenia galerii) zapisuje tam swoje dane, które również powinniśmy dołączyć do naszej kopii bezpieczeństwa. Jeśli dodatkowo korzystamy z własnego motywu i niestandardowych wtyczek, może się okazać, że najbezpieczniej i najwygodniej będzie po prostu dołączyć do backupu cały katalog /wp-content/ (wykluczając tylko – jeśli jest taka potrzeba – katalog cache i katalog, do którego trafiają archiwa z kopiami bezpieczeństwa).

Dyskusyjne jest dołączanie do archiwum pliku wp-config.php. Znajdują się w nim dane, które raczej powinniśmy chronić: nazwa użytkownika i hasło bazy danych oraz klucze zabezpieczające informacje przechowywane w ciasteczkach. Jednak w większości przypadków dane te są i tak mało użyteczne – do bazy zwykle nie da się dostać z zewnątrz (spoza serwera), a wykorzystanie kluczy do jakiegokolwiek ataku jest dość trudne (a po jakichkolwiek problemach z bezpieczeństwem strony i tak powinniśmy je zmienić).

Ponieważ odtworzenie zawartości pliku wp-config.php jest bardzo łatwe (wystarczy skopiować znajdujący się w paczce instalacyjnej WordPressa plik wp-config-sample.php i uzupełnić brakujące w nim informacje), osobiście nie polecam mimo wszystko dołączania go do kopii bezpieczeństwa. Jeśli konfiguracja naszej stronie jest nieco bardziej złożona, dodatkowe ustawienia możemy trzymać w zewnętrznym pliku, który dołączamy (na przykład za pomocą funkcji require()) do pliku wp-config.php.

Podsumowanie

Na koniec jeszcze raz apeluję, abyście nie lekceważyli wykonywania kopii bezpieczeństwa – konfiguracja backupu powinna być jedną z pierwszych czynności, jakie wykonujemy po uruchomieniu nowej strony. Nikt z nas przecież nie chce, aby efekt ciężkiej (często wieloletniej) pracy zniknął bezpowrotnie.

Życzę Wam jednocześnie, abyście ze swoich wykonywanych regularnie backupów nigdy nie musieli korzystać.

Bezpośredni link