Automatyczna kopia zapasowa w home.pl

Automatyczna kopia zapasowa w home.pl

Zadziwiające, jest to, że niewiele osób prowadzących swoje serwisy, tworzy regularnie kopie zapasowe.

Zainspirowany wykładem Michała Trzepizur (wiceprezes Fundacji PCJ Otwarte Źródła) zaprezentowanym podczas tegorocznej imprezy Joomla! Day Poland, postanowiłem pokazać Tobie, jak krok po kroku zautomatyzować proces tworzenia kopii zapasowych serwisów opartych o CMS Joomla! na serwerach firmy home.pl.

Michał przedstawił wówczas niezwykle ciekawy wykład na bardzo ważny temat dotyczący tworzenia kopii zapasowych serwisów opartych o CMS Joomla! Bardzo trafnie przypomniał, że ludzie dzielą się na tych, którzy robią regularnie kopie zapasowe i na tych którzy będą robić kopie zapasowe ;-)

Prelekcja Michała Trzepizura podczas Joomla! Day 2013

Dzięki prezentacji Michała można było dowiedzieć się w jaki sposób zautomatyzować wykonywanie kopii zapasowych za pomocą bardzo popularnego narzędzia jakim jest Akeeba Backup, którego autorem jest Nicholas Dionysopulos, który gościł w Polsce podczas ubiegłorocznego Joomla! Day.

Czy Ty należysz do grupy, która będzię robić kopie zapasowe, czy do tej, która już je robi? Może po prostu nie wiesz jak wykonać taką kopię? Mam tylko nadzieję, że nie należysz do osób, które uważa, że nie ma potrzeby wykonywania kopii zapasowej własnego serwisu, bo np. tym zajmuje się firma, która świadczy dla Ciebie swoje usługi hostingowe! Sprawdź, z jaką częstotliwością wykonywane są w tej firmie kopie i czy jesteś w stanie odpowiednio zareagować w sytuacji kryzysowej.

Odpowiedz sobie na takie pytania jak:

  • Co się stanie, jak nastąpi awaria serwera?
  • Co zrobię, jak coś przypadkowo usunę?
  • Co zrobię, jak będzie włamanie do mojego serwisu?
  • Co się stanie jak podczas aktualizacji systemu coś pójdzie nie tak i serwis nie będzie działał prawidłowo?
  • Co się stanie jak podczas instalacji jakiegoś rozszerzenia, cały system się sypnie?

Jeżeli chcesz mieć komfort psychiczny i poczucie pewności, że w razie sytuacji krytycznej możesz przywrócić swój serwis, koniecznie twórz własne, regularne kopie zapasowe!

Istnieje kilka technik tworzenia kopii zapasowych, jednak niezależnie od nich pamiętaj o kilku ważnych kwestiach:

  • kopia zapasowa powinna być wcześniej sprawdzona - po co Tobie kopia, która zawiera zainfekowany serwis, jest niekompletna lub uszkodzona?
  • przechowuj kopie zapasowe, obejmujące większy okres czasowy - zanim zorientujesz się, że coś się dzieje z serwisem może minąć kilka dni. co zrobisz kiedy masz kopie tylko z kilku ostatnich dni?;
  • przećwicz kilka razy przywracanie, aby upewnić się, że potrafisz to robić;
  • kopia zapasowa musi być aktualna i szybko dostępna;
  • kopia zapasowa powinna zachowywać strukturę katalogów Twojego serwisu, plików i bazy danych;
  • stosuj ustandaryzowane nazewnictwo swoich kopii zapasowych - szybciej znajdziesz odpowiednią kopię;
  • nie myśl: czy Twoja witryna zostanie zaatakowana, tylko kiedy Twoja witryna zostanie zaatakowana ;-);

