2013-01-04

Backupy na RPI

Jest takie powiedzenie
"Prawdziwi twardziele nie robią backupów"
ja wolę twardzielem nie być i backup to jednak przydatna rzecz. 

Źródło: memegenerator.net

Jako, że na moim RPI coraz więcej kodu i to nie tylko ściąganego z internetu, lecz także "autorskiego" postanowiłem zająć się tym tematem. 

Moje założenia:
* darmowa przestrzeń w internecie 
* niezbyt skomplikowany sposób uploadu
* możliwość korzystania pod Raspbian
* małe zużycie zasobów

Wybór padł na Dropbox, który standardowo udostępnia 2GB, a jak się postaramy (niektóre kroki są naprawdę łatwe) nawet 18GB. Poza tym ma całkiem ciekawe możliwości.
Źródło: dropbox.com

Mi 2GB zupełnie wystarczą, jako że chcę backupować jedynie pliki tekstowe (skrypty, konfiguracja itp.).

Namierzyłem fajny skrypt, który umożliwia pełną obsługę pod RPI (napisany jest w bashu):
http://www.andreafabrizi.it/?dropbox_uploader

Ściągamy więc skrypt z repozytorium Andrei:
git clone https://github.com/andreafabrizi/Dropbox-Uploader.git ~/git_dropbox
Ja dodatkowo skopiowałem skrypt do /usr/bin, żeby uruchamiać go z dowolnego miejsca.
sudo cp ~/git_dropbox/dropbox_uploader.sh /usr/bin
Musimy się upewnić, że mamy zainstalowany pakiet curl:
sudo apt-get install curl
Uruchamiamy skrypt:
dropbox_uploader.sh
Przy pierwszym uruchomieniu nastąpi rejestracja w dropboxie, więc postępujemy zgodnie z instrukcjami (linki tworzące zasoby Apps możemy uruchamiać na dowolnym komputerze).
Skrypt poleci nam np. wejść na
https://www2.dropbox.com/developers/apps
gdzie należy stworzyć nową aplikację wg podanych informacji.

Mamy więc możliwość robienia backupów na Dropbox, bezpośrednio z konsoli.

Jakie są opcje skryptu:
# dropbox_uploader.sh

Dropbox Uploader v0.11.3

Andrea Fabrizi - andrea.fabrizi@gmail.com

Usage: /usr/bin/dropbox_uploader.sh COMMAND [PARAMETERS]...

Commands:

  upload   [LOCAL_FILE]  

  download [REMOTE_FILE] 

  delete   [REMOTE_FILE]

  list     

  info

  unlink

For more info and examples, please see the README file.
Sprawdzamy status
# dropbox_uploader.sh info
Dropbox Uploader v0.11.3
 > Getting info...
Name:   RB PL
UID:    XXXXXXXX
Email:  email@example.com
Quota:  2688 Mb
Used:   0 Mb
Free:   2687 Mb
Testowo backupujemy dowolny plik:
# dropbox_uploader.sh upload README
 > Uploading README to /README...
######################################################################## 100.0%
 > DONE
I sprawdzamy listę plików:
# dropbox_uploader.sh list
 > Listing "/"... DONE
 [F] README
Po testach stworzyłem prościutki skrypt backupujący moje pliki, tą stronkę oraz etc
# cat /projekty/makeBackup.sh
#!/bin/bash

DATA=`date +%Y%m%d`
PLIK_BKP="/tmp/$DATA.backup.tar.bz2"
DIRS="/projekty /etc /blog_backup"

/home/pi/blogspot_backup.sh

sudo tar cjf $PLIK_BKP $DIRS

dropbox_uploader.sh upload $PLIK_BKP

if [ $? = 0 ]
then
 rm -rf /blog_backup/*
 sudo rm -f $PLIK_BKP
fi
upewniłem się, że /etc/sudoers wygląda w porządku (tzn że komendę sudo możemy uruchomić bez pytania o hasło):
pi ALL=(ALL) NOPASSWD: ALL
lub bardziej bezpieczne (listing dozwolonych komend), np.
pi ALL=(ALL) NOPASSWD: /sbin/halt, /sbin/reboot, /projekty/makeBackup.sh

i wrzuciłem do crona
11 22 * * * pi /projekty/makeBackup.sh
czyli codziennie o 22:11 robiony będzie backup mojego katalogu oraz /etc i będzie wysyłany na Dropbox.
Przy okazji wspomnę, że dzięki Dropbox możemy pracować niejako w (popularnej ostatnio) chmurze. Ma on klienta dla Windowsa, MACa, Linuxa więc tak naprawdę możemy utworzyć sobie zasoby, które będą dostępne gdziekolwiek się ruszymy.

5 komentarzy: