Datensicherung und weitere Optimierungen
Datensicherung einrichten
Jeden Abend soll eine Sicherung der SBFspot- und der 123solar-Daten per rsync und Public-Key-Authentifizierung auf die OMV-NAS erfolgen. Hierzu wird mit ssh-keygen die entsprechenden Key-Files erstellt, die anschließend im Verzeichnis /home/pi/.ssh zur Verfügung stehen.
LFTP installieren
> sudo apt-get install lftp
SSH-Key erstellen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/pi/.ssh/id_rsa): id_mpsol
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_mpsol.
Your public key has been saved in id_mpsol.pub.
The key fingerprint is:
SHA256:8hnTm9iPyqZF54R2TEr1RJFkLtMnVJm0fSUY2DpPSIA pi@himbeerix
The key's randomart image is:
+---[RSA 2048]----+
| ....=OB+o.|
| E .oB+ o+.|
| ..+o= o o|
| . *+o.o .|
| . S *+ |
| = @ o. |
| = = |
| o. o |
| .oo.. . |
+----[SHA256]-----+
pi@himbeerix:~ $
pi@himbeerix:~ $ ls -l .ssh
insgesamt 12
-rw------- 1 pi pi 1823 Jan 17 10:44 id_mpsol
-rw-r--r-- 1 pi pi 394 Jan 17 10:44 id_mpsol.pub
-rw-r--r-- 1 pi pi 222 Jan 17 10:45 known_hosts
SSH-Key auf der Konsole ausgeben und markieren (in die Zwischenablage kopieren)
pi@himbeerix:~ $ ssh-keygen -e -f ~/.ssh/id_mpsol.pub
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "2048-bit RSA, converted by pi@himbeerix from OpenSSH"
AAAAB3NzaC1yc2EAAAADAQABAAABAQC9W9XdPuAygylOWy0MCbkPTm/w5RtHusGFveYT3u
kngDCa1X/SUXVwGg2Equ+AUVohnr9UCbRCnkiB8aM/n4sP2hiACf/Bwvk0Ujam07/GPkSE
xygYWbe5rZrZy……………….Vzzu+9XMi+CSHv2u………………7yOcPYP+wlq
DkPiTp/bbgBFdaFal…………………….pRLwWj0lvJtJFAQtopDAxOBY1ZqKAezCt
CJJ/sL6vuOW9oWkEdDIchi8Skwge………………….DW+ZcyVOeSXzt55/XZgUyThr
GeinvqdLH9bOfNRitqawin
---- END SSH2 PUBLIC KEY ----
pi@himbeerix:~ $
.... jetzt den SSH-Key markieren und per cut&paste beim user „mpsol“ auf der OMV-NAS eintragen und speichern.