Jak już wcześniej wspomniałem, pokażę Tobie w jaki sposób możesz zautomatyzować proces wykonywania kopii zapasowej Twojego serwisu. Do tego celu użyję przykładowego serwisu, który powstał na potrzeby artykułu na temat zarządzania kontrolą dostępu do zasobów serwisu opartego na CMS Joomla! 3.x: ACL w Joomla! 3.x. Zakładam, że serwis umieszczony jest na serwerach firmy home.pl. Aby móc zautomatyzować tworzenie kopii zapasowych, wykorzystam fantastyczne narzędzie jakim jest Akeeba Backup.

Krok 1. Przygotuj miejsce na serwerze do przechowywania kopii zapasowych

Za pomocą programu klienta FTP (np. FileZilla) zaloguj się do swojego serwera FTP, następnie utwórz katalog w którym będą przechowywane kopie zapasowe Twojego serwisu. Ja utworzę na przykład folder o nazwie: backup. Zakładam, że mój mechanizm wykonujący automatyczne kopie zapasowe będzie wykonywał dwa rodzaje kopii:

  • kopia bazy danych - codziennie;
  • pełna kopia serwisu (pliki + baza danych) - raz w tygodniu;

W związku z tym w folderze backup, utworzę jeszcze dwa foldery:

  • baza, w którym będę przechowywał kopie bazy danych wykonywane codziennie;
  • pelna, w którym będę przechowywał pełne kopie zapasowe serwisu, wykonywane raz na tydzień;

Foldery utworzone na serwerze FTP

Krok 2. Zainstaluj komponent Akeeba Backup

Pobierz najnowszą wersję komponentu Akeeba Backup. W momencie pisania tego tekstu dostępna jest wersja 3.8.2. którą możesz pobrać pod adresem: https://www.akeebabackup.com/download/akeeba-backup.html.

Zapisz plik komponentu (com_akeeba-3.8.2-core.zip) w dowolnej lokalizacji na Twoim dysku.

Zaloguj się do panelu administracyjnego witryny a następnie kliknij w menu Rozszerzenia pozycję Instalacje. Kliknij przycisk Przeglądaj, wskaż pobrany wcześniej plik com_akeeba-3.8.2-core.zip a następnie kliknij przycisk Wczytaj plik i zainstaluj. Jeżeli proces instalacji przebiegł pomyślnie zobaczysz ekran podobny do pokazanego poniżej:

Instalacja komponenty Akeeba Backup

Kliknij w link: directly from our CDN page, aby pobrać pliki językowe do tego komponentu. W otwartej stronie z plikami językowymi, kliknij łącze Download for Joomla! 1.6/1.7/2.5 dla języka polskiego, następnie zapisz plik (akeebabackup-pl-PL-j25.zip) w dowolnej lokalizacji.

Wybór pakietu języka polskiego dla komponentu Akeeba Backup

Zainstaluj pliki językowe dla komponentu Akeeba Backup, a następnie kliknij w menu Komponenty pozycję Akeeba Backup. Zobaczysz ekran podobny do pokazanego poniżej:

Konfiguracja po instalacji komponentu Akeeba Backup

Przeczytaj informacje oraz zatwierdź opcje pokazane na rysunku powyżej klikając przycisk Zaakceptuj wymagane informacje i zastosuj zaznaczone preferencje. Kolejne okno pokaże kreatora, który najpierw przeprowadzi kilka testów:

Działanie kreatora konfiguracji w komponencie Akeeba Backup

Po pomyślnym zakończeniu testów zobaczysz ekran informujący o ich ukończeniu. Kliknij przycisk Pulpit, aby przeprowadzić kolejne czynności konfiguracyjne:

Komunikat informujący o pomyślnym zakończeniu testów w komponencie Akeeba Backup

Krok 3. Włączenie trybu sporządzania kopii z poziomu witryny

Na pulpicie komponentu Akeeba Backup, kliknij przycisk Opcje, a następnie kartę: Kopie z poziomu witryny. Dzięki włączeniu odpowiednich opcji na tej karcie, będzie możliwe utworzenie odpowiedniego skryptu, za pomocą którego będą wykonywane automatyczne kopie zapasowe oraz przesłanie komunikatu informującego o wykonanej kopii.

