DEV - STRONA GŁÓWNADokumentacjaZarządzanie systememTworzenie kopii zapasowej systemu

Tworzenie kopii zapasowej systemu

Dla przejrzystości zabezpieczenie systemu TYPO3 można podzielić na 2 etapy.

  1. Zabezpieczenie plików/katalogów.
  2. Zabezpieczenie bazy danych.

ZABEZPIECZANIE PLIKÓW

Jeżeli nie dokonywałeś żadnych zmian to standardowa struktura katalogów i plików w systemie TYPO3 przedstawia się następująco:

fileadmin/
misc/
t3lib/
typo3/
typo3conf/
typo3temp/
uploads/
_.htaccess
ChangeLog
clear.gif
GPL.txt
index.php
INSTALL.txt
LICENCE.txt
NEWS.txt
README.txt
RELEASE_NOTES.txt

Zbędne pliki i katalogi

Oczyśćmy na początek katalog główny ze zbędnych plików. Usuńmy wszystkie pliki *.txt. Pozostawmy plik ChangeLog, który zawiera informacje z jakiej dokładnie wersji TYPO3 korzystamy. Informacja ta może być przydatna w momencie, kiedy trzeba będzie przywrócić źródła TYPO3. Zbędny jest również katalog misc/.

Po oczyszczeniu struktura plików i katalogów przedstawia sie następująco:

fileadmin/
t3lib/
typo3/
typo3conf/
typo3temp/
uploads/
_.htaccess   (.htaccess)
ChangeLog
clear.gif
index.php
 

Katalogi i pliki specyficzne dla instalacji

Zabezpieczyć należy te katalogi i pliki, które zostały podświetlone na powyższym wykazie, czyli:

fileadmin/
typo3conf/
uploads/
.htaccess
ChangeLog

Katalog typo3temp/ jest jak najbardziej specyficzny dla danej instalacji TYPO3, ale zawiera pliki, które w każdej chwili mogą zostać przez TYPO3 odtworzone, dlatego nie musimy się nim przejmować.

Zabezpieczenie powyższych katalogów i plików to "wariant bezpieczny". Można bowiem pokusić się o kopiowanie tylko tych katalogów, które naprawdę się zmieniają. Jeżeli system został skonfigurowany i pracują w nim już tylko edytorzy to zmianie ulega katalog uploads/ oraz katalog w katalogu fileadmin/, który został im udostępniony do uploadowania plików. Możemy więc wykonać raz kopię w "wariancie bezpiecznym" a później tylko synchronizować zawartość folderów uploads/ oraz odpowiednich podkatalogów w katalogu fileadmin/.

Katalogi i pliki będące źródłami TYPO3

Pozostałe katalogi i pliki, czyli:

t3lib/
typo3/
_.htaccess
index.php

są częścią źródeł TYPO3. Nie trzeba ich zabezpieczać, chyba że były one zmieniane. Powinniśmy jedynie wiedzieć jakiej wersji TYPO3 używa witryna, którą zabezpieczamy (plik ChangeLog) i jeżeli trzeba będzie odzyskać źródła TYPO3 będziemy mogli je pobrać z serwerów sourceforge.net.

Tak np. wygląda odsyłacz do wersji TYPO3 4.1.2

http://prdownloads.sourceforge.net/typo3/typo3_src-4.1.2.zip?download

Inne wersje pobierzesz zmieniając odpowiednio numer wersji zawarty w odsyłaczu. np. aby pobrać wersję 3.8.1 odsyłacz będzie wyglądał.

http://prdownloads.sourceforge.net/typo3/typo3_src-3.8.1.zip?download

ZABEZPIECZANIE BAZY DANYCH

Najprostszy, ale zarazem najbardziej uciążliwy sposób na zabezpieczenie bazy danych to użycie phpmyadmin, który jest preinstalowany prawie u każdego hostingodawcy. Uciążliwy, dlatego że regularnie musimy poświęcać czas, żeby taki backup wykonać. Dodatkowo przy dużych bazach danych metoda ta niekiedy może okazać się zawodna.

Jest na to rozwiązanie. Większość dostawców hostingu umożliwia uruchamianie skryptów o określonej godzinie (cron). Warto więc przygotować taki skrypt, który zabezpieczy bazę danych, zzpiuje ją z hasłem i prześle na pojemne konta googla. Poniżej skrypt napisany w php, który wykonuje te czynności - wymaga on biblioteki phpmailer. Pamiętajmy, że skrypty takie obciążają serwer, więc również we własnym interesie, uruchamiajmy je w godzinach nocnych (01-06).

Zbędne tabele

