Homebridge-Backup auf die Dropbox

  • Also, das gefällt mir schon. Es sagt ganz klar aus, dass das Skript automatisch gestartet wird. Damit können wir schon mal einen Haufen Fehler ausschließen. Ich bin ja bereits der Ansicht gewesen, dass dein cron nicht richtig funktioniert, aber glücklicherweise geht der.


    Ich sehe jetzt das:

    • Mon 10 Oct 18:14:46 CEST 2022 (erster manueller Sync): Der Sync wurde um 18:14 Uhr ausgeführt und es gibt in der Dropbox Dateien von 18:14 Uhr. Das siehst gut aus.
    • Mon 10 Oct 19:10:03 CEST 2022. (zweiter manueller Sync, als Test): Der Sync wurde um 19:10 Uhr ausgeführt, aber es gibt keine neuen Dateien auf der Dropbox. Das kann daran liegen, dass sich nichts an den Dateien auf dem Raspi geändert hat. Es werden ja nur veränderte Dateien kopiert.
    • Tue 11 Oct 06:25:01 CEST 2022 (heutiger automatischer Sync): Der Sync wurde um 6:25 Uhr ausgeführt, aber es gibt keine neuen Dateien auf der Dropbox. Das kann daran liegen, dass sich nichts an den Dateien auf dem Raspi geändert hat. Es kann aber auch daran liegen, dass irgendwas nicht richtig funktioniert. Nicht eindeutig.

    Du kannst das Sync-Skript weiter verfeinern, indem du die Ausgabe des Sync-Befehls mit hineinschreibst. Die Log-Datei sieht dann noch wilder aus, aber wir werden schon schlau draus. Verändere das Skript so, dass es danach so aussieht (sudo nano /etc/cron.daily/dropbox-sync:(

    Bash
    #!/bin/bash
    
    date >> /home/pi/upload.log
    /usr/local/bin/dropbox_uploader.sh -s upload /var/lib/homebridge/backups/ / >> /home/pi/upload.log

    Ich habe im Sync-Skript verändert:

    • Die Zeile date >> /home/pi/upload.log steht nun vor dem Upload-Befehl. Das macht die Log-Datei ein bisschen besser lesbar.
    • Ich habe hinten an die Zeile mit dem Upload-Befehl ein >> /home/pi/upload.log angehängt. Also hinter das letzte / ganz rechts, mit einem Leerzeichen vom / getrennt. Egal, wie das hier dargestellt wird: das muss in einer einzigen Zeile stehen. Das sorgt dafür, dass der Output des Upload-Befehls in die Log-Datei geschrieben wird.

    Dann wird das Log etwa so aussehen:


    Tue 11 Oct 17:25:35 CEST 2022

    > Creating Directory "/backups"... ALREADY EXISTS

    > Creating Directory "/backups/config-backups"... ALREADY EXISTS

    > Skipping already existing file "/backups/config-backups/config.json.1662709013694"

    > Skipping already existing file "/backups/config-backups/config.json.1662814332606"

    > Skipping already existing file "/backups/config-backups/config.json.1665038699396"

    > Skipping already existing file "/backups/config-backups/config.json.1665045214163"

    > Skipping already existing file "/backups/config-backups/config.json.1665045366634"

    > Creating Directory "/backups/instance-backups"... ALREADY EXISTS

    > Skipping already existing file "/backups/instance-backups/homebridge-backup-CC223DE3CE30.1664849518220.tar.gz"

    > Skipping already existing file "/backups/instance-backups/homebridge-backup-CC223DE3CE30.1664935924850.tar.gz"

    > Skipping already existing file "/backups/instance-backups/homebridge-backup-CC223DE3CE30.1665022314973.tar.gz"

    > Skipping already existing file "/backups/instance-backups/homebridge-backup-CC223DE3CE30.1665108715124.tar.gz"

    > Skipping already existing file "/backups/instance-backups/homebridge-backup-CC223DE3CE30.1665195117677.tar.gz"

    > Skipping already existing file "/backups/instance-backups/homebridge-backup-CC223DE3CE30.1665281515571.tar.gz"

    > Skipping already existing file "/backups/instance-backups/homebridge-backup-CC223DE3CE30.1665367915604.tar.gz"

    > Skipping already existing file "/backups/instance-backups/homebridge-backup-CC223DE3CE30.1665454316434.tar.gz"


    In der ersten Zeile steht das Datum, danach kommt der restliche Output. In meinem Beispiel sieht man, das nüscht kopiert wurde, mit dem Vermerk: überspringe bereits existierende Datei.

  • In der ersten Zeile steht das Datum, danach kommt der restliche Output. In meinem Beispiel sieht man, das nüscht kopiert wurde, mit dem Vermerk: überspringe bereits existierende Datei.

    Ah, ok, also läuft es an für sich richtig, doch solange man in Homebridge nichts verändert, wird auch keine neue Sicherungsdatei erzeugt, weil die ja nichts neues enthalten würde, klingt logisch, danke

    Als letzte Zeile im Log stand

    > Uploading "/var/lib/homebridge/backups/instance-backups/homebridge-backup-0EB4024ECD9F.1665461470558.tar.gz" to "/backups/instance-backups/homebridge-backup-0EB4024ECD9F.1665461470558.tar.gz"... DONE

    bedeutet das nun, dass schon die kleine Veränderung im Skript, dass eine neue Sicherungsdatei erzeugt wird ??

  • bedeutet das nun, dass schon die kleine Veränderung im Skript, dass eine neue Sicherungsdatei erzeugt wird ??

    Es bedeutet, dass eine Datei auf die Dropbox geladen wurde. Die Veränderung im Skript hat damit nichts zu tun.

  • Es bedeutet, dass eine Datei auf die Dropbox geladen wurde. Die Veränderung im Skript hat damit nichts zu tun.

    Ah, ok, nehme ich dann mal so hin, verstehe ich jetzt zwar nicht, warum heute morgen keine Datei in die Dropbox geladen wurde und nun beim manuellen Sync doch eine, obwohl nichts verändert wird... :/

  • Wenn du jetzt gefragt hättest, warum das so ist, dann könnte ich dir mit "Gute Frage, keine Ahnung" antworten…


    Prinzipiell kann sich etwas ohne dein Zutun ändern. Die Homebridge hat einen Cache, in denen sie bestimmte Zustände speichert. Der wird auch gesichert. Wenn sich dieser Cache verändert, dann wird auch was auf die Dropbox geladen. Wann sich der Cache wie ändert - gute Frage eben. ich weiß es nicht.


    Bei mir ist es so, dass ich jeden Tag ein neues Backup im Dropbox-Ordner instance-backups habe, während es nur selten was Neues im Ordner config-backups gibt. In letzterem wird nur die config.json gespeichert, also die Homebridge-Konfigurationsdatei. Die ändert sich bei mir selten. Aber die Homebridge-Caches ändern sich schon, zumindest bei mir. Aber hängt natürlich auch von den Plugins ab, ob die so etwas überhaupt brauchen und schreiben. Wenn man Plugins hat, die das nicht tun, dann ändert sich auch kein Cache und dann gibt's auch kein neues Backup.

  • Nur als Ergänzung, man sieht in der Hombridge Weboberfläche unter "Drei Punkte > Backup/Wiederherstellen > Geplante Backups" wann bei die Backups laufen (Irgendwann zwischen 0 und 6 Uhr frühs, bei mir immer um 0:15 Uhr) und ob heute eins erstellt wurde.

    Bilder

  • OK, danke für die ausführliche Erklärung, werde es jetzt mal beobachten, ob es jetzt funktioniert

    Patrick_ Danke für den Hinweis

  • Es ist doch wie verhext, ich wollte heute den Sync checken und habe cat /home/pi/upload.log in die Konsole von HB eingegeben, da sehe ich diese Nachricht:

    Was ist da los ??

    Ich bin dann in die Dropbox und habe die "App" gelöscht und wollte es neu einrichten, doch wenn ich nun im Terminal

    dropbox_uploader.sh eingebe um die Daten neu einzutragen, kommt das

    Ich habe echt bald die Nase voll.....


    Werde den Cronjob löschen und vor jedem Update selber das Backup abspeichern, irgendwie will das bei mir nicht laufen.

    Einmal editiert, zuletzt von Vollerpla ()

  • Bei mir auch nicht. Ich habe das jetzt bei mir genauso gebaut wie du es hast und es geht mit dem gleichen Fehler nicht. Muss erst mal darüber nachdenken. Ich finde das raus. Sehr merkwürdig.


    Du bekommst deinen Cronjob.

  • Ich glaube, ich weiß jetzt, was da passiert. Das Sync-Script funktioniert offenbar, solange der User pi ihn ausführt, aber er geht nicht mehr, wenn der User root ihn laufen lässt. Und genau das passiert, wenn der cron Job ihn ausführt, dann kümmert sich nämlich root darum.


    In diesem Fall wird dann eine Konfigurationsdatei nicht mehr gefunden, in der die Zugangsdaten zur Dropbox stehen. Das Sync-Skript glaubt nun, es würde zum ersten Mal aufgerufen, was da auch steht:


    This is the first time you run this script, please follow the instructions


    Ich habe /etc/cron.daily/dropbox-sync nun so angepasst, dass es die richtige Konfigurationsdatei verwendet.

    Bash
    #!/bin/bash
    date >> /home/pi/upload.log
    /usr/local/bin/dropbox_uploader.sh -f /home/pi/.dropbox_uploader -s upload /var/lib/homebridge/backups/ / >> /home/pi/upload.log

    Hinzugefügt habe ich -f /home/pi/.dropbox_uploader. Das scheint zu gehen, aber genau weiß ich es erst morgen früh.

  • Ok, oh Mann, was du so alles weißt. Ich muss dann erst mal gucken, dass ich das alles wieder eingerichtet bekomme, habe gestern aus Frust die Dropbox App für den Sync gelöscht

  • Ok, oh Mann, was du so alles weißt.

    Da hätte ich schon vorher draufkommen müssen. Mein cron Job war ganz anders eingerichtet als deiner, aber eigentlich macht man es heutzutage halt so, wie du es gemacht hast. Ich hab's so gemacht wie vor 30 Jahren. Es mag ja schön sein soviel zu wissen wie ich, aber was hilft's mir, wenn ich dieses Wissen dann wie ein Depp einsetze. Naja, solange mein Arbeitgeber mich dafür bezahlt...


    Nachdem ich dann meinen cron Job dahin geändert habe, dass er deinem gleicht, habe ich den Fehler auch gehabt. Und wieder zeigt sich: schreib keine Anleitungen, die du nicht selber getestet hast.


    Ich bin also für deinen Frust zuständig. Da hab ich dich ja schön an der Nase herumgeführt. Das tut mir leid. Falls du weitere Hilfe beim Einrichten brauchst (falls du es überhaupt je wieder versuchen willst), wende dich an mich per PM.


    Ich warte jetzt noch bis morgen. Falls mein cron Job dann funktioniert, werde ich am Samstag die Anleitung in diesem Thread korrigieren, so dass sie auch funktioniert.

  • Alles gut, Stefan, brauchst dich nicht zu entschuldigen, jeder mach mal Fehler.

    Ich warte ab, bis du die neue Anleitung reingestellt hast und versuche es dann nochmal einzurichten, wenn ich dann Probleme habe, schreibe ich dich gerne an.


    wende dich an mich per PM.

    Geht nicht, du hast die maximale Anzahl erreicht, kommt da


    sschuste Stefan, ich habe nochmals ein Bildschirmvideo gemacht, wie es abläuft, wenn ich den

    Dropbox-Uploader nach deiner Anleitung installieren will hier das Video

    2 Mal editiert, zuletzt von Vollerpla () aus folgendem Grund: Ein Beitrag von Vollerpla mit diesem Beitrag zusammengefügt.

  • Dein Link zum Video führt mich nur in meine eigene Dropbox, in der ich dann meine eigenen Dateien sehe. Das musst du irgendwie anders freigeben.


    Ich habe jetzt die Anleitung verändert, aber nur die Stelle, die den cron job betrifft. Siehe das PDF in Post #1 in diesem Thread.

  • Ok, muss ich nochmal kontrollieren,

    Ich kann dir auch keine

    PN schicken, du hast das Limit an Konversationen erreicht…


    Dein Link zum Video führt mich nur in meine eigene Dropbox, in der ich dann meine eigenen Dateien sehe. Das musst du irgendwie anders freigeben.

    Versuche es mal jetzt mit Dropbox

    Einmal editiert, zuletzt von Patrick_ () aus folgendem Grund: Ein Beitrag von Vollerpla mit diesem Beitrag zusammengefügt.

  • Vollerpla Du hast das dropbbox skript doch bereits eingerichtet gehabt. Eine erneute Ausführung von dropbox_uploader.sh funktioniert nicht, weil der Konfigurationsassistent nur beim ersten mal erscheint.


    The first time you run dropbox_uploader, you'll be guided through a wizard in order to configure access to your Dropbox. This configuration will be stored in ~/.dropbox_uploader.

    Nur weil du aus Wut die App Verbindung auf der Dropbox Webseite rausgeschmissen hast, ändert das erstmal noch nichts an dem konfigurierten Skript auf dem Pi.


    Ich würde es wohl mal mit einem dropbox_uploader.sh unlink probieren, evtl kommt dann wieder de Konfigurationsassistent:


    Available commands:


    • unlink

    Unlink the script from your Dropbox account


    alternativ sollte es funktionieren, wenn man die Konfigurationsdatei (Die die gespeicherten API Token/Keys enthält) unter ~/.dropbox_uploader löscht, auch da sollte der Assistent wieder erscheinen.

    Einmal editiert, zuletzt von Patrick_ ()

  • Ich würde es wohl mal mit einem dropbox_uploader.sh unlink probieren, evtl kommt dann wieder de Konfigurationsassistent:

    das hat schon mal geklappt, ich wurde gefragt, ob ich lösche will; jetzt noch die neue Sache von Stefan.


    Alles lief super durch, jetzt heisst es nur auf morgen früh warten, oder?

    Denn wenn ich nun in die Konsole/home/pi/upload.log eingebe kommt,

    Code
    bash: /home/pi/upload.log: Permission denied 

    weil es wahrscheinlich noch kein Log gibt

    4 Mal editiert, zuletzt von Vollerpla ()

  • Die Datei öffnet man mit cat /home/pi/upload.log

    weil es wahrscheinlich noch kein Log gibt

    doch, oder hast du die alte Datei gelöscht?

  • bash: /home/pi/upload.log: Permission denied

    Versuchs mit einem sudo vor dem Befehl.


    Meine Anleitung enthält das Schreiben des Logs nicht mehr.

  • Patrick_ wenn ich deinen Befehl cat /home/pi/upload.log eingebe kommt


    mit dem letzten Eintrag vom 12.10.22


    sschuste wenn ich sudo cat /home/pi/upload.log kommt das selbe

    Meine Anleitung enthält das Schreiben des Logs nicht mehr.

    müsste ich dann eigentlich den Cronjob ergänzen, wie du mir unter #74 erklärst hast, oder ??


    Ich warte einfach mal ab, ob es heute morgen klappt, bin bis ca. 15 Uhr unterwegs und kann dann erst sehen, ob der Cronjob seinen Dienst gemacht hat