Konfiguracja opcji: Kopie z poziomu witryny

  1. W polu Kopie zapasowe z poziomu witryny zaznacz pole opcji: Tak;
  2. W polu Sekretne słowo - klucz wpisz hasło, które później użyjesz do utworzenia skryptu wykonywania automatycznej kopii zapasowej;
  3. W polu Powiadamiaj o utworzeniu kopii zapasowej zaznacz pole opcji: Tak, jeżeli chcesz, aby system wysłał do Ciebie e-mail z informacją potwierdzającą utworzenie kopii;
  4. W polu Adres e-mail wpisz adres, an który system ma wysłać powiadomienie o utworzonej kopii zapasowej;
  5. W polu Tamat listu możesz wpisać np.: Kopia serwisu: [HOST], wówczas system, zamiast zmiennej systemowej [HOST] wpisze adres Twojego serwisu;
  6. W polu Treść listu możesz wpisać dowolną zdefiniowaną przez Ciebie treść. Możesz przy tym wykorzystać zmienne, które system zastąpi odpowiednimi wpisami. Możesz także przetestować zaproponowany przeze mnie wpis:

Witaj :-)

Kopia serwisu: [HOST] została wykonana w [DATE] o godz.: [TIME].Nazwa użytego profilu: [PROFILENAME]Ilość wygenerowanych plików archiwum: [PARTCOUNT]Pliki utworzonej kopii zapasowej: [FILELIST]

Pamiętaj, aby sprawdzić prawidłowość wykonania kopii zapasowej!

Pozdrawiam :-)
Sławomir Pieszczek

Na koniec kliknij przycisk Zapisz i zamknij, aby powrócić do pulpitu komponentu Akeeba Backup.

Krok 4. Konfiguracja profili komponentu Akeeba Backup

W kroku 1 założyłem, że mój system automatycznego wykonywania kopii zapasowych będzie wykonywał codziennie kopie bazy danych, natomiast raz w tygodniu pełną kopię zapasową serwisu. Aby system mógł wykonywać różnego rodzaju kopie zapasowe trzeba w komponencie Akeeba Backup, utworzyć dwa różne profile. Po instalacji komponentu masz do dyspozycji domyślny profil o nazwie Default Backup Profile. Wobec tego najpierw zmodyfikuj ten profil, w taki sposób, aby korzystając ze zdefiniowanych w nim ustawień tworzona była pełna kopia zapasowa, która zostanie zapisana w utworzonym w kroku 1 folderze: pelna (/backup/pelna).

Na pulpicie komponentu Akeeba Backup kliknij przycisk Profile, następnie kliknij nazwę domyślnego profilu (Default Backup Profile), aby zmienić jego nazwę:

Edycja domyślnego profilu w komponencie Akeeba Backup

Teraz w polu: Opis profilu wpisz np.: Pełna kopia serwisu - profil domyślny, a następnie kliknij przycisk Zapisz i zamknij.

Zmiana nazwy domyślego profilu w komponencie Akeeba Backup

Kliknij przycisk Konfiguruj, aby ustalić rodzaj wykonywanej kopii oraz miejsce jej przechowywania.

Zmiana konfiguracji domyślnego profilu w komponencie Akeeba Backup

W polu Katalog wyjściowy kliknij przycisk z ikonką folderu:

Zmiana wpisu w polu Katalog wyjściowy

Następnie w oknie modalnym wpisz ścieżkę dostępu do folderu w którym chcesz, aby zapisywane były pełne kopie serwisu, w moim przykładzie to: /backup/pelna. Kliknij przycisk Użyj, aby zmiany zostały wprowadzone i aby wrócić do okna konfiguracji profilu.

Zmiana ścieżki zapisu kopii zapasowej w profilu domyślnym komponentu Akeeba Backup

W polu Typ kopii zapasowej sprawdź, czy wybrana jest pozycja: Pełna kopia zapasowa. Pozostałe opcje możesz pozostawić bez zmian. Na koniec kliknij przycisk Zapisz i zamknij.

Wybór typu kopii zapasowej podczas konfiguracji domyślnego profilu w komponencie Akeeba Backup

