Hauptmenü

Backup auf NAS

Begonnen von wthiess, 14 Mai 2018, 22:31:41

Vorheriges Thema - Nächstes Thema

Wernieman

Ja..... probiere es erstmal manuell zu verbinden und zu erreichen, das er eben NICHT root gehört ....
Andererseits ... könntest Du auch einfach mal die Rechte vor dem Verbinden etwas "erweitern" (chmod) .... Du willst ja erreichen, das fhem schreiben kann ...

Ansonsten einfach mal mit den mount-Parametern "spielen" .. geht aber manuell einfacher als automatisch ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

josburg

Hallo,

ich habe mir mal die Mühe gemacht und diverse Möglichkeiten der Datensicherung / Backup von FHEM aufzuschreiben und zu dokumentieren.
Vielleicht hilft Dir diese Doku weiter:
http://raspberrypi.crmvy3qiisdstf8c.myfritz.net/wordpress_neu/?p=507

Viele Grüße
Jens

sash.sc

#47
Hallo zusammen.

Ich habe mein System komplett neu aufgesetzt. Habe entsprechend ein Update von Raspbian auf Buster am laufen.
Vorher hat das Backup, eingerichtet nach meintechblog, ohne Probleme funktioniert.

Habe nachdem aufsetzen des Systems dann FHEM aus dem letzten Backup zurück kopiert, rechte vergben, etc. FHEM läuft soweit.
Habe jetzt aber festgestellt, dass das Backup nicht läuft.

Hat sich bei Buster etwas geändert ?


#!/bin/bash

mountIp="192.168.2.126"
mountDir="Backup"
mountUser="xxxx"
mountPass="xxxxx"
mountSubDir="FHEM"
localMountPoint="/Q/backup"

#optional
backupsMax="60"
localBackupDir="/backup"
pushoverUser="xxxxx"
pushoverToken="xxxxx"
###################################

perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Backup info backup starting now"

if [ ! -e "$localBackupDir" ]
then
echo "$localBackupDir wird erstellt"
mkdir -p "$localBackupDir"
else
echo "$localBackupDir bereits vorhanden"
fi

tar --exclude=backup -cvzf "/$localBackupDir/$(date +%y%m%d_%H%M%S)_fhem_backup.tar.gz" "/opt/fhem" &>/dev/null

if ! ping -c 1 $mountIp
then
echo "$mountIp nicht erreichbar, stop"
perl /opt/fhem/fhem.pl 7072 "set FHEM.Backup error"
perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Backup info $mountIp not found"
exit
else
echo "$mountIp erreichbar"
fi

localIp=$(hostname -I|sed 's/\([0-9.]*\).*/\1/')

if [ ! -e "$localMountPoint" ]
then
echo "$localMountPoint wird erstellt"
mkdir -p "$localMountPoint"
else
echo "$localMountPoint bereits vorhanden"
fi

if [ "$(ls -A $localMountPoint)" ]
then
echo "$localMountPoint nicht leer, kein Mounten notwendig"
else
echo "$localMountPoint leer, Mounten starten"
vorhanden="0"
while read line
do
mountComplete="//$mountIp/$mountDir $localMountPoint cifs username=$mountUser,password=$mountPass,iocharset=utf8,sec=ntlm 0 0"
echo "mountComplete: $mountComplete"
if [ `echo "$line" | grep -c "$mountComplete"` != 0 ]
then
echo "/etc/fstab: Eintrag bereits vorhanden: $mountComplete"
vorhanden="1"
break
fi
done < "/etc/fstab"
if [ "$vorhanden" != "1" ]
then
echo "/etc/fstab: Eintrag wird ergänzt: $mountComplete"
echo "$mountComplete" >> "/etc/fstab"
fi
echo "Mounts werden aktualisiert"
mount -a
sleep 3
fi

if [ "$(ls -A $localMountPoint)" ]
then
if [ ! -e "$localMountPoint/$mountSubDir/$localIp" ]
then
mkdir -p "$localMountPoint/$mountSubDir/$localIp"
else
echo "$localMountPoint/$mountSubDir/$localIp existiert bereits"
fi
find "$localBackupDir" -name '*fhem_backup.tar.gz' | while read file
do
fileSize="0"
fileSizeMB=$(du -h $file)
fileSizeMB=${fileSizeMB%%M*}
filename=${file##*/}
echo "$filename ($fileSizeMB MB) wird in den Backupordner verschoben"
if [[ "$pushoverToken" != "" && "pushoverUser" != "" ]]
then
curl -s -F "token=$pushoverToken" -F "user=$pushoverUser" -F "title=FHEM $localIp" -F "message=Backup mit $fileSizeMB MB wird erstellt" https://api.pushover.net/1/messages.json
fi
#mv "$file" "$localMountPoint/$mountSubDir/$localIp/$filename"
cp "$file" "$localMountPoint/$mountSubDir/$localIp/$filename"
rm "$file"
perl /opt/fhem/fhem.pl 7072 "set FHEM.Backup off"
perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Backup backup $filename"
perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Backup backupMB $fileSizeMB"
perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Backup info backup done"
done
else
echo "Mounten hat anscheinend nicht geklappt, skip."
exit
fi

#Löschen alter Backups
if [[ "$backupsMax" != "" && "$backupsMax" != "0" ]]
then
perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Backup backupFilesMax $backupsMax"
backupsCurrent=`ls -A "$localMountPoint/$mountSubDir/$localIp" | grep -c "_fhem_backup.tar.gz"`
backupsDelete=$(($backupsCurrent-$backupsMax))
if [ "$backupsDelete" -gt "0" ]
then
echo "$backupsCurrent Backups vorhanden - nur $backupsMax aktuelle Backups werden vorgehalten - $backupsDelete Backups werden gelöscht"
ls -d "/$localMountPoint/$mountSubDir/$localIp/"* | grep "_fhem_backup.tar.gz" | head -$backupsDelete | xargs rm
else
echo "$backupsCurrent Backups vorhanden - bis $backupsMax aktuelle Backups werden vorgehalten"
fi
else
perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Backup backupFilesMax no limit"
fi

backupsCurrent=`ls -A "$localMountPoint/$mountSubDir/$localIp" | grep -c "_fhem_backup.tar.gz"`
perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Backup backupFiles $backupsCurrent"


echo "Mount wieder unmounten"
umount "$localMountPoint"


FHEM ist auf dem aktuellen Stand von heute ! Ebenfalls das System (wurde rst vor ein paar Tagen neu aufgesetzt).

Wenn ich das Backup manuell startet, kommt folgendes.


pi@raspi:~ $ sudo -u root /opt/fhem/FHEM/backup.sh &
[1] 6363
pi@raspi:~ $ /backup bereits vorhanden
PING 192.168.2.126 (192.168.2.126) 56(84) bytes of data.
64 bytes from 192.168.2.126: icmp_seq=1 ttl=64 time=0.787 ms

--- 192.168.2.126 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.787/0.787/0.787/0.000 ms
192.168.2.126 erreichbar
/Q/backup bereits vorhanden
/Q/backup leer, Mounten starten
mountComplete: //192.168.2.126/Backup /Q/backup cifs username=xxxx,password=xxxx,iocharset=utf8,sec=ntlm 0 0

/etc/fstab: Eintrag bereits vorhanden: //192.168.2.126/Backup /Q/backup cifs username=xxxx,password=xxxxx,iocharset=utf8,sec=ntlm 0 0
Mounts werden aktualisiert
mount error(95): Operation not supported
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Mounten hat anscheinend nicht geklappt, skip.
^C
[1]+  Done                    sudo -u root /opt/fhem/FHEM/backup.sh



Habe dann über die Console versucht folgendes abzusetzen.


perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Backup info backup starting now"


Und im LOG erschien dann das.


2019.09.08 19:08:22 3: Login denied via telnetPort_127.0.0.1_52344



Muss da nochwas in der telnet definition gesetzt werden ? Wenn ja, was?

Die telnet Definition ist die Standart Definition nach einer installation.
In meinem letzten Backup ist die Definition auch gleich, wie jetzt.


Internals:
   CONNECTS   6
   DEF        7072 global
   FD         7
   FUUID      5c43026c-f33f-852e-be92-82cff266a5c72359
   FVERSION   98_telnet.pm:0.175290/2018-10-14
   NAME       telnetPort
   NR         88
   PORT       7072
   STATE      Initialized
   TYPE       telnet
   READINGS:
     2019-09-08 16:37:39   state           Initialized
Attributes:


Gruß
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Wernieman

Du hast scheinbar 2 Probleme:
1. Hört FHEM überhaupt auf telnet?
netstat -ntp | grep 7072
- Ansonsten mal gucken, ob telnet überhaupt offen/definiert ist?
- Alle passenden perl-Libarys installiert 8Wirft FHEM beim Starten Fehlermeldungen?)

2. Hast Du Mount Probleme ... oder Coding-Probleme
mountComplete: //192.168.2.126/Backup /Q/backup cifs username=xxxx,password=xxxx,iocharset=utf8,sec=ntlm 0 0

/etc/fstab: Eintrag bereits vorhanden: //192.168.2.126/Backup /Q/backup cifs username=xxxx,password=xxxxx,iocharset=utf8,sec=ntlm 0 0

Was willst Du mit diesem Kompletten Code??
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

sash.sc

Hallo Werniemann.

Habe das Script von meintecblog.de damals genommen und mich an die Anleitung gehalten. Dies wurde hier in der Vergangheit ja auch diskutiert.

Wenn ich

netstat -ntp | grep 7072

eingebe, kommt nix, ausser


(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)


Habe in meinem Post ja nochmal das Script mit reingehängt !!

Gruß
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Wernieman

- Mach die Ausgabe mal aus root
- und in Fhem mal die Ausgabe von (Sofern Du den telnet-Port nicht umbenannt hast)
list telnetPort
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

sash.sc

#51
Das List vom telnetPort hängt oben in meinem Beitrag zum Schluss dran.

Wenn ich dir Eingabe in der Console mit sudo mache, kommt gar nix.


Gesendet von meinem MI 9 mit Tapatalk
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Wernieman

Sorry, Tippfehler:
netstat -lntp | grep 7072
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

sash.sc



tcp        0      0 0.0.0.0:7072            0.0.0.0:*               LISTEN
2774/perl


Gesendet von meinem MI 9 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Wernieman

#54
a)
Ich bin etwas auf dem "Holzweg" .. Dein Problem ist eigentlich:
Mounts werden aktualisiert
mount error(95): Operation not supported
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Mounten hat anscheinend nicht geklappt, skip.


Da es ein cifs .. hast Du mal probiert manuell zu Mounten? Ich gehe davon aus, das Du die Tools fürs cifs nicht installiert hast ...

b)
Wegen telnet .. mal telnet manuell probiert? Anleitung steht hier irgendwo im Thread ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

sash.sc

Welche Tools für cifs?

Werde mal später testen.

Gesendet von meinem MI 9 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Wernieman

Probiere erstmal den Manuelklen Mount. Dann wird dir (hoffentlich) die Fehlermeldung schon etwas sagen

Ich glaube: "cifs-utils"
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Otto123

Hallo Sascha,

hier findest Du meine Notizen zum Thema cifs.
Ist es eventuell auch ein Problem mit den Versionen? Was hast Du eigentlich geändert?
viele Systeme laufen hartnäckig auf smb1, neuer Linuxe unterstützen aber smb1 nicht mehr per default. Du findest dazu aber einige Infos am Ende meines Artikels. Vielleicht hilft es Dir.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

yersinia

Viele Wege führen zum Ziel, gerade in der Linux-Welt. Du kannst es auch mit autofs versuchen (hier im Forum beschrieben).
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

sash.sc

Danke euch.

War ich geändert habe ist, dass ich von jessy auf buster light (ohne Desktop) umgestiegen bin, in ergangen des komplett neu aufsetzen.

Gesendet von meinem MI 9 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb