backupWitam już nieco sylwestrowo.

Co prawda w sieci (choćby i na samym Dropboxie) można znaleźć instrukcje jak zainstalować Dropbox’a na systemach Linux (Debian, Ubuntu, Fedora i innych), ale w tym artykule pokażę wam jak szybko wykorzystać to narzędzie do robienia w pełni automatycznych kopii zapasowych swojego serwera, tak aby było to wygodne i, co najważniejsze, działało. Oczywiście do robienia kopii zapasowych z zasady są inne narzędzia, chociażby rsync (dobry, sprawdzony i znany na całym świecie, tyle tylko, że trzeba mieć jeszcze gdzie te kopie wysyłać), ale gdy dla przykładu mamy ograniczony budżet i niezbyt wiele danych (bo jest to mały, prywatny serwer, gdzie trzymamy zaledwie kilka GB danych, powiedzmy stron WWW), to Dropbox sprawdzi się świetnie. A więc do dzieła…

1. Rejestrujemy konto

Na start otrzymamy 2GB, a z tego linka + 500MB, czyli w sumie 2,5GB. Po rejestracji i zalogowaniu się otrzymamy możliwość zwiększenia pojemności swojego konta w darmowej opcji do ok. 16GB poprzez wykonanie kilku kroków: czytanie poradnika, polecanie znajomym, udostępnienie na Facebooku, Twitterze i innych serwisach społecznościowych (ale to już zostawiam do doczytania we własnym zakresie, bo promocje, jeśli tak to można nazwać, mogą z czasem ulec zmianie). Myślę, że znacznej większości z nas 16GB darmowej przestrzeni wystarczy w zupełności, ale gdyby było wprost przeciwnie, istnieje możliwość zwiększania pojemności dalej, tyle że niestety będzie to już płatne.

2. Instalujemy

Wszystkie poradniki w sieci (razem z tym udostępnianym na samym Dropbox’ie) mówią po prostu jakie komendy wpisać, żeby zainstalować konsolową odmianę klienta, ale nie spotkałem się z żadnym, który zwróciłby uwagę na jedną, bardzo ważną rzecz. Jeśli zainstalujesz program z poziomu root, to będziesz z niego korzystał z tego samego poziomu, a biorąc pod uwagę kwestie takie jak bezpieczeństwo, nie warto tego robić. Nie powinniśmy tego robić choćby ze względu na to, że później będziemy mieli problemy z wykonaniem kopii cronem. Tak więc dodajemy sobie nowego użytkownika, który będzie służył tylko do obsługi naszego backupu, na potrzeby tego artykuły nazwę go panpudelko 😀 Zalogowani jako root wpisujemy (w Ubuntu i pochodnych nie zapomnij o sudo przed komendą, albo sudo su i enter!):

adduser panpudelko

Pamiętaj, aby nadać trudne hasło. Następnie logujemy się jako panpudelko:

su panpudelko

Po czym przechodzimy do katalogu domowego:

cd /home/panpudelko/
prościej 😉
cd ~

Dla wersji 32 bitowej użyjemy:

wget -O – „https://www.dropbox.com/download?plat=lnx.x86” | tar xzf –

Dla wersji 64-bitowej natomiast użyjemy:

wget -O – „https://www.dropbox.com/download?plat=lnx.x86_64” | tar xzf –

Uwaga: znak ” ma być zawsze na górze!
Pobrane i wypakowane, teraz uruchamiamy (jeśli jest firewall, trzeba dodać wyjątek dla portu 17500):

~/.dropbox-dist/dropboxd

Po chwili pojawi się link, który należy skopiować z konsoli do dowolnej przeglądarki, a następnie potwierdzić chęć dopisania naszego serwera do konta Dropbox przez zalogowanie się hasłem, które podaliśmy podczas rejestracji. Tym, którzy używają Putty i mają problem ze skopiowaniem linka, podpowiem, że wystarczy go zaznaczyć i kliknąć PPM – jeśli powieli się w konsoli, to nic, ważne, że prosto i szybko skopiował się do windowsowego schowka. Nie ma znaczenia z jakiego komputera wejdziemy na ten link, wejście nie musi być z tego samego IP co montowana maszyna. W końcu w wersji konsolowej z założenia wszystko ma działać bez środowiska graficznego.

Jeśli wszystko przebiegło pomyślnie, synchronizacja już działa. W /home/panpudelko/ pojawił się nam katalog „Dropbox”, a w nim pojawią się synchronizowane pliki.

3. dropbox.py

Służy do zarządzania klientem synchronizacji. Należy go tylko pobrać i umieścić w dowolnym miejscu. Najlepiej i najprościej będzie umieścić go w katalogu domowym naszego użytkownika panpudelko, a więc pobieramy stąd:

https://www.dropbox.com/download?dl=packages/dropbox.py