Teraz utwórz kolejny profil, za pomocą którego tworzona będzie codzienna kopia zapasowa bazy danych. Kliknij na pulpicie komponentu Akeeba Backup przycisk Profile, następnie w oknie: Akeeba Backup: Profile kliknij przycisk Utwórz. W polu Opis profilu wpisz na przykład: Kopia bazy danych i kliknij przycisk Zapisz i zamknij.

Tworzenie nowego profilu w komponencie Akeeba Backup

Kliknij przycisk Konfiguruj obok nowoutworzonego profilu (Kopia bazy danych), a następnie w podobny sposób, jak w przypadku profilu Pełna kopia serwisu - profil domyślny, zmień katalog wyjściowy na: /backup/baza. W polu Typ kopii zapasowej wybierz z listy pozycję: Tylko kopia bazy danych witryny (plik SQL). Na koniec kliknij przycisk Zapisz i zamknij, aby zapisać wprowadzone zmiany.

Konfiguracja nowego profilu w komponencie Akeeba Backup

To w zasadzie wszystko, co musisz zrobić od strony komponentu Akeeba Backup ;-)

Krok 5. Tworzenie skryptów automatyzujących wykonywanie kopii zapasowej

Musisz wiedzieć, że podstawą platformy hostingowej firmy home.pl jest IdeaWebServer – autorskie oprogramowanie firmy. Na stronie: home.pl/firma/platforma, możesz przeczytać więcej na ten temat. Informacja ta jest o tyle istotna, że uruchamianie cyklicznych zadań na serwerach tej firmy różni się mocno od działań jakie trzeba wykonać przechowując swoje serwisy na serwerach innych firm.

W firmie home.pl cykliczne wykonywanie skryptów opiera się na wywołaniu odpowiednio nazwanych skryptów, które muszą znajdować się w katalogu głównym Twojego konta.

Co należy zrobić?

  1. Utwórz za pomocą dowolnego edytora, np. Notepad++ nowy plik o nazwie: cron-daily.php
  2. Wklej do tego pliku następujący kod:

<?php
define('SITEURL', 'http://adresTwojegoSerwisu.com'); // Base URL of your site
define('SECRETKEY', 'SekretneSłowoKluczZdefiniowane_w_kroku_3'); // Your secret key
define('PROFILE',2); // The profile's ID

// ====================== DO NOT MODIFY BELOW THIS LINE ======================


$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_URL,
SITEURL.'/index.php?option=com_akeeba&view=backup&key='.
SECRETKEY.'&profile='.PROFILE);
curl_setopt($curl_handle,CURLOPT_FOLLOWLOCATION,TRUE);
curl_setopt($curl_handle,CURLOPT_MAXREDIRS,10000); # Fix by Nicholas
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
$buffer = curl_exec($curl_handle);
curl_close($curl_handle);
if (empty($buffer))
    echo "Sorry, the backup didn't work.";
else
    echo $buffer;
?>

