Jak skopiować zawartość serwera w kilka minut?

W pracy nad stroną internetową bardzo często zachodzi potrzeba, aby skopiować wszystkie pliki – w szczególności gdy wprowadzamy zmiany na już działającym serwisie.

W jakim celu najczęściej kopiujemy cały serwis?

  • Chcemy utworzyć kopię roboczą, by testować na niej większe zmiany.
  • Chcemy mieć podręczną kopię zapasową.
  • Chcemy przenieść stronę na inny serwer (np. przy zmianie dostawcy hostingowego).

W dalszym ciągu bardzo częstym sposobem wymiany plików ze zdalną maszyną jest protokół FTP (niezmiennie od lat 80-tych). FTP nie ma żadnych ograniczeń jeśli chodzi o prędkość przesyłu danych i pracuje z maksymalną prędkością na jaką pozwalają łącza komunikacyjne między obiema maszynami. #wiemyjak

Kopiowanie zaczyna być problematyczne dopiero wtedy gdy przyjdzie nam skopiować dużo nawet bardzo niewielkich plików. Najwięcej czasu pochłania wówczas „rozmowa” serwera z klientem – czyli wymiana poleceń i komunikatów do obsługi transakcji.

Czasami skopiowanie serwisu jest niemożliwe, ponieważ zbudowany jest z dziesiątek tysięcy małych plików i transmisja wszystkich po kolei trwałaby niemiarodajnie długo.

Jeśli masz dostęp do powłoki tekstowej serwera

W wypadku dostępu do serwera przez powłokę tekstową (połączenie SSH) możemy bardzo szybko i sprawnie zaradzić temu problemowi.

  1. Przejdź do katalogu, w którym znajduje się strona (tzw. document root)
$ cd ścieżka/do/katalogu
  1. Spakuj wszystkie pliki do archiwum tar i umieść je o jeden katalog wyżej
$ tar -cf ../kopia-strony.tar .

Jeśli chcemy aby archiwum było skompresowane (będzie wtedy zajmowało mniej przestrzeni), możemy dodać parametr „j”, który sprawi, że docelowy plik będzie miał kompresję bzip2. Warto mieć na uwadze, że tworzenie skompresowanego archiwum dłużej trwa

$ tar -cjf ../kopia-strony.tar.bz2 .

Mając taki plik możemy w dowolny sposób przesłać go na inną maszynę.

Jeśli nie masz dostępu do powłoki tekstowej

Uwaga: ta część poradnika działa tylko gdy na serwerze wykorzystywany jest język PHP w klasycznej formie – czyli możemy wykonać plik ze skryptem wpisując jego nazwę w pasku adresu przeglądarki internetowej. Ponadto – w wypadku takiego problemu zawsze warto spróbować. Nie ma jednak gwarancji, że operacja się powiedzie. Niektóre serwery w ramach zabezpieczeń mają wyłączoną tą funkcjonalność lub program antywirusowy, który na nim jest nie pozwala na przesłanie pliku.

W tym przypadku można dokonać tego w dokładnie taki sam sposób jak powyżej, ale wykonując polecenie za pośrednictwem skryptu PHP. Nie zawsze konfiguracja w php.ini na to pozwala, co jest zrozumiałe, ponieważ gdyby wirus uzyskał dostęp do edycji plików PHP, to otrzymuje również kontrolę nad poleceniami systemowymi.

  1. Utwórz plik w głównym katalogu strony (document root) i nazwij go, np. pack.php
<?php isset($_GET['jakis-ciag-znakow']) or die();
if (TRUE)
  shell_exec('tar -cf archiwum-strony.tar .');

Objaśnijmy powyższy przykład. W pierwszej linijce sprawdzamy czy istnieje parametr zapytania GET o losowej treści. Uniemożliwi to wykonanie skryptu przez niepożądane osoby.

Druga linijka wydawać się może pozbawiona sensu. Znalazła się tam, ponieważ niektóre antywirusy, które mogą być zainstalowane na serwerach, wykrywają bezpośrednie wywołanie shell_exec jako potencjalne zagrożenie. Dodanie warunku i umieszczenie shell_exec w bloku rozwiązuje ten problem.

W trzeciej linijce ostatecznie wykonujemy polecenie, które pakuje stronę do archiwum.

  1. Zostało już tylko wywołanie skryptu. W przeglądarce internetowej wpisujemy adres: http://domena.com/pack.php?losowy-ciag-znakow (ten z pierwszej linijki)Strona powinna się długo ładować – do momentu utworzenia archiwum. Jeśli serwer zgłosi błąd ‚Upłynął czas oczekiwania’ – to nic. Nie powinno to przerwać procesu tar.