Zugriff auf OMV via SSH-Key testen
Linux OMV 4.14.0-0.bpo.3-amd64 #1 SMP Debian 4.14.13-1~bpo9+1 (2018-01-14) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Feb 9 10:20:14 2020 from 192.168.178.6
MPSOL@OMV:~$ exit
Abgemeldet
Connection to 192.168.178.12 closed.
pi@himbeerix: ~ $
pi@himbeerix: ~ $ ssh -i /home/pi/.ssh/id_mpsol 'mpsol@192.168.178.12'
Linux OMV 4.19.0-0.bpo.9-amd64 #1 SMP Debian 4.19.118-2+deb10u1~bpo9+1 (2020-06-09)
x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/
copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
permitted by applicable law. Last login: Mon Jan 18 11:52:19 2021 from 192.168.178.6.
pi@himbeerix: ~ $
WakeOnLan einrichten
sudo apt-get upgrade
sudo apt-get install etherwake
WOL testen (OMV_MAC: 90:2B:34:8B:B1:E0, OMV_IP:192.168.178.12)
sudo etherwake 90:2B:34:8B:B1:E0
. . .
. . . ca.1 Minute warten
. . .
ping 192.168.178.12
PING 192.168.178.12 (192.168.178.12) 56(84) bytes of data.
From 192.168.178.6 icmp_seq=9 Destination Host Unreachable
From 192.168.178.6 icmp_seq=10 Destination Host Unreachable
From 192.168.178.6 icmp_seq=11 Destination Host Unreachable
^C
--- 192.168.178.12 ping statistics ---
14 packets transmitted, 0 received, +3 errors, 100% packet loss, time 550ms
pipe 4
pi@himbeerix: ~ $ sudo etherwake 90:2B:34:8B:B1:E0
pi@himbeerix: ~ $ ping 192.168.178.12
PING 192.168.178.12 (192.168.178.12) 56(84) bytes of data.
64 bytes from 192.168.178.12: icmp_seq=1 ttl=64 time=0.592 ms
64 bytes from 192.168.178.12: icmp_seq=2 ttl=64 time=0.136 ms
64 bytes from 192.168.178.12: icmp_seq=3 ttl=64 time=0.215 ms
64 bytes from 192.168.178.12: icmp_seq=4 ttl=64 time=0.232 ms
64 bytes from 192.168.178.12: icmp_seq=5 ttl=64 time=0.153 ms
64 bytes from 192.168.178.12: icmp_seq=6 ttl=64 time=0.142 ms
^C
--- 192.168.178.12 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 231ms
rtt min/avg/max/mdev = 0.136/0.245/0.592/0.159 ms
pi@himbeerix: ~ $ ^C
pi@himbeerix: ~ $
Sicherungsscript erstellen
nano bkup_mpsol.sh
rsync Optionen
| -a, --archive | archive modus; gleich wie -rlptgoD (no -H,-A,-X) |
| -v, --verbose | zeigt während des Synchronisierens alle ausgeführten Schritte an |
| -z, --compress | aktiviert die Komprimierung für die Datenübertragung |
| -e, --rsh=COMMAND | definiert die zu benutzende remote shell |
| --numeric-ids | damit die UID des Besitzers nicht an den entfernten Rechner angepasst wird |
| -n, --dry-run | simuliert nur was passieren würde ("dry run") |
Script bkup_mpsol.sh
#!/bin/bash
#
####################################################################
# -- bkup_mpsol.sh ---
# script um die mpsol-Daten auf OMV-NAS zu sichern
#
####################################################################
#OMV_LOG=/home/pi/logs/bkup_`date +%Y-%m-%d`.log
LOGFILE=/home/pi/logs/mSol`date +%Y-%m-%d`.log
RSCFILE=/home/pi/logs/mSolrsc`date +%Y-%m-%d`.log
date >> $LOGFILE
echo "Starte Script bkup_mpsol.sh" >> $LOGFILE
OMV_MAC=90:2B:34:8B:B1:E0
OMV_IP=192.168.178.12
OMV_ZIEL=mpsol@192.168.178.12
start=$(date +%s)
diff=0
max=300
echo "OMV aufwecken ...." >> $LOGFILE
sudo etherwake $OMV_MAC
sudo etherwake -b $OMV_MAC
while ! ping -c1 $OMV_IP &>/dev/null ;
do
if [ $diff -eq 0 ];
then
echo "OMV ist offline. Warte max. 5 Minuten..." >> $LOGFILE
fi
echo -ne " ."$diff >> $LOGFILE
diff=$(($(date +%s) - start))
if [ $diff -ge $max ];
then
break ;
fi
done
ping $OMV_IP -c2
if [ $? -eq 0 ]
then
echo -e "\nOMV ist jetzt online: " >> $LOGFILE
date >> $LOGFILE
fi
### warte 10 Sec. bis OMV-Dienste sicher gestartet sind
echo " warte 10 Sec. bis OMV-Dienste sicher gestartet sind" >> $LOGFILE
sleep 10
if [ $diff -lt $max ];
then
#date >> $LOGFILE
## raspi /home sichern
echo "Starte Sicherung home:(/home)" >> $LOGFILE
rsync --log-file=$RSCFILE --numeric-ids -Oavze "ssh -i /home/pi/.ssh/id_mpsol" /home/ $OMV_ZIEL:/srv/dev-disk-by-label-RAID1/MPSOL/_raspi/home/ >> $LOGFILE
## raspi var/www sichern
echo "Starte Sicherung www:(/var/www)" >> $LOGFILE
rsync --log-file=$RSCFILE --numeric-ids -Oavze "ssh -i /home/pi/.ssh/id_mpsol" /var/www/ $OMV_ZIEL:/srv/dev-disk-by-label-RAID1/MPSOL/_raspi/var/www/ >> $LOGFILE
## /var/log/sbfsot.3 sichern
echo "Starte Sicherung sbfspot-logs:(/var/log/sbfspot.3)" >> $LOGFILE
rsync --log-file=$RSCFILE --numeric-ids -Oavze "ssh -i /home/pi/.ssh/id_mpsol" /var/log/sbfspot.3/ $OMV_ZIEL:/srv/dev-disk-by-label-RAID1/MPSOL/_raspi/var/log/sbfspot.3/ >> $LOGFILE
else
echo "Zeitüberschreitung, OMV konnte nicht hochgefahren werden. Fehler." >> $LOGFILE
exit 1
fi
## rsync-logfile ans Log-file anhaengen
cat $RSCFILE >> $LOGFILE
echo "Backup beendet" >> $LOGFILE
date >> $LOGFILE
echo "Ende Script bkup_mpsol.sh " >> $LOGFILE
echo -e " \n--------------\n " >> $LOGFILE
Script ausführbar machen und testen:
Script bkup_mpsol.sh in crontab eintragen
crontab anzeigen
*/5 6-23 * * * /usr/local/bin/sbfspot.3/daydata
55 05 * * * /usr/local/bin/sbfspot.3/monthdata
*/5 6-22 * * * sleep 15 && /home/pi/scripts/m123Upload.sh
30 22 * * * /home/pi/scripts/bkup_mpsol.sh
0 1 * * * find /var/log/sbfspot.3/ -name "*.log" -mtime +7 -delete
0 1 * * * find /home/pi/smadata/logs/ -name "*.log" -mtime +7 -delete
0 1 * * * find /home/pi/smadata/ -name "*.csv" -mtime +7 -delete
0 1 * * * find /home/pi/solarlog/ -name "*.*" -mtime +7 -delete
0 1 * * * find /home/pi/logs/ -name "*.log" -mtime +7 -delete
Hier gehts weiter zu Ertragsdaten zusätzlich im Solarlog-Format bereitstellen