Jak zrobić backup serwisu internetowego?
Zbudowałem stronę internetową. Umieściłem ją na serwerze. Chciałbym wykonać kopię zapasową serwisu. Nie chcę kopiować plików po kolei. Jak to szybko zrobić?
Pracując ze stroną internetową wciąż zmieniamy jej zawartość. Liczba plików wciąż rośnie. Ich skopiowanie na dysk jest czasochłonne i często nie przebiega bez zakłóceń. Ściąganie 1000 małych plików o łącznym rozmiarze 1MB trwa znacznie dłużej niż ściągnięcie 1 dużego pliku o takim samym rozmiarze.
Najlepiej by było zrobić archiwum całego serwisu i ściągnąć taki plik. Dzięki temu zyskujemy:
- szybciej się pobiera 1 duży plik, niż setki małych,
- archiwum zajmuje mniej miejsca, niż wszystkie te pliki, często współczynnik kompresji wynosi 2:1,
- gdy zostanie przerwane ściąganie można wznowić ściąganie tego pliku i nie trzeba się zastanawiać, jaki katalog był pobrany w całości, jaki w części a jaki wogóle,
- ściąganie plików przez FTP też się wlicza do limitu transferu a skompresowany plik zajmuje mniej miejsca, więc oszczędzamy transfer.
Oto prosty skrypt w PHP robiący backup:
<?
$q = system("tar -cf ../g.tar ../*");
sleep(10);
$q = system("gzip ../g.tar");
sleep(10);
?>
Ten plik należy wrzucić na serwer do katalogu gdzie przechowujesz serwis i odpalić z poziomu przeglądarki internetowej. Należy odczekać kilka sekund (a nawet minut, gdy masz obszerny serwis), a potem możesz wejść na serwer FTP i jeden poziom nad katalogiem public_html znajdziesz plik g.tar.gz, który zawiera kopię serwisu.
Format tar.gz jest bardzo popularnym formatem archiowów pod linuxem (serwery stoją głównie na linuxach) jednak WinRar bez problemu rozpakuje taki plik.
Jeśli masz dostęp do shella, to nie musisz pisać skryptu w PHP, możesz sam ręcznie wyklepać następujące komendy (przejdź do katalogu o 1 poziom wyższego od tego, w którym przechowujesz stronę, czyli wydając komendę ls, w wynikach powinien zostać zwrócony właśnie ten katalog):
tar -cf g.tar *
gzip g.tar



