Od ponad miesiąca posiadam mikrokomputer Raspberry PI, na którym zainstalowałem system Raspbmc. Jest to wersja systemu XBMC specjalnie przygotowana dla „malinki”. Generalnie wszystko sprawuje się znakomicie. System startuje z karty SD, filmy znajdują się na dysku sieciowym, który za pośrednictwem samby jest podmontowany w Raspberry’m. Do sterowania używam telefonu komórkowego z Androidem na którym zainstalowałem aplikacją Official XBMC Remote. Zużycie prądu w porównaniu do standardowego PC jest właściwie znikome, bo wynosi tylko 4W w trakcie odtwarzania filmu (PC pobiera blisko 100W).
Wszystko byłoby OK, gdyby nie nagły i najmniej spodziewany … Kernel panic. I co wtedy… Ano w sumie najprostszą sprawą jest sformatowanie karty i zainstalowanie nowego systemu, jednak wiąże się to z utratą danych – ustawień XBMC, a przywrócenie tego jest nieco czasochłonne. Można się jednak przed tym zabezpieczyć w prosty sposób – kopia bezpieczeństwa. Sprawa prosta jednak często nie wiele osób takie rzeczy wykonuje. Mając świadomość, że karty SD nie są tak niezawodne jak twarde dyski postanowiłem zautomatyzować proces tworzenia kopii zapasowych swojej malinki, dzięki temu odtworzenie wszystkich ustawień było tak naprawdę prozaicznie proste. Jak to zrobić? Zacznijmy od koncepcji, gdzie byśmy takie kopie bezpieczeństwa mieli przechowywać… Rozwiązań jest wiele, ja wybrałem jako miejsce docelowe mój dysk sieciowy, jednak nic nie stoi na przeszkodzie, aby był to pendrive podpięty do malinki, czy jakiś inny udział sieciowy znajdujący się w naszej sieci lub nawet gdzieś w świecie.
No to zaczynamy:
Utwórzmy najpierw miejsce pod nasze kopie bezpieczeństwa. W lokalizacji /media/raspberry mam podmontowany katalog z mojego dysku sieciowego, w którym to tworzę nowy katalog backups.
Dodatkowo będę potrzebował pakietu bzip2 do spakowania moich danych. Nie jest to pakiet, który znajduje się w standardowej dystrybucji zatem musimy go doinstalować:
sudo apt-get install bzip2
Skoro mamy już niezbędne ustawienia i pakiety, to przystąpimy do napisania prostego skryptu, którego zadaniem będzie:
- zatrzymać wszystkie niezbędne usługi
- stworzyć kopię bezpieczeństwa katalogu domowego i przegrać ją do ustalonej lokalizacji (nazwa pliku docelowego: home_backup_YYYYMMDDHHIISS.tar.bz2)
- uruchomić wcześniej zatrzymane usługi
- wszystko powinno uruchamiać się automatycznie bez naszej ingerencji i tak by nam nie przeszkadzać.
Stwórzmy zatem skrypt: ~/scripts/home_backup.sh i nadajmy mu prawa wykonywania, a następnie wpiszmy do niego następujący kod:
#!/bin/bash
DATE=`date +%Y%m%d%H%M%S`
echo 'Data wykonania '$DATE
echo 'Stop XBMC'
initctl stop xbmc
echo 'Kopia calego katalogu domowego';
tar -cjf /media/raspberry/backups/home_backup_$DATE.tar.bz2 /home/pi
echo 'Start XBMC'
initctl start xbmc
Myślę, że skrypt jest na tyle prosty i intuicyjny, ze nie trzeba go szczegółowo omawiać. Teraz pozostaje nam jeszcze jedna sprawa zmusić skrypt by uruchamiał się automatycznie. Do tego zadania posłuży nam cron, który w naszej dystrybucji jest domyślnie wyłączony. Jego uruchomienie może odbyć się z poziomu XBMC, korzystając z menu Programy -> Ustawienia.
Teraz pozostało tylko dodanie zadania dla naszego cron’a. Ja stworzyłem sobie następujący plik ~/scripts/crontab.txt
# BACKUP HOME
0 3 * * * cd $HOME/scripts && ./backup.sh
Pamiętaj, że taki plik ostatnią linijkę powinien mieć pustą. Następnie należy go wgrać przy pomocy następującego polecenia
crontab ~/scripts/crontab.txt
Dzięki temu codziennie, a właściwie co noc o godzinie 3 będzie wykonywana kopia bezpieczeństwa naszego całego katalogu domowego.
W przyszłości jeśli będziesz miał problem ze swoją dystrybucją XBMC, wystarczy zainstalować system na nowo (zajmuje to około 20min), a następnie wgrać rozpakowaną zawartość naszej kopii do katalogu domowego (pamiętaj aby uprzednio zatrzymać wszystkie niezbędne usługi). Pamiętajcie „Przezorny zawsze ubezpieczony”. 🙂