Jump to content

Duplicati andere Container Stoppen


reeze

Recommended Posts

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 by reeze
Link to comment
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

Link to comment
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.

 

Link to comment
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.

Link to comment
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 ...

Link to comment

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 by Archonw
Link to comment
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.

 

Link to comment

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.

Link to comment
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

Link to comment

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.

Link to comment

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

Link to comment

@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 by Archonw
Link to comment

@reeze

Folgendes am Duplicati Container ergänzen, dann sollte der Zugriff auf die Dockerumgebung aus Duplicati heraus klappen.

 

 

Duplicati.png

 

Danach konnte ich mittels 

docker exec -it duplicati /bin/bash 

und anschließendem 

docker stop nextcloud

meinen Nextcloud Container stoppen.

Edited by Archonw
Link to comment

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 by Archonw
Link to comment
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.

Link to comment

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...