reeze Posted July 26, 2022 Share Posted July 26, 2022 (edited) Hallo Zusammen, da während meines Nexcloud backups sich häufig Sachen an der Datenbank ändern, muss ich diese relativ häufig neu aufbauen. Gibt es einen Weg, Aus dem Duplicati Container Nextcloud zu stoppen und nach dem Backup wieder zu starten. Genau dafür sollten ja die: --run-script-before=/config/scripts/stop_nextcloud.sh --run-script-after=/config/scripts/start_nextcloud.sh In den advanced Einstellungen ja da sein. Leider reichen meine Linx skills für mehr nicht aus In den Scripten habe ich #!/bin/sh docker start <duplicati ID> hinterlegt. In meinem Kopf macht es schon Sinn, das ein Container kein Script auf dem Host System ausführen kann, aber es muss ja irgendwie möglich sein. Der Weg über die User-Scripte gibt es ja auch noch, da sehe ich aber das Problem den gestoppten container wieder zu starten wenn Duplicati fertig ist. Danke für jede Hilfe Reeze Edited July 26, 2022 by reeze Quote Link to comment
Revan335 Posted July 26, 2022 Share Posted July 26, 2022 Es gibt das CA AppBackup, was Docker vorher beenden kann und danach wieder startet. Quote Link to comment
reeze Posted July 26, 2022 Author Share Posted July 26, 2022 Meinst du: Appdata Backup/Restore v2? Wie soll das im Zusammenspiel mit duplicati den Nextcloud ordner Sichern? Quote Link to comment
alturismo Posted July 26, 2022 Share Posted July 26, 2022 3 minutes ago, reeze said: Wie soll das im Zusammenspiel mit duplicati den Nextcloud ordner Sichern? gar nicht ... ich schätze @Revan335 wollte auf eine Alternative hinweise anstelle Duplicati, anders kann ich es mir auch nicht erklären also, aus einem docker einen anderen starten, stoppen ... no way, du könntest jetzt über Hintertüren und einem userscript etwas in der Art erledigen ... aber ich denke ab jetzt wäre es einfacher zu schauen, kann man den duplicati job "extern" starten, dann wäre ein userscript wo docker stop a ... docker exec duplicati ..... docker start a .... durchführt. Ich nutze jetzt duplicati nicht mehr und habe dieses szenario auch nicht getestet ... da würde ich jedoch ansetzen, innerhalb des dockers per scripts alleine wird das nichts Quote Link to comment
Archonw Posted July 26, 2022 Share Posted July 26, 2022 @reeze stoppen kannst du den Container schon mal mit #!/bin/sh docker container stop <nextcloud ID> docker start <duplicati ID> Was bleibt, ist eine Abfrage ob ein bestimmter Conatiner noch aktive, wenn nein docker contaier start <nextcloud ID> Quote Link to comment
alturismo Posted July 26, 2022 Share Posted July 26, 2022 5 minutes ago, Archonw said: @reeze stoppen kannst du den Container schon mal mit naja, wenn ich mich recht erinnere hat duplicati einen eigenen Zeitplan, sprich, nur durch docker start duplicati ... passiert meine ich nichts ... ich schätze @reeze will, NC stop, duplicati job ausführen, NC start Quote Link to comment
Archonw Posted July 26, 2022 Share Posted July 26, 2022 @reeze wird der Duplicati Container automatisch am Ende des Backups beendet? Wenn ja kann vielleeicht das "docker wait" Commando helfen. Quote Link to comment
hawihoney Posted July 26, 2022 Share Posted July 26, 2022 4 hours ago, reeze said: da während meines Nexcloud backups sich häufig Sachen an der Datenbank ändern, muss ich diese relativ häufig neu aufbauen. Gibt es einen Weg, Aus dem Duplicati Container Nextcloud zu stoppen und nach dem Backup wieder zu starten. Welche Datenbank? Die Nextcloud DB im MariaDB Container? Da hoffe ich mal stark das der Backup Job beide Container korrekt bedient (achte auf die Reihenfolge). Nur Nextcloud zu stoppen um dann die Datenbank zu sichern wird ein unvollständiges Backup provozieren (Rollback notwendig). docker stop nextcloud docker stop mariadb # Backup Nextcloud und MariaDB docker start mariadb docker start nextcloud Duplicati kenne ich nicht. Aber Du musst auf jeden Fall dafür sorgen das beide Container heruntergefahren werden. Quote Link to comment
Revan335 Posted July 26, 2022 Share Posted July 26, 2022 1 hour ago, alturismo said: gar nicht ... ich schätze @Revan335 wollte auf eine Alternative hinweise anstelle Duplicati, anders kann ich es mir auch nicht erklären Das ist korrekt. Da ich nichts beisteuern kann weil Docker isoliert sind und somit unabhängig vom Host und anderen Rockern. 1 hour ago, reeze said: Meinst du: Appdata Backup/Restore v2? Genau die. Kann mit Duplicati zwar auch manches vom Docker sichern. Aber durch die Änderungen im Betrieb bringt das nicht viel und manches geht auch nicht wegen Permission Error. Deshalb mach ich das Docker Backup per genannter App. Da kann man auch exklusions eintragen wo der Docker nicht neu gestartet/beendet/gestartet werden soll. Quote Link to comment
alturismo Posted July 26, 2022 Share Posted July 26, 2022 2 hours ago, Archonw said: @reeze wird der Duplicati Container automatisch am Ende des Backups beendet? auch da, sofern ich den richtig in Erinnerung habe, Nope ... der hat ein eigenes feines webgui mit eigenen Parametern usw usw ... daher müsste man schauen ob sich ein "Job" extern anstoßen lässt, dann könnte man das per script in Angriff nehmen, wenn nicht ... ist der Ansatz eh hinfällig weil dann nur der interne Zeitplan greift, dann wäre einfach "Erfahrung" und entsprechend Docker stop/start extern separat setzen, wäre dann jedoch ohne Zusammenhang ... Quote Link to comment
Archonw Posted July 26, 2022 Share Posted July 26, 2022 (edited) Damit man aus Duplicati mit dem Docker Host sprechen kann benötigt man dieses zusätzliches Volume volumes: - /var/run/docker.sock:/var/run/docker.sock - /usr/bin/docker:/usr/bin/docker Dann sollt der Duplicati Container mit dem Docker Dienst vom Host sprechen können. Eventuell hilft dies hier auch noch https://forum.duplicati.com/t/run-script-before-after/7924/20 Edited July 26, 2022 by Archonw Quote Link to comment
reeze Posted July 27, 2022 Author Share Posted July 27, 2022 Hi, vielen dank für die Rückmeldungen. Ich schau mir alles mal an. Mittlerweile schaue ich mir Rclone an, damit verschiebe ich schon ein Parr Dateien auf dem Server hin und her. Quote Link to comment
hawihoney Posted July 27, 2022 Share Posted July 27, 2022 11 minutes ago, reeze said: Mittlerweile schaue ich mir Rclone an, damit verschiebe ich schon ein Parr Dateien auf dem Server hin und her. rclone eher für die Synchronisation mit einem Cloud Dienst, rsync eher lokal bzw. SSH oder SMB remote. Es gibt hier dutzende Beispiele für Sync (inkl. Deleted am Target) bzw. Backup. Such einfach Mal nach rsync hier im Forum. Quote Link to comment
Archonw Posted July 27, 2022 Share Posted July 27, 2022 Schau dir mal mgutt Script fuer Backups an. Das ist ebenfalls sehr gut. Benutze es auch und hat mir die Tage erst sehr gut geholfen. Darin kannst du dann auch vor jedem Backup gezielt Container, wie Nextcloud oder MariaDB, stoppen und nachher auch wieder automatisch starten lassen. Quote Link to comment
reeze Posted July 27, 2022 Author Share Posted July 27, 2022 6 hours ago, hawihoney said: rclone eher für die Synchronisation mit einem Cloud Dienst, rsync eher lokal bzw. SSH oder SMB remote. Es gibt hier dutzende Beispiele für Sync (inkl. Deleted am Target) bzw. Backup. Such einfach Mal nach rsync hier im Forum. Ich synce auch auf Google Drive und verschlüssele das Backup. Nextcloud macht ja auch keinen Sinn wenn man es dann alles in Klartext zu Google schaufelt Ich schau mal weiter, danke bis hier hin Quote Link to comment
mgutt Posted July 27, 2022 Share Posted July 27, 2022 Mir käme da diese Ideen 1.) - um zb 2 Uhr nachts startet Duplicati das Backup von appdata - also stoppt um 01:55 Uhr ein Skript alle Container (außer duplicati) - ein zweites Skript prüft a) ob gerade alle Container gestoppt sind und b) "überwacht" es den Backup-Ordner. Wenn für x Minuten kein Zugriff mehr erfolgt ist, werden alle Container gestartet 2.) Alternativ könnte man auch die Logs von Duplicati überwachen, sofern da angezeigt wird, dass der Job startet / stoppt. Allerdings wäre für einen Start Trigger notwendig, dass Duplicati für sagen wir mal 2 Minuten wartet, bevor der Job wirklich losgeht. Kann man das einstellen? 3.) Das hier geht nur, wenn appdata zu 100% auf /mnt/cache liegt: Ein Script stoppt alle Container, erstellt von appdata nach appdata_backup mit folgendem Befehl einen Snapshot: cp --archive --no-target-directory --reflink=always /mnt/cache/appdata /mnt/cache/appdata_backup und startet wieder alle Container. Das dauert nur wenige Sekunden (gerade ausprobiert mit 200GB großem appdata Verzeichnis). Danach macht duplicati ein Backup von appdata_backup und löscht die Quelldateien dabei wieder (kann das dupicati?). Hat den Charme, dass die Container nur wenige Sekunden gestoppt werden. Quote Link to comment
reeze Posted July 28, 2022 Author Share Posted July 28, 2022 Hi, tasächlich habe ich in der Richtung auch schon gedacht. Ich habe gehofft das es eine "elegantere" Lösung gibt. Ich mache kein Backup vom appdata (das Mache ich tatsächlich mit CA Backup) sondern von den Nextcloud Userfiles also Fotos und Dokumente der Family. Offensichtlich verschluckt sich Duplicati wenn was an den Dateien geändert wird, während es den Index erstellt was hochgladen werden muss. Das war bis vor ein paar Monaten kein Problem, da nicht so viel auf Nextcloud geändert wurde bis auf die regelmäßigen Handybackups. Da nun die Kinder darauf Zugreifen und ich für den "erweiterten" Familienkreis accounts eingerichtet habe, ist da halt ständig Party drauf Ich denke ich werde vorerst ein Wartungsfenster einstellen, bei den ich einmal die Woche Nexcloud via script für ein paar Stunden offline nehme, bis der Index erstellt wurde Quote Link to comment
Archonw Posted July 28, 2022 Share Posted July 28, 2022 (edited) @REEZE ich kann dir nur wärmsten das script von mgutt empfehlen. https://forums.unraid.net/topic/117481-rsync-skript-für-inkrementelle-backups/ Benutze das genau aus dem gleichen Grund. Da kann man wie schon oben erwähnt durch einfügen von zewi Zeilen die Container stoppen und anschliessend wieder starten, die während des Backups nicht laufen sollen. Ich schaue aber auch die Tage nochmal, ob dein Weg mit Duplicati nicht doch auch geht. Da z.b. Watchtower auch fuer Containeraktualisierungen eben jeden starten und stoppen kann, sollte das somit fuer Duplicati auch möglich sein. Edited July 28, 2022 by Archonw Quote Link to comment
reeze Posted July 28, 2022 Author Share Posted July 28, 2022 Hi, wenn ich mgutt‘s Script richtig verstanden habe, ist es nicht dafür gedacht verschlüsselt zu gdrive oder aws zu kopieren. Bitte korrigiert mich wenn ich falsch liege. Quote Link to comment
Archonw Posted July 28, 2022 Share Posted July 28, 2022 Ah richtig, das stimmt natürlich. Quote Link to comment
Archonw Posted July 28, 2022 Share Posted July 28, 2022 (edited) @reeze Folgendes am Duplicati Container ergänzen, dann sollte der Zugriff auf die Dockerumgebung aus Duplicati heraus klappen. Danach konnte ich mittels docker exec -it duplicati /bin/bash und anschließendem docker stop nextcloud meinen Nextcloud Container stoppen. Edited July 28, 2022 by Archonw Quote Link to comment
Archonw Posted July 29, 2022 Share Posted July 29, 2022 (edited) Leider hat das auch noch nicht ausgereicht, wie ich festellen musste. Noch kann Duplicat nicht auf Docker zugreifen. "no permission" Um das "hart" zu umgehen hab ich mal mit sudo chmod 660 /var/run/docker.sock die Rechte geändert. Das leif dann. Auch das Aendern der PGID und PUID auf "0" führt zum "zwangs" Erfolg. Da dadurch der Container mit root Rechten läuft, was ja auch nicht gewollt ist. Bleibt die Frage, unter welchem User versucht Duplicati auf Docker zu zu greifen, und wie kann ich den in Unraid dafuer frei geben. Edited July 29, 2022 by Archonw Quote Link to comment
mgutt Posted July 29, 2022 Share Posted July 29, 2022 18 hours ago, reeze said: wenn ich mgutt‘s Script richtig verstanden habe, ist es nicht dafür gedacht verschlüsselt zu gdrive oder aws zu kopieren. Zum mounten einer Cloud würde man rclone nutzen. Den Pfad könnte man dann auch im Skript als Ziel hinterlegen. Alternativ kann man auch rclone selbst für den Transfer verwenden. Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.