Backup FHEM nach Google Drive

Begonnen von Rockinghorse, 16 Januar 2016, 21:54:20

Vorheriges Thema - Nächstes Thema

Rockinghorse

Hallo zusammen,
Da ich mich die letzten Tage etwas länger damit rumgeschlagen habe um mein FHEM Backup in einer externen Cloud zu sichern, dachte ich
vielleicht kann man anderen die dies vorhaben mit einer kleinen Anleitung etwas Zeit sparen:

Mein Grundgedanke war zum einen das ich nur für die Backups keine OwnCloud aufsetzen wollte und zudem meine Backups "räumlich getrennt" vom System haben.

GoogleDrive ist der Einzige Cloud Dienst den ich finden konnte für den es einen ARM kompatiblen client gibt: Grive2
https://github.com/vitalif/grive2
Das Repository enthält alle Sourcen zum Download und eine gute readme. Hier die Zusammenfassung:

3rd Party libs installieren
sudo apt-get install git cmake build-essential libgcrypt11-dev libyajl-dev \
    libboost-all-dev libcurl4-openssl-dev libexpat1-dev libcppunit-dev binutils-dev


Im Grive Download Ordner Grive2 erstellen
mkdir build
cd build
cmake ..
make -j4
sudo make install


Dann im Home Verzeichniss einen Ordner erstellen der mit GoogleDrive synchronisiert werden soll:


mkdir GoogleDrive
cd GoogleDrive


Nun muss das GoogleKonto authentifiziert werden mit einmaliger Synchronisierung:

grive -a


Zukünftige Synchronisierungen kann man danach über

grive

durchführen 

Ich habe die grive binaries in /opt/fhem/user/grive kopiert, damit diese beim Backup auch gesichert werden.

Damit die Synchronisierung des FHEM backup Ordners regelmäßig z.B. wöchentlich durchläuft kann man einen Cronjob einrichten. Es würde vermutlich auch über fhem "at" gehen aber man müsste als FHEM user einmal grive authentifizieren damit dies geht.

# crontabelle editieren
crontab -e

Jeden Sonntag um 04:00 die fhem backup files in GoogleDrive verschieben und synchronisieren

