Z końcem roku wygasa moje ostatnie konto hostingowe, czyli hosting współdzielony. Zostaną mi tylko konta opłacane bezpośrednio przez niektórych klientów (coś o tym będzie niebawem). Wprawdzie z takim zamiarem nosiłem się od dawna, to cały czas utrzymywałem 2 ostatnie konta tego typu, na których trzymałem „spokojniejsze strony”. Pierwsze konto pożegnałem we wrześniu, za kilka dni pożegnam ostatnie. Nie będę ukrywał, że w podjęciu decyzji pomogła mi firma hostingowa (o tym też będzie niebawem). Niezależnie od powodów, całkowita rezygnacja z hostingu współdzielonego oznacza, że musiała rozwinąć się moja flota serwerów VPS…

Rsync i SSH, czyli VPS2VPS

W pewnym momencie, dzięki procedurom i automatyzacji niektórych czynności konfiguracja kolejnego serwera staje się rutyną, to jednak są pewne zadania, które trzeba wykonać, i które zajmują czas, który w innym przypadku można by przeznaczyć na inne zadania (lub rozrywki ;-)). Stąd w tym gorącym okresie (Święta Bożego Narodzenia + pożegnanie hostingów) postanowiłem maksymalnie zautomatyzować całą operację.

Jeśli dostawca usług pozawala, to najprościej wykonać to za pomocą przygotowanego wcześniej obrazu systemu, dzięki czemu cała operacja nie dość, że jest szybka i wygodna, to raczej na pewno nie spotkają nas w jej trakcie jakieś nieprzewidziane przygody. Tak zazwyczaj robię np. w przypadku serwerów w DigitalOcean.

Tym razem jednak takiej opcji nie mam, bo wprawdzie „ten konkretny dostawca usługi” ogólnie posiada coś takiego, ale tylko w najwyższych planach, z których nie skorzystałem – tym razem postanowiłem rozdzielić strony na kilka mniejszych maszyn, choćby po to by móc je wzajemnie synchronizować. Dlatego postanowiłem skorzystać z programu Rsync, za pomocą którego bezpiecznie (z wykorzystaniem SSH) przeniosłem wszystkie dane między maszynami.

Wykluczeni i wykluczone

Zanim zaczniemy kopiowanie musimy określić katalogi, które wykluczymy z tej operacji, bo nawet w sytuacji takiej jak moja, czyli kopiowanie w obrębie maszyn o identycznej konfiguracji programowo-sprzętowej u tego samego dostawcy inaczej wystąpią problemy.

W moim przypadku standardowa lista wykluczonych katalogów dla VPSa na Debianie wygląda tak:

/boot
/dev
/media
/mnt
/proc
/run
/sys
/tmp

Do tego kilka plików:

/initrd.img
/vmlinuz
/etc/fstab
/etc/network/interfaces
/etc/hostname
/etc/hosts

Do tego zazwyczaj dochodzą jakieś pojedyncze katalogi związane np. z kopiami zapasowymi (BackUp), ale to już każdy z Was musi określić je samodzielnie.

Kopiowanie, czyli synchronizacja

Następnym krokiem jest synchronizacja plików za pomocą programu Rsync (powinien być zainstalowany na obu maszynach), z wykorzystaniem bezpiecznego połączenie przez SSH.

Z racji tego, że pliki będę kopiował na świeżutki serwer zdalny, to mogę skorzystać z takiego polecenia:

sudo rsync -aHlxvz --numeric-ids --progress --delete --exclude=/boot/* --exclude=/dev/* --exclude=/media/* --exclude=/mnt/* --exclude=/opt/* --exclude=/proc/* --exclude=/run/* --exclude=/sys/* --exclude=/tmp/* --exclude=/initrd.img --exclude=/vmlinuz --exclude=/etc/fstab --exclude=/etc/network/interfaces --exclude=/etc/hostname --exclude=/etc/hosts /* -e ssh [email protected]_IP_docelowego_serwera:/

W przypadku, gdyby serwer docelowy był już po wstępnej konfiguracji, i np. usługa SSH działa na innym porcie niż domyślny (zalecam), to polecenie trzeba lekko zmodyfikować, dodając numer portu:

sudo rsync -aHlxvz --numeric-ids --progress --delete --exclude=/boot/* --exclude=/dev/* --exclude=/media/* --exclude=/mnt/* --exclude=/opt/* --exclude=/proc/* --exclude=/run/* --exclude=/sys/* --exclude=/tmp/* --exclude=/initrd.img --exclude=/vmlinuz --exclude=/etc/fstab --exclude=/etc/network/interfaces --exclude=/etc/hostname --exclude=/etc/hosts /* -e "ssh -p PORT" [email protected]_IP_docelowego_serwera:/

Gdy oprócz zmiany domyślnego portu dla połączenia SSH do docelowego serwera łączymy się dodatkowo z wykorzystaniem pliku certyfikatu (również zalecam), do polecenia należy dodać kolejny parametr:

sudo rsync -aHlxvz --numeric-ids --progress --delete --exclude=/boot/* --exclude=/dev/* --exclude=/media/* --exclude=/mnt/* --exclude=/opt/* --exclude=/proc/* --exclude=/run/* --exclude=/sys/* --exclude=/tmp/* --exclude=/initrd.img --exclude=/vmlinuz --exclude=/etc/fstab --exclude=/etc/network/interfaces --exclude=/etc/hostname --exclude=/etc/hosts /* -e "ssh -p PORT -i /ścieżka/do/klucza/prywatnego" [email protected]_IP_docelowego_serwera:/

Po tej operacji drugi serwer powinien pod względem konfiguracji odpowiadać serwerowi źródłowemu, z którego kopiowaliśmy pliki. Oczywiście w wielu przypadkach nie obejdzie się bez kilku ręcznych korekt, ale to już zależy od konfiguracji serwera (serwerów).

Indywidualne zabezpieczenia

Ze względów bezpieczeństwa zalecam by na „sklonowanych maszynach” dokonać zmiany haseł dla poszczególnych użytkowników, oraz – jeśli korzystacie – wygenerować nowe klucze (certyfikaty) SSH, oraz tokeny dla uwierzytelnienia dwuskładnikowego (2FA).

Reszta ustawień – tak jak napisałem w jednym z poprzednich akapitów – zależy od Waszej indywidualnej konfiguracji źródłowej.

(!) Zgłoś błąd na stronie
Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!
Spodobał Ci się artykuł? Zapisz się do naszego Newslettera - ZERO SPAMu, same konkrety, oraz dostęp do dodatkowych materiałów przeznaczonych dla subskrybentów!
Na podany adres e-mail otrzymasz od nas wiadomość e-mail, w której znajdziesz link do potwierdzenia subskrypcji naszego Newslettera. Dzięki temu mamy pewność, że nikt nie dodał Twojego adresu przez przypadek. Jeśli wiadomość nie przyjdzie w ciągu najbliższej godziny (zazwyczaj jest to maksymalnie kilka minut) sprawdź folder SPAM.
Janusz i Janusz zapisali się do Newslettera WebInsider.pl i... sobie chwalą
WebInsider poleca księgowość wFirma
WebInsider korzysta z VPSa w HitMe.pl
WebInsider poleca VPSy DigitalOcean
WebInsider poleca serwis Vindicat
Napisz komentarz
wipl_napisz-komentarz_01Jeśli informacje zawarte na tej stronie okazały się pomocne, możesz nam podziękować zostawiając poniżej swój komentarz.

W tej formie możesz również zadać dodatkowe pytania dotyczące wpisu, na które – w miarę możliwości – spróbujemy Ci odpowiedzieć.
Linki partnerskie
Niektóre z linków na tej stronie to tzw. „linki partnerskie”, co oznacza, że jeśli klikniesz na link i dokonasz wymaganej akcji (np. zakup/rejestracja) możemy otrzymać za to prowizję. Pamiętaj, że polecamy tylko te produkty i usługi, z których sami korzystamy, i uważamy, że są tego na prawdę warte… :-)
Znaki towarowe i nazwy marek
W niektórych wpisach (oraz innych miejscach na stronie) mogą być przedstawione/użyte znaki towarowe i/lub nazwy marek, które stanowią własność intelektualną tych podmiotów, a zostały użyte wyłącznie w celach informacyjnych.
Janusz i Janusz zapisali się do Newslettera WebInsider.pl i... sobie chwalą