Kod ten znajdziesz w dokumentacji komponentu: Automating Your Backup.

  1. Zmień wpisy w zaznaczonych na żółto miejscach. Pamiętaj, aby w wierszu drugim wpisać adres URL Twojego serwisu, natomiast w wierszu 3 słowo, które wpisałeś w polu Sekretne słowo - klucz (patrz krok 3). W wierszu 4 zmieniasz tylko identyfikator profilu Akeeba Backup. Ponieważ chcesz aby tworzony skrypt (cron-daily.php) tworzył codziennie kopię bazy danych, wpisz cyfrę 2 (jest to identyfikator profilu o nazwie: Kopia bazy danych).
  2. Zapisz wprowadzone zmiany
  3. Prześlij plik do folderu głównego Twojego serwera FTP
  4. Utwórz drugi plik i zapisz go pod nazwą: cron-weekly.php
  5. Wklej do tego pliku kod:
  6. <?php
    define('SITEURL', 'http://adresTwojegoSerwisu.com'); // Base URL of your site
    define('SECRETKEY', 'SekretneSłowoKluczZdefiniowane_w_kroku_3'); // Your secret key
    define('PROFILE',1); // The profile's ID

    // ====================== DO NOT MODIFY BELOW THIS LINE ======================


    $curl_handle=curl_init();
    curl_setopt($curl_handle,CURLOPT_URL,
    SITEURL.'/index.php?option=com_akeeba&view=backup&key='.
    SECRETKEY.'&profile='.PROFILE);
    curl_setopt($curl_handle,CURLOPT_FOLLOWLOCATION,TRUE);
    curl_setopt($curl_handle,CURLOPT_MAXREDIRS,10000); # Fix by Nicholas
    curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
    $buffer = curl_exec($curl_handle);
    curl_close($curl_handle);
    if (empty($buffer))
        echo "Sorry, the backup didn't work.";
    else
        echo $buffer;
    ?>

  1. Zmień wpisy w zaznaczonych na żółto miejscach. Pamiętaj, aby w wierszu drugim wpisać adres URL Twojego serwisu, natomiast w wierszu 3 słowo, które wpisałeś w polu Sekretne słowo - klucz (patrz krok 3). W wierszu 4 pozostaw identyfikator o numerze 1. Jest to identyfikator o nazwie: Pełna kopia serwisu - profil domyślny.
  2. Zapisz wprowadzone zmiany
  3. Prześlij plik do folderu głównego Twojego serwera FTP

Od teraz kopie zapasowe Twojego serwisu będą wykonywane automatycznie! Od teraz kopia bazy danych będzie wykonywana codziennie o godz. 1:15, natomiast pełna kopia zapasowa co tydzień - w każdą sobotę o godz. 1:30.

Inne dostępne opcje automatyzacji w home.pl:

  • crone-hourly - wykonywanie co godzinę (pełne godziny);
  • crone-monthly - wykonywanie pierwszego dnia każdego miesiąca o 1:45;

Więcej na ten temat przeczytasz w artykule: Cykliczne uruchamianie - CRON, bazy wiedzy home.pl.

Krok 6. Zabezpieczenie skryptów przed wywołaniem przez dowolnego użytkownika

Utworzenie tego rodzaju plików może stanowić potencjalne niebezpieczeństwo, ponieważ można je wywołać z poziomu przeglądarki internetowej wpisując w pasku adresu, np.: http://twojekonto.home.pl/cron-daily.php. Jeżeli niepowołana osoba będzie znać nazwę Twojego konta oraz nazwy utworzonych plików, może wywoływać je z poziomu przeglądarki i bardzo szybko zapełnić dostępne miejsce na Twoim serwerze!

Aby zabezpieczyć się przed taką możliwością, musisz za pomocą pliku .htaccess zablokować dostęp do tych plików.

  1. Utwórz za pomocą dowolnego edytora plik o nazwie htaccess.txt
  2. Wklej do niego następujący kod:

:Location /cron-daily.php
Access deny all

  1. Zapisz wprowadzone zmiany a następnie prześlij ten plik do folderu głównego swojego serwera FTP - tam gdzie znajdują się pliki: cron-daily.php i cron-weekly.php. Na koniec zmień nazwę pliku htaccess.txt na .htaccess - pamiętaj o kropce przed nazwą!

To wszystko :-)

Jeżeli wszystko zostało zrobione prawidłowo, zaczniesz otrzymywać maile informujące o wykonaniu odpowiedniej kopii zapasowej:

  • Mail otrzymany dzięki działaniu skryptu cron-daily.php:
  • Wygląd maila otrzymanego w wyniku działania skryptu: cron-daily.php

  • Mail otrzymany dzięki działaniu skryptu cron-weekly.php:

Wygląd maila otrzymanego w wyniku działania skryptu: cron-weekly.php

W folderach, które w kroku 1 zostały przygotowane pojawiły się pliki z kopiami zapasowymi:

  • folder baza:

Zawartość folderu baza z kopią zapasową bazy danych

  • folder pelna:

Zawartość folderu: pelna zawierająca kopię zapasową wygenerowaną za pomocą skryptu cron-weekly.php

Uwaga końcowa