I nadajemy mu chmod 777.

Aby zapoznać się z funkcjami, uruchamiamy pomoc:

~/dropbox.py help

Uwaga: do poprawnego działania dropbox.py potrzebny jest Python. Może zdarzyć się i tak, że nie ma go jeszcze w naszym systemie, w takiej sytuacji zapytaj Google jak go doinstalować w Twojej dystrybucji – nie obraź się, drogi czytelniku, ale ten artykuł i tak już będzie za długi 🙂

Jeśli wszystko działa, to na razie wyłączmy synchronizację:

~/dropbox.py stop

4. Backup

Można pójść po linii najmniejszego oporu i stworzyć tylko dowiązanie za pomocą ln -s np.:

ln -s /var/www /home/panpudelko/Dropbox

Zakładając oczywiście, że ktoś tam coś trzyma, podałem /var/www, żeby łatwo zobrazować temat. Trzeba się tylko mocno zastanowić, czy takie rozwiązanie ma sens. Musimy pamiętać, że Dropbox wykonuje kopie w czasie rzeczywistym, czyli gdy tylko jakiś plik ulegnie zmianie, jest aktualizowany na naszej chmurze. Jeśli zdarzy się tak, że spali nam się dysk w serwerze bez RAID, to rzeczywiście takie rozwiązanie sprawdzi się, bo Dropbox zwyczajnie straci połączenie z naszym serwerem i będziemy mieli najświeższą wersję wszystkich plików, dosłownie z kilku sekund przed awarią, ale co wtedy, gdy na przykład podczas nieostrożnej pracy sami uszkodzimy lub usuniemy jakiś plik, albo gdy zwyczajnie chcemy przywrócić wersję z wczoraj, bo mamy taki kaprys – wtedy takie rozwiązanie na niewiele się zda. Dlatego najlepiej spakować cały katalog, który przeznaczony jest do backupu, włączyć klienta Dropbox, zsynchronizować dane i wyłączyć klienta. Najlepiej zrobić to w nocy, aby w dzień program nie zjadał niepotrzebnie zasobów 🙂

Dla przykładu chcemy mieć kopię katalogów /var/www/ i /etc/. Logujemy się znowu jako root i uruchamiamy tablicę zadań cron:

crontab -e

(wklejamy i zapisujemy)

15 2 * * * tar -zcvf /home/panpudelko/Dropbox/backup_www.tar.gz /var/www/
10 2 * * * tar -zcvf /home/panpudelko/Dropbox/backup_etc.tar.gz /etc/

Najpierw o godz. 2:10 pakuje się nam /etc/, po kolejnych 5 minutach /var/www/ – trzeba to tak rozplanowywać, aby jeden zdążył zanim zacznie drugi, inaczej może nieźle zamulić system, szczególnie jeśli jest to jakiś mały VPS. Jak widać, paczki lądują od razu w katalogu, który jest synchronizowany. Teraz musimy zadbać o to, aby synchronizacja włączyła się i wyłączyła o odpowiedniej porze. Niech to będzie na przykład od 2:40 do 3:40 rano – pamiętaj, żeby dać serwerowi wystarczająco dużo czasu na wykonanie paczek tar.gz (czas potrzebny na spakowanie plików zależy od ich wielkości oraz mocy obliczeniowej, jaką dysponujemy). Jeśli nie masz zielonego pojęcia ile potrwa pakowanie, to albo daj dużo więcej czasu na zapas, albo sprawdź ile to zajmie wykonując powyższe komendy ręcznie.

Aby włączyć i wyłączyć synchronizację o określonych porach, wykorzystamy dropbox.py 🙂 Logujemy się jako panpudelko i znowu otwieramy, ale tym razem jego crona:

crontab -e

(wklejamy i zapisujemy)

40 2 * * * /home/panpudelko/dropbox.py start /usr/bin/python
40 3 * * * /home/panpudelko/dropbox.py stop /usr/bin/python

Gotowe 🙂 Jeśli mamy ochotę, do kompletu możemy zainstalować jeszcze klienta Dropbox na biurku, czy to na Windowsie, czy na Linuksie, aby pliki kopii pojawiały się automatycznie w naszym komputerze. A jeśli nie czujemy takiej potrzeby, możemy w razie czego pobrać pliki z naszej chmury przez przeglądarkę.

Z góry przestrzegam i ucinam głupie komentarze – nie jest to profesjonalne rozwiązanie do użytku komercyjnego, ale jeżeli ktoś posiada mały serwer dla własnych potrzeb (narzędzia SEO itp.) sprawdzi się świetnie. Druga sprawa – trzeba pamiętać, że jeśli chcemy na przykład zbackupować bazę danych MySQL, należy najpierw wykonać jej zrzut do jednego z katalogów, który będzie kompresowany, albo bezpośrednio do katalogu synchronizowanego 😉