Backup to Dropbox

skachat-dropbox-04     Deseori se intimpla ca avem nevoie sa facem copii de rezerva, fie a bazei de date, fie a anumitor fisiere.
In dependenta de gravitatea pierderii informatiei, fiecare in parte decide cand, unde, cum face copii de rezerva. Varianta ideala este de a pastra 3 copii in locatii geografice diferite, insa fiecare are “planul” sau de backup/recovery.

In acest post, astazi voi descrie cum putem face un backup planificat direct pe Dropbox. Asemanator poate fi creata procedura de backup pe un server S/FTP sau cloud de genul OneDrive sau Google Drive, insa cu ajustarile necesare in dependenta de tipul lagaturii cu serviciile cloud.

Dropbox ofera API pentru accesarea serviciilor sale, ceia ce face comod de a lucra sub linia de comanda direct. Pentru a nu inventa bicicleta, pe internet se gaseste deja un script care permite lucrul cu dropbox.

Mai intii de toare ne asiguram ca avem instalat pachetul curl, daca nu, instalam:
(RedHat based OS)
# yum install curl

sau
(Debian Based OS)
# apt-get install curl

Copiem scriptul si dam drepturi de executie

$ wget https://raw.github.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh
$ mv ./dropbox_uploader.sh /usr/local/bin/dropbox_uploader.sh
$ chmod +x
/usr/local/bin/dropbox_uploader.sh

Ne logam in contul Dropbox si mergem in sectiunea Development unde cream o aplicatie:

1.drb0

2.drb23. Dupa crearea cu succes, aplicatia dropbox ne va returna 2 Application Key, de ele vom avea nevoie pentru a seta clientul pe serverul Linux.

drb1

4. Acum e momentul sa pornim scriptul copiat anterior:
$ ./dropbox_uploader.sh

ca rezultat, ca prima data rulat vom vedea un output asemanator care va cere sa introducem APP KEY si SECRET KEY, (care au fost generate anterior de pagina dropbox):
drb4

5. Dupa ce am raspuns la toate “intrebarile” scriptului, primim un URL de autentificare pe dropbox.

drb5

6. La acest pas terminam cu configurarea Client (Linux) – Dropbox.

Pentru verificarea conexiunii cu Dropbox executam:

$ ./dropbox_uploader.sh info
Ca output vom vedea informatia despre starea contului:

 

Pentru a vedea lista de comenzi executam scriptul fara nici o optiune.
$ ./dropbox_uploader.sh


Trecem la crearea scriptului de backup si upload:

Eu am creat 2 scripturi separate:
1. Backup a bazelor de date din MySQL
2. Backup a directoriilor care contin pagini web din /var/www/html/ (in acest directoriu, avem site1 site2 site3 etc.)

Script1.sh

 

Script2.sh

 

 

Scripturile sint create, acum avem nevoie sa le programam sa se execute la o anumita ora intr-o anumita zi.
Spre exemplu noi nu avem nevoie sa facem backup in fiecare zi la mapele cu website-uri, asa cum ele pot fi modificate rar, sau foarte rar.
In schimb baza de date se populeaza cu informatie noua foarte des, deci bazele de date sint cu mult mai critice in cazul unui hack, sau pierdere de informatie. DIn aceasta cauza setam backup-l pentru bazele de date in fiecare noapte spre ex. la ora 3 a.m. (Atunci cand serverul este sub load minim), Iar pentru paginile web o data pe saptamina asa cum continutul se schimba mai rar.

Pentru a pune ceva in scheduler – cron executa:

# crontab -e
in care adaugam timpul dorit de executare urmat de comanda care se va executa

In cazul nostru lista din crontab va arata in felul urmator:

#Pentru DB backup in fiecare zi la ora 3 a.m.
* 3 * * *  /bin/bash /scripts/script1.sh

#Pentru Web Site Backup, in fiecare simbata la ora 2 a.m.
* 2 * * */5  /bin/bash /scripts/script2.sh

Unde:
*/5 – in asa mod se indica executarea repetata. In cazul dat – in fiecare simbata.