Pamiętaj, aby regularnie sprawdzać poprawność kopii wykonanych za pomocą tej tego mechanizmu! Co należy zrobić? Możesz na przykład odtworzyć wybraną kopię na swoim komputerze i sprawdzić, czy wszystkie funkcjonalności oraz treści serwisu zostały przywrócone. Dzięki temu będziesz miał pewność, że w razie czego masz do dyspozycji sprawdzoną i nieuszkodzoną kopię zapasową swojego serwisu.

 

Chcesz otrzymywać powiadomienia o moich kolejnych wpisach lub projektach?
Wpisz swoje imię oraz adres e-mail a następnie kliknij "ZAPISZ MNIE"

Twoje imię:


Adres email:


Joomla! 3.2 już jest!
Wiek nie ma znaczenia - moja przygoda z Joomla!

Podobne wpisy

 

Komentarze 21

Gość - Bartek (website) w wtorek, 05 listopad 2013 23:52

Ech.....Szkoda tylko że to tylko na Home.plCzy nie da się zrobić takiego skryptu na innym hostingu z obsługą crona?

Ech.....Szkoda tylko że to tylko na Home.plCzy nie da się zrobić takiego skryptu na innym hostingu z obsługą crona?
Sławomir Pieszczek (website) w środa, 06 listopad 2013 09:30

Bartek,
Postaram się w kolejnym artykule pokazać tworzenie mechanizmu wykonywania kopii zapasowych na innych hostingach ;-)

Bartek, Postaram się w kolejnym artykule pokazać tworzenie mechanizmu wykonywania kopii zapasowych na innych hostingach ;-)
Gość - jarek w środa, 06 listopad 2013 07:10

Świetny artykuł, tylko co jeżeli mamy serwis na nazwa.pl ?

Świetny artykuł, tylko co jeżeli mamy serwis na nazwa.pl ?
Sławomir Pieszczek (website) w środa, 06 listopad 2013 09:31

Jarek,
Wówczas w zasadzie sprawa jest jeszcze prostsza, postaram się pokazać to w kolejnym artykule ;-)

Jarek, Wówczas w zasadzie sprawa jest jeszcze prostsza, postaram się pokazać to w kolejnym artykule ;-)
Gość - Zygmunt w środa, 06 listopad 2013 09:09

Dzięki super sprawa nie będę musiał pamiętać o kopii

Dzięki super sprawa nie będę musiał pamiętać o kopii
Gość
czwartek, 22 sierpień 2019

Zdjęcie captcha

Najnowsze komentarze

Gość - Andy SSL i Joomla! w Smarthost
03 styczeń 2019
Dzięki, jak zwykle dobra robota! Warto dodać, że instalacja certyfikatu SSL nie zapewnia bezpieczeństwa transmisji danych. To jest możliwe po wdrożeniu polityki bezpieczeństwa w firmie. Co do SSL - to...
Gość - Henryk Jak utworzyć menu poziome w szablonie protostar?
02 styczeń 2019
Robię punkt po punkcie i nie wyświetla się poziome menu Nie wiem gdzie tkwi błąd i co robię źle?Jeśli to możliwe to proszę o pomocps. posiadam książkę "Joomla! 3x" i tu również niema pomocy Pozdrawiam...
Gość - Joanna Jak utworzyć własny szablon dla Joomla! nie dotykając kodu? EF4 cz.2
09 grudzień 2018
Czy jest jakaś możliwość, żeby zmienić układ top-bar i tej linii, w której jest logo? Tam niby są flexibloki ale nie można zmienić ich szerokości, a tego potrzebuję bardzo. Jak tego dokonać???
Gość - Informatyk Tworzenie bazy danych w CPanelu na Smarthost - instalacja Joomla!
19 listopad 2018
Dziękuje za ten wpis joomla zawsze była dla mnie problematyczna
Gość - Sławomir DJ Image Slider
04 listopad 2018
co robić? Zdjęcia wyświetlają się pionowo, jedno pod drugim. Żadna zmiana w opcjach, nic nie daje??? Pomożecie?