Kopia zapasowa konta hostingowego na Dropbox

W tym materiale opiszę, jak w szybki sposób można zrobić sobie kopię plików strony www i jej bazy danych na dropbox. Myślę, że taka, praktycznie darmowa forma backupu przyda się właścicielom VPS’ów i kont z dostępem do shella.

Backup na www, jak to działa?

Całość to kilka prostych skryptów, gdzie najważniejszy to Dropbox Uploader wysyłający wskazane pliki do naszego dropboksa. Drugi ma za zadanie wykonać kopię baz danych, działających na silniku mysql/mariadb. Trzeci plik tworzy archiwum z plików strony www. Czwarty skrypt jest cyklicznie uruchamiany przez cron’a i uruchamia w odpowiedniej kolejności trzy wyżej opisane.

Instalacja i konfiguracja skryptu Dropbox-Uploader

Skrypt Dropbox Uploader znajdziesz na Githubie w tym miejscu: https://github.com/andreafabrizi/Dropbox-Uploader. Instalacja sprowadza się praktycznie do skopiowania skryptu, można to zrobić na dwa sposoby:

  1. Za pomocą git, przechodzimy do katalogu w którym chcemy by znalazł się skrypt i klonujemy repozytorium:

2. Ręcznie kopiujemy skrypt:

Czy zrobimy to 1 czy 2 metodą, na koniec musimy nadać uprawnienia do wykonywania, czyli:

Konfiguracja Dropbox Uploadera rozpocznie się automatycznie podczas pierwszego uruchomienia, wpisujemy w terminalu:

No i mamy dokładną instrukcję, co należy zrobić. W skrócie: trzeba otworzyć dropboksa w przeglądarce i zalogować się do niego, następnie przechodzimy pod adres https://www.dropbox.com/developers/apps, gdzie stworzymy sobie aplikację :):

Jeśli nie masz konta na Dropboksie, załóż je z tego linku >> KONTO DROPBOX <<. Zamiast standardowych 2GB dostaniesz o 500MB więcej, ja również.

Wciskamy [Create app], w następnym oknie wybieramy Dropbox API, a dalej pozwalamy na dostęp do pojedynczego folderu lub do całego dropboksa. Ja ze względów bezpieczeństwa i specyfiki zadań jakie będą wykonywane, wybieram dostęp do pojedynczego katalogu. Ustalam nazwę aplikacji na ‚backup_lemp’ i tu uwaga, nazwa musi być unikatowa:

Po stworzeniu aplikacji, pokaże się okno jak niżej, klikamy tam Generate access token:

i to co otrzymamy kopiujemy do naszego dropbox uploadera:

Nasza konfiguracja została zapisana w folderze, w którym jest skrypt, pod nazwą dropbox_uploader, plik jest ukryty. Na naszym dropboksie pojawił się nowy folder Apps, a w nim folder z nazwą aplikacji, która ma do niego dostęp:

Od teraz możemy używać skryptu do wysyłania, ściągania, usuwania plików i katalogów, o czym niżej, ale najpierw skrypty do tworzenia backupu.

Skrypty do backupu baz danych i plików stron www

Mamy już czym wysyłać backupy, ale nie mamy samych backupów. W internecie można znaleźć mnóstwo mniej lub bardziej rozbudowanych skryptów bo backupowania. Ja na początek zbudowałem sobie dwa proste – do przygotowywania archiwum plików stron internetowych:

Do archiwum dodawana jest data. Wynik działania zostanie zapisany w katalogu backup, który jest w moim katalogu domowym. Skrypt zapisałem w pliku pod nazwą files_backup i dodałem uprawnienia do wykonywania (chmod +x files_backup), a uruchomienie wygląda tak:

Drugi skrypt wykonuje kopie baz danych, których silnikiem jest MariaDB (MySQL), wygląda on tak:

Kopie wykonuje użytkownik nazwa_usera (część składni -u nazwa_usera). Plik ze zrzutem bazy również ma dodawaną datę. Hasło użytkownika jest zapisane w pliku .auth.cnf, który wygląda tak:

Skrypt zapisałem pod nazwą sql_backup i nadałem mu prawa do wykonywania (chmod +x sql_backup). Uruchomienie to tradycyjnie:

Efektem działania tych 2 skryptów są archiwa z plikami oraz kopie baz danych:

I to już jest materiał do wysłania na dropboksa.

Wysyłanie plików na Dropbox za pomocą dropbox uploader

Pełna lista komend, obsługiwanych przez dropbox uploader jest dokładnie opisana na githubie, jeszcze raz link -> https://github.com/andreafabrizi/Dropbox-Uploader

W celu wysłania plików z lokalnej maszyny w chmurę, interesuje nas komenda upload, składnia wygląda tak:

Chcę wysłać zawartość mojego katalogu z kopiami, do folderu głównego aplikacji na dropboksie, więc:

Efekt działania w terminalu:

I po chwili pliki są na dropboksie:

Jeśli jakieś pliki się powtarzają, to nie zostaną wysłane. Jeśli powtarzają się nazwy, ale zawartość jest różna, to te na dropboksie zostaną nadpisane, chyba że użyjemy parametru -s (skip).

No to ręcznie już wiemy jak to zrobić, to teraz prosta automatyzacja.

Automatyzacja backupu

Najprostszy sposób na automatyzację w linuksie to zastosowanie crona. Trzeba jeszcze jakoś usystematyzować wcześniej pokazane skrypty i nasz cel. Moje założenia:

  1. Wykonuję kopię baz i plików raz w tygodniu i wysyłam do dropboksa,
  2. Lokalnie trzymam pliki nie starsze niż 31 dni.

Punkt 1 widzę jako skrypt, który usunie pliki starsze niż miesiąc, zrobi backup i wyśle go na dropboksa w godzinach małego ruchu na stronie. Skrypt wygląda tak:

I teraz dodajemy go do crona, Czyli w terminalu wpisujemy crontab -e i dodajemy linijkę:

Przy takim założeniu i konfiguracji należy pilnować miejsca na dropboksie, bo stamtąd pliki nie są usuwane. To też pewnie da się zautomatyzować (dropbox_uploader ma opcje wylistowania i usuwania plików na dropboksie). Może ktoś z czytelników pokusi się o popełnienie odpowiedniego skryptu? ;).

Dodaj komentarz

This site uses Akismet to reduce spam. Learn how your comment data is processed.