UWAGA: Tak zrobiony plik jest dostępny do pobrania z dowolnego miejsca. Nie znając jego nazwy nikt go oczywiście nie pobierze, ale należy ZAWSZE PAMIĘTAĆ by usunąć go z serwera po pobraniu. Polecam też ustawienie bardziej skomplikowanej nazwy pliku.

Czasami nie chcemy przerzucać wszystkiego. Można pominąć pliki lub katalogi dodając kolejne parametry –exclude=’NAZWA_PLIKU_LUB_FOLDERU’, np.

$ tar -cjf paczka.tar.bz2 . --exclude=cache --exclude=backups

Komentarze

Dodaj komentarz

Zamów bezpłatną wycenę

Imię i Nazwisko
E-mail*
Numer telefonu*
Adres strony internetowej*
Treść wiadomości
TAK

Jeśli chcesz zostawić nam więcej danych wypełnij brief.

Otrzymaliśmy twoje zgłoszenie

Dziękujemy!

 

Co dalej?

  1. Otrzymasz od nas maila potwierdzającego zgłoszenie.
  2. Nasz wyspecjalizowany zespół już niedługo skontaktuje się z Tobą i opowie o dalszym procesie współpracy.
  3. W oczekiwaniu na telefon zapraszamy do zapoznania się z naszymi REFERENCJAMI.

KLAUZULA INFORMACYJNA

Informujemy, że:

  1. Administratorem Twoich danych osobowych jest EACTIVE wiemy jak sp. z o.o. sp. k. z siedzibą w Świętej Katarzynie, zarejestrowana pod adresem ul. Główna 26/2, 55-010 Święta Katarzyna, reprezentowaną przez: Michała Kliszczaka - Prezesa Zarządu.
  2. Administrator nie wyznaczył Inspektora Ochrony Danych Osobowych. Wszelkie kwestie dotyczące danych osobowych można kierować na e-mail: ochronadanych@eactive.pl lub pisemnie na adres korespondencyjny: EACTIVE wiemy jak sp. z o.o. sp. k. ul. Aleksandra Zelwerowicza 18 A, 53-676 Wrocław.
  3. Twoje dane będą przetwarzane w celu odpowiedzi na zapytanie oraz przygotowania i przedstawienia propozycji współpracy.
  4. Podstawę prawną przetwarzania Twoich danych osobowych jest art. 6 ust. 1 lit. a RODO, czyli Twoja zgoda na przetwarzanie danych osobowych w jednym lub większej liczbie określonych celów oraz art. 6 ust. 1 lit. b RODO, zgodnie z którym przetwarzanie danych jest konieczne w celu podjęcia działań na żądanie osoby, której dane dotyczą.
  5. Dane osobowe nie będą przekazywane innym odbiorcom.
  6. Twoje dane osobowe będą przetwarzane do czasu cofnięcia wyrażonej zgody bądź złożenia sprzeciwu wobec przetwarzania danych.
  7. Podanie danych osobowych jest dobrowolne, jednak podanie adresu e-mail i numeru telefonu jest niezbędne do obsługi zapytania.
  8. Administrator nie przetwarza Twoich danych osobowych przy użyciu narzędzi do zautomatyzowanego podejmowania decyzji, w tym profilowania.
  9. Przysługuje Ci prawo do żądania od Administratora dostępu do Twoich danych osobowych, ich sprostowania, usunięcia, ograniczenia przetwarzania lub ich przeniesienia.
  10. Przysługuje Ci prawo do wniesienia sprzeciwu wobec przetwarzania Twoich danych, a także prawo do cofnięcia wyrażonej zgody w dowolnym momencie - wycofanie zgody nie ma wpływu na zgodność z prawem przetwarzania, którego dokonano na podstawie Twojej zgody przed jej wycofaniem.
  11. W przypadku uznania, że przetwarzanie przez Administratora danych osobowych narusza przepisy RODO przysługuje Ci prawo do wniesienia skargi do organu nadzorczego (tj. Prezesa Urzędu Ochrony Danych Osobowych).

Więcej informacji na temat zasad przetwarzania i ochrony danych osobowych przez EACTIVE wiemy jak sp. z o.o. sp. k. znajdziesz w naszej Polityce Prywatności, dostępnej tutaj.

Rozumiem