Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

[Serwery] Jak działa demo systemu CMS online

Witam.

Ostatnio pewien znajomy pokazał mi "bajer" który automatycznie sam przywraca kopię bazy co X minut, pomyślałem, że przedstawię w jaki sposób tak przydatna czynność jest wykonywana.

W Uniksach jest tak zwany crontab czyli program chodzący w tle który wykonuje polecenia o określonych porach i odstępach czasowych.

Jak się można domyślić do crontaba należy dodać krótkie polecenie które będzie przywracać bazę danych z kopii zapasowej.

Ze względu na różne warunki panujące na serwerach jest zatem kilka metod na wykonanie tego prostego zadania.

1. Dostęp do shella na serwerze hostingowym

To jest ta najłatwiejsza sytuacja w której wystarczy posłużyć się shellowym crontabem całkowicie bezproblemowo i bezpłatnie.

1. Tworzymy kod przywracający backup

#!/bin/bash cp ~/.kopia-bazy-pokazowej /var/www/data/db/database.sqlite3 chown www-data /var/www/data/db/database.sqlite3 # opcjonalnie

2. Dodajmy wpis do crontaba

crontab -e

*/10 * * * * /home/uzyszkodnik/przywroc-backup.sh

Backup będzie tym sposobem przywracany co 10 minut.

2. Brak dostępu do shella, panel webowy z płatnym cronem

Harmonogram zadań, dokładnie taki termin często pojawia się w panelach zarządzania kontem hostingowym.

W hostingach za SMS jedno zadanie w harmonogramie może kosztować przeciętnie ok. 10 zł

Przez brak dostępu do shella skrypt wykonujący kopie zapasowe należy napisać w PHP/Ruby/Python/Perl/LUA/ASP.NET lub w innym języku skryptowym.

<?php copy('backupy/baza-danych.sqlite3', 'data/db/demo.sqlite3'); ?>

Reguły crontaba w panelach WWW są zazwyczaj kilkalne więc nie powinno być problemów z ustawieniem.

Podsumowując prosty, banalny sposób na postawienie systemu CMS z panelem administratora dostępnym dla wszystkich w ramach demonstracji działania naszego skryptu.

Całość oparta na crontabie który jest idealnie prosty w użytku i nie powinien żadnemu administratorowi ani programiście webowemu przysporzyć problemów. 

Komentarze

0 nowych
  #1 23.05.2011 18:08

A po co komu takie automatyczne odzyskiwanie bazy danych? :|

paszczak000   6 #2 23.05.2011 18:12

Nie crontab a CRON. Przy okazji warto napisać, że taki plik musi mieć prawa x

Odpalenie takiego pliku PHP jak podałeś poniżej może nie dać rady dla dużych baz danych. Zazwyczaj na serwerach są limity i PHP skończy swoje działanie po 30 sekundach i urwie wgrywanie kopii.

Opisałeś tylko proste kopiowanie plików dla sqlite3. A co z innymi bazami?

webnull   9 #3 24.05.2011 16:10

@Eee?
Aby utworzyć prezentację swojej strony WWW jeśli jest autorska, tak działają php-fusion, extreme-pack itp.

webnull   9 #4 24.05.2011 16:11

@paszczak000
Na uprawnieniach roota możnaby i skopiować pliki bazy MySQL prawdopodobnie, a na uprawnieniach użytkownika można by wykonać eksport a następnie import.