Baza TYPO3 zawiera takie tabele, których zawartość można bezpiecznie pominąć przy tworzeniu kopii zapasowej. Są to m.in. tabele przechowujące cache: cache_hash, cache_pages. Przy dużych witrynach tabele te osiąga spore rozmiary sięgające nawet setek MB. Do gigantycznych rozmiarów potrafi też urosnąć tabela index_rel należąca do rozszerzenia wyszukiwarki indeksującej indexed_search. Chociaż tabele te dobrze się kompresują, to raczej nie ma większego sensu ich zabezpieczać. Program mysqldump posiada parametr --ignore-table=, który można wykorzystać do pominięcia niepotrzebnych tabel. W poniższym skrypcie pomijane są tabele: cache_hash, cache_pages, cache_extensions, cache_pagesection, index_rel, sys_history, sys_log, static_template, static_tsconfig_help.

Pamiętaj, żeby po odtworzeniu takiego "niepełnego" dumpa bazy przejść w TYPO3 do instalatora i stworzyć strukturę tabel, które pominęliśmy. (install -> database -> compare). Jeżeli chcesz zabezpieczyć całą bazę bez pomijania  jakiejkolwiek tabeli to ustaw jako komentarz (#) linię, w której definiowana jest zmienna '$ignore_tables'. (linia 26)

<?php

require("class.phpmailer.php");

# wypelnij ponizsze pola

$sql_server = '';
$sql_port = '3306';
$sql_user = '';
$sql_password = '';
$sql_database = '';

$zip_password = ''; #haslo jakim bedzie zabezpieczony przesylany plik bazy. Im wiecej znakow tym bezpieczniej - miedzy 20-30 raczej wystarczy
$zip_attachment_file = ''; #nazwa pod jaka bedzie zapisany plik np. backup33.zip

$email_from = '';
$email_from_name = '';
$email_to = ''; #jakies pojemne darmowe konto np. na gmail.com
$email_subject = '';

# tabele, ktore maja byc pominiete
$ignore_tables_cache = "--ignore-table=$sql_database.cache_hash --ignore-table=$sql_database.cache_pages --ignore-table=$sql_database.cache_extensions --ignore-table=$sql_database.cache_pagesection";
$ignore_tables_index = "--ignore-table=$sql_database.index_rel";
$ignore_tables_sys = "--ignore-table=$sql_database.sys_history --ignore-table=$sql_database.sys_log";
$ignore_tables_static ="--ignore-table=$sql_database.static_template --ignore-table=$sql_database.static_tsconfig_help";

# jezeli nie chcesz pomijac tabel, ustaw jako komentarz ponizsza linie
$ignore_tables = "$ignore_tables_cache $ignore_tables_index $ignore_tables_sys $ignore_tables_static";



######### ponizej lepiej nie modyfikowac #####################

system ("mysqldump --complete-insert $ignore_tables -h$sql_server -P$sql_port -u$sql_user -p$sql_password $sql_database |zip -q -P $zip_password $zip_attachment_file -");

$mail = new PHPMailer();

$mail->From = $email_from;
$mail->FromName = $email_from_name;
$mail->AddAddress($email_to);
$mail->AddAttachment($zip_attachment_file);
$mail->Subject  =  $email_subject;
$mail->Mailer   = "smtp";

if(!$mail->Send())
{
   echo "Message was not sent <p>";
   echo "Mailer Error: " . $mail->ErrorInfo;
   exit;
}

           
?>

ROZSZERZENIA DO ZABEZPIECZANIA SYSTEMU

W TER istnieją specjalne rozszerzenia do tworzenie kopii zapasowej TYPO3. Najpopularniejszym i najczęściej aktualizowanym jest rozszerzenie w4x_backup.

Rozszerzenie tworzy w katalogu typo3temp/w4x spakowane pliki tar.gz z następującą zawartością:

  1. zdumpowana baza danych
  2. katalog fileadmin/
  3. katalog uploads/
  4. plik localconf.php z katalogu typo3conf/, albo w zależności od wyboru cały katalog typo3conf/

Pliki kopii zapasowej znajdujące się w katalogu typo3conf/w4x możemy pobrać lub odtworzyć z nich system.

Rozszerzenie nie przewiduje jednak, żeby można było uruchamiać je z crona, więc każdorazowo musimy zalogować się do systemu, wykonać backup ręcznie i pobrać lokalnie.

O autorze

Krystian Szymukowicz jest jednym z głównych założycieli Społeczności TYPO3 w Polsce. Przygodę z TYPO3 rozpoczął pod koniec 2003 roku. Jest konsultantem/freelancer'em. Prowadzi własną firmę PROLABIUM.COM.
email