Ktoś kiedy powiedział, że “ludzie dzielą się na tych co robią backup i na tych co dopiero będą go robić” .

Cel

Wykonanie kopi dla:

  • baza SQLITE DOMOTICZ
  • katalog skryptów DOMOTICZ
  • katalog www DOMOTICZ (nie wiem po co , ale widziałem, że inni to robią)
  • inne katalogi które mogą okazać się przydatne

Kopia taka powinna zostać skompresowana i przesłana za pomocą ftp na wskazany adres. U mnie to będzie dysk SYNOLOGY który właśnie pełni rolę rodzinnego serwera backupowego.

Po kilku próbach skomponowałem skrypt poniższy skrypt:


#!/bin/bash

# parametry

ftpHost="192.168.1.100"
ftpUser="nazwauzytkownika"
ftpPass="haslouzytownika"
ftpDestDirectory="backup/"

domoticzHost="192.168.1.101"
domoticzPort="8080"

domoticzDirectory="/home/pi/domoticz"
domoticzDirectoryWww="$domoticzDirectory/www"
domoticzDirectoryScripts="$domoticzDirectory/scripts"

scriptDirectory="/home/pi/@scripts"

now=$(date '+%Y%m%d%H%M%S')
backupDirectory="/tmp/backup_$now"
backupFile="/tmp/backup_raspberry_$now.tar"

echo "zakładam katalog dla kopii $backupDirectory"
mkdir $backupDirectory

echo "backup - domoticz db ..."
curl -s http://$domoticzHost:$domoticzPort/backupdatabase.php > $backupDirectory/domoticz.db

echo "backup - domoticz pliki (www) ... "
cp -r $domoticzDirectoryWww $backupDirectory

echo "backup - domoticz pliki (skrypty) ... "
cp -r $domoticzDirectoryScripts $backupDirectory

echo "backup - skrypty ..."
cp -r $scriptDirectory $backupDirectory

echo "pakowanie ..."
tar -zcvf $backupFile $backupDirectory

echo "ftp transfer ..."
curl -s --disable-epsv -v -T"$backupFile" -u"$ftpUser:$ftpPass" "ftp://$ftpHost/$ftpDestDirectory"

echo "usuwam tmp pliki ..."
rm -r $backupDirectory
rm $backupFile

curl --silent -u """pushbulletapikey"":" -d type="note" -d body="backup został wykonany. (f:$now)" -d title="raspinfo" 'https://api.pushbullet.com/v2/pushes'

 

W ostatniej linii skryptu wysyłam wiadomość o wykonaniu backupu za pomocą wcześniej skonfigurowanego pushbulleta.

Jak go skonfigurować pisałem TU.

Aby uruchomić skrypt musimy mu jeszcze nadać uprawnienia poprzez wydanie komendy:

chmod +x backup.sh

(mój plik nazywa się backup.sh)

Na koniec aby to wszystko miało sens musimy włączyć harmonogram odpalania skryptu.

Realizujemy to poprzez wrzucenie odpowiedniego wpisu do crontaba. Tak więc:

1. Uruchamiamy crontaba:

crontab -e

2. Dodajemy nowy wpis:

0 3 * * 1 /home/pi/@scripts/backup.sh

Czyli będziemy odpalać skrypt w poniedziałki o 3:00.

Więcej o harmonogramie w crontabie możecie znaleźć TU