# Time def: minute hour dayOfMonth month dayOfWeek command1 && command 2  ...
0 4 * * 0 mv /opt/fhem/backup/* ~/GoogleDrive/ &&  cd ~/GoogleDrive && /opt/fhem/user/grive


Danach  in Fhem pro Woche (hier sonntags um 3:00) ein Backup machen und es wird durch den chronjob eine Stunde Später synchronisiert.


define BackupFHEM at *03:00:00 {  if($wday == 0) { fhem("backup") }  }



Viele Grüße

Rockinghorse

betateilchen

Danke für die Anleitung.

Zitat von: Rockinghorse am 16 Januar 2016, 21:54:20
GoogleDrive ist der Einzige Cloud Dienst den ich finden konnte für den es einen ARM kompatiblen client gibt: Grive2

Mir fallen da spontan noch andere Dienste ein:

Strato HiDrive bietet sogar rsync als Zugriffsmöglichkeit, ausserdem lässt sich der Cloud Speicher alternativ als Netzlaufwerk einbinden. Das erleichtert solche backup-tasks erheblich :)

Microsoft OneDrive läßt sich per webdav einbinden.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Rockinghorse

Hi,
danke für den Hinweis. Ich hatte bei spider oak, tresorit und dropbox probiert aber nichts gefunden. Bei Google dann vermutlich die falschen Suchbegriffe.
Gruß,
Rockinghorse

HenryD

Hallo Rockinghorse,
Mache ich was falsch oder fehlt in der Anleitung noch was?
Wenn der Befehl cmake . . aufgerufen wird, bekomme ich die Meldung, das die CMakeLists.txt-Datei fehlt.
Gruß Henry
FHEM auf Raspi2, HomeMatic, Enocean, Hue, Modbus, LaCrosse Temperatur/Feuchte, Baumarkt Steckdosen, Telegram Bot

Wernieman

Bist Du im richtigen Ordner?
ZitatIm Grive Download Ordner Grive2 erstellen
- 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

Tungsten

Hallo,

wo genau liegt der Folder?
Im Grive Download Ordner Grive2 erstellen

Außerdem wird laut Beispiel kein Ordner Grive2 sondern build erstellt.

Übersehe ich etwas oder passt da etwas nicht im Beispiel?

Danke

Tungsten

ok, deine Anleitung ist nicht vollständig kopiert worden. Hier die Originale: http://yourcmc.ru/wiki/Grive2

QTreiber

#7
Ich habe gestern ein automatisches Backup nach google Drive per rclone eingerichtet. Nachfolgend eine kurze Beschreibung:

Installation rclone:
wget https://downloads.rclone.org/rclone-current-linux-arm.zip
unzip rclone-current-linux-arm.zip
sudo cp rclone-v1.42-linux-arm/rclone /usr/local/bin/
rclone config


Bei der Konfiguration müssen keine IDs, etc. angegeben werden.


Nach der Installation von rclone habe ich lediglich zwei "at" in FHEM eingerichtet:

erstellen des Backups (täglich um 3:31):
define autoBackup at *3:31:00 { fhem("backup") }

Upload des erstellten Backups auf googleDrive (täglich um 3:33):
define autoBackup at *3:33:00 { system("rclone copyto /opt/fhem/backup \"googleBackup:Pfad mit Schrägstrichen/FHEM-autoBackup\"") }

Für die korrekte Funktion in FHEM ist es noch notwendig die config-Datei ins Verzeichnis /opt/fhem zu kopieren (Dateiname: .rclone.conf), zusätzlich sind auch die Berechtigungen anzupassen

der Vorteil dieser Variante ist die Einfachheit und der geringe Speicherplatzbedarf von rclone ggü. den oben erwähnten googleDrive Dateien. Nähere Info unter:
https://www.hackster.io/uladzislau-bayouski/rclone-the-cloud-connected-048422
https://rclone.org/
aktuelles System auf RPi 3:
RaZberyy ZWave Controller: Schaltaktoren, Heizkörperthermostate, Fenstersensoren, Multisensoren (Bewegung, Temperatur, Helligkeit), Schukostecker, Rauchmelder
Sduino: Somfy Jalousie
WiFi: E27-RGB-LED, Echogeräte, Netatmo, DashButtons, googleBackup, Harmony, Staubsauger

Keichi

Zitat von: QTreiber am 26 August 2018, 01:35:42
Ich habe gestern ein automatisches Backup nach google Drive per rclone eingerichtet. Nachfolgend eine kurze Beschreibung:

Installation rclone:
wget https://downloads.rclone.org/rclone-current-linux-arm.zip
unzip rclone-current-linux-arm.zip
sudo cp rclone-v1.42-linux-arm/rclone /usr/local/bin/
rclone config


Bei der Konfiguration müssen keine IDs, etc. angegeben werden.


Nach der Installation von rclone habe ich lediglich zwei "at" in FHEM eingerichtet:

erstellen des Backups (täglich um 3:31):
define autoBackup at *3:31:00 { fhem("backup") }

Upload des erstellten Backups auf googleDrive (täglich um 3:33):
define autoBackup at *3:33:00 { system("rclone copyto /opt/fhem/backup \"googleBackup:Pfad mit Schrägstrichen/FHEM-autoBackup\"") }

Für die korrekte Funktion in FHEM ist es noch notwendig die config-Datei ins Verzeichnis /opt/fhem zu kopieren (Dateiname: .rclone.conf), zusätzlich sind auch die Berechtigungen anzupassen

der Vorteil dieser Variante ist die Einfachheit und der geringe Speicherplatzbedarf von rclone ggü. den oben erwähnten googleDrive Dateien. Nähere Info unter:
https://www.hackster.io/uladzislau-bayouski/rclone-the-cloud-connected-048422
https://rclone.org/

Ich weiß das dingen hier is schon Asbach... Aber ich wollte das Backup auch über Drive lösen und das mit rclone schien mir die beste möglichkeit..

Nur hänge ich gerade an dem Problem das nen

{ system("rclone copyto /opt/fhem/backup \"drive:fhem_backup\"") }[\code]

dazu führt das mir das gesamte fhem hängen bleibt und ich es über putty neu starten muss.. Hat da jemand ne Idee was an dem regexp falsch ist? Weil ohne \"\" geht's genau so wenig und fhem friert mir auch ein.. Dummerweise habe ich aber auch absolut nirgends Log einträge von rclone.. Ich hab nur über top gesehen das es ausgeführt wird, aber habe keine ahnung was es da macht..

MadMax-FHEM

#9
Ein Aufruf mit system BLOCKIERT solange bis fertig, ganz einfach...

D.h. entweder anders aufrufen oder ein & ans Ende packen damit es eben nicht blockiert...

EDIT: siehe z.B. http://heinz-otto.blogspot.com/2018/02/in-fhem-externe-programme-aufrufen.html

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

einfach unnötige Zeichen "wegstreichen" ;)
{ system("rclone copyto /opt/fhem/backup \"drive:fhem_backup\"") }
-> sollte so gehen
"rclone copyto /opt/fhem/backup "drive:fhem_backup""
Quelle https://fhem.de/commandref_DE.html#command
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

Keichi

Zitat von: Otto123 am 12 Juni 2020, 17:52:44
einfach unnötige Zeichen "wegstreichen" ;)
{ system("rclone copyto /opt/fhem/backup \"drive:fhem_backup\"") }
-> sollte so gehen
"rclone copyto /opt/fhem/backup "drive:fhem_backup""
Quelle https://fhem.de/commandref_DE.html#command

Jupp Danke,
{system("rclone copyto /opt/fhem/backup/ drive:fhem_backup")}
wars dann schlussendlich damit er das Backup anwirft und auch auf Drive hochlädt.

MadMax-FHEM

Trotzdem noch mal der Hinweis: SO blockiert fhem aber bis fertig kopiert ist!

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

betateilchen

Hat eigentlich mal jemand folgendes probiert?

define autoBackup at *3:33:00 "rclone copyto /opt/fhem/backup/ drive:fhem_backup"

Das wäre auf jeden Fall nicht blockierend. Falls das nicht funktioniert, würde ich das eigentliche Backup in ein Shell-Skript "myShellScript.sh" einpacken und im at das Shell-Skript aufrufen:

define autoBackup at *3:33:00 "myShellScript.sh"
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Keichi

Ja, das hatte ich sogar probiert... Allerdings ist dann absolut nichts passiert und ich habe auch kein Backup auf drive gesehen gehabt, deswegen bin ich zurück auf die Version mit System.  Und extra nen Shell Script anlegen nur für einen einzigen Befehl is dann doch etwas zuviel des guten.

Zitat von: betateilchen am 12 Juni 2020, 20:02:16
Hat eigentlich mal jemand folgendes probiert?

define autoBackup at *3:33:00 "rclone copyto /opt/fhem/backup/ drive:fhem_backup"

Das wäre auf jeden Fall nicht blockierend. Falls das nicht funktioniert, würde ich das eigentliche Backup in ein Shell-Skript "myShellScript.sh" einpacken und im at das Shell-Skript aufrufen:

define autoBackup at *3:33:00 "myShellScript.sh"