Automatisches erstellen der Export config json files via Skript

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.481
Punkte für Reaktionen
364
Punkte
103
Mir ist heute aufgefallen, dass nur gestartete Container mit deinem Script exportiert werden. Besteht die Möglichkeit, das Script auf alle Container auszuweiten? Bedeutet version=1 das nur die laufenden Container gesichert werden?
Ich hab mich heute wieder an den Thread erinnert.

Ich weiß nicht welche quatsch mir damals eingefallen ist zu fragen, ob über die UI ausgeschaltete exportiert werden können. Wenn, wäre der umgekehrte Fall eher die Rückfrage Wert gewesen.

<update>Ich vermute mal, ich wollte Dich dazu ermutigen es einfach selbst mit den Browser-Tools herauszufinden. Ansonsten macht die Rückfrage für mich gerade keinen Sinn 😆</update>

Hiermit kann man einen Container samt Zustand speichern:
Code:
/usr/syno/bin/synowebapi --exec api=SYNO.Docker.Container method=export version=1 path="${BACKUP_DIR}" name="${container}"
Die erzeugte Datei ist dann unter dem Pfad ${BACKUP_DIR}/${container}.syno.txz zu finden.
Das habe ich sehr ungeschickt geschrieben. ${BACKUP_DIR} muss ab einem Share angegeben sein, bspw.:
Code:
 /usr/syno/bin/synowebapi --exec api=SYNO.Docker.Container method=export version=1 path="/docker" name="watchtower"

Während die Variante, die nur die Konfiguration speichert, den Pfad inkl. Volume haben will:
Code:
/usr/syno/bin/synowebapi --exec api=SYNO.Docker.Container.Profile method=export version=1 outfile="/volume1/docker/watchtower.json" name="watchtower"

Weder unter DSM7, noch DSM6 macht es bei mir einen Unterschied, ob der Container läuft oder nicht läuft: beides funktioniert.
 
Zuletzt bearbeitet:

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.114
Punkte
214
Weder unter DSM7, noch DSM6 macht es bei mir einen Unterschied, ob der Container läuft oder nicht läuft: beides funktioniert.
Kann ich so nicht bestätigen. Ich habe jetzt unterschiedliche Anzahl von deaktivierten Containern getestet. Die Container, welche deaktiviert werden nicht gesichert, weder mit Einstellungen noch mit. Image (komplett). Das manuelle exportieren funktioniert. Auch wenn die Container laufen, werden diese exportiert. Es liegt definitiv am Zustand des Containers! Getestet auf DSM 7.1.1 Update 3.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.481
Punkte für Reaktionen
364
Punkte
103
@EDvonSchleck hier die exakten Schritte die ich für meine Tests auf einer DS920+ mit DSM 7.1.1-42962 Update 3, Docker Paket 20.10.3-1308 durchgeführt habe:
- Container erzeugen: docker run -d -t --name test alpine
- Zustand überprüfen: docker ps -a --filter name=test, Erwartung: Container im State Running
- Container exportieren: /usr/syno/bin/synowebapi --exec api=SYNO.Docker.Container method=export version=1 path="/docker" name="test"
- Container Einstellung exportieren: /usr/syno/bin/synowebapi --exec api=SYNO.Docker.Container.Profile method=export version=1 outfile="/volume1/docker/test.json" name="test"
- Sichtprüfung, ob alles da ist: ls -l /volume1/docker, Erwartung: /volume1/docker/test.json und /volume1/docker/test.syno.txz existieren.
- Container stoppen: docker stop test
- Zustand überprüfen: docker ps -a --filter name=test, , Erwartung: Container im State Stopped
- Container exportieren: /usr/syno/bin/synowebapi --exec api=SYNO.Docker.Container method=export version=1 path="/docker" name="test"
- Container Einstellung exportieren: /usr/syno/bin/synowebapi --exec api=SYNO.Docker.Container.Profile method=export version=1 outfile="/volume1/docker/test-1.json" name="test"
- Sichtprüfung, ob alles da ist: ls -l /volume1/docker, Erwartung: zusätzlich existieren /volume1/docker/test-1.json und /volume1/docker/test-1.syno.txz (weil test.syno.txz schon existiert).

Bitte teil doch mal nach genau diesem Muster Deine exakten Befehle (bitte kein: "ich habe exakt gemacht was Du gemacht hast, nur mit anderen Werten") und deren Ausgabe.

Was in jedem Fall nicht funktioniert ist für "name" die Container ID zu verwenden, es muss zwingend der Container Name sein.
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
587
Punkte
174
Was in jedem Fall nicht funktioniert ist für "name" die Container ID zu verwenden, es muss zwingend der Container Name sein.
Nur mal eine kleine Anmerkung am Rande.
Wenn man aber anstelle des Filters name den Filter id verwendet kann auch die ID für diese Zwecke herangezogen werden.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.481
Punkte für Reaktionen
364
Punkte
103
ich meine "name" bei /usr/syno/bin/synowebapi --exec api=SYNO.Docker.Container method=export version=1 path="/docker" name="test". Da funktioniert die ID zumindest bei mir nicht. Ich lasse mich da gerne vom Gegenteil überzeugen. Führ mal aus und zeig mal her :)
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
587
Punkte
174
Okay dann hatten wir wohl aneinander vorbeigeredet. Ich hatte nämlich interpretiert dass es um das docker command docker ps -a --filter name=test und nicht um das synowebapi.
Ich nehme alles wieder zurück und entschuldige mich für den unqualifizierten Beitrag :rolleyes:
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.151
Punkte für Reaktionen
1.115
Punkte
314

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
587
Punkte
174
Du meinst es liegt wohl doch an meiner Person? :oops:

Was in jedem Fall nicht funktioniert ist für "name" die Container ID zu verwenden, es muss zwingend der Container Name sein.
Aber diese Aussage ist ja nicht "eindeutig" bei dem geschriebenen Beitrag, denn es gibt nämlich zwei unterschiedliche Befehle die beschrieben sind in denen "name" verwendet wird.
Ich hoffe ihr seht es mir nach wenn man das auch falsch interpretieren kann wie in meinem Fall.
 
Zuletzt bearbeitet von einem Moderator:

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.151
Punkte für Reaktionen
1.115
Punkte
314
Du meinst es liegt wohl doch an meiner Person? :oops:
Nun ja, ganz von der Hand zu weisen wäre es ja nicht… finde ich… mit einem verschmitzten Lachen im Gesicht. Nein, Quatsch. Alles gut. Mach dir keine Gedanken. Ich muss sowas halt einfach kommentieren, jedoch ohne bösen Hintergedanken. So und nun besser wieder Back to Topic, sonst gibts noch Haue.
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
587
Punkte
174
und nun besser wieder Back to Topic
Wo wir schon bei der api SYNO.Docker.Container sind, gibt es hierzu auch seitens Synology eine offizielle API Dokumentation?
Leider ist diese im Download Center nicht unter den Dokumenten bzw. den White Papers aufgeführt.
Und auch hier unter allen verfügaberen Downloads https://archive.synology.com/download/ ist nichts zu finden.
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.151
Punkte für Reaktionen
1.115
Punkte
314
Ich kenn nur diese hier. Wollte mich immer mal damit auseinandersetze, um es mir für meine 3rdParty Apps nutzbar zu machen. Aber Ich will immer so viel…

Dieses und weitere Dokumente gibt es auf den Seiten von Synology im Developer Bereich
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
587
Punkte
174
Hatten wir wieder aneinander vorbeigeredet? ;) Hatte ich mich wohl wieder nicht verständlich genug ausgedrückt? 😄
Ich fragte explizit nach einer API Dokumentation zu "SYNO.Docker.Container". Und dieses hier welches du verlinkst ist ja quasi "nur" die "DSM Login Web API" und beschreibt nichts mit Docker.
@Tommes Wir beide und Kommunikation... 🤣

Ich hatte selbst schon einmal dieses API Dokument gefunden Synology_Virtual_Machine_Manager_API_Guide.pdf. Weshalb nichts explizit zu Docker verfügbar ist wundert mich.
 

Tommes

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
26. Okt 2009
Beiträge
9.151
Punkte für Reaktionen
1.115
Punkte
314
Nein, nein… wir haben nicht aneinander vorbeigeredet. Du sagtest…
Ich fragte explizit nach einer API Dokumentation zu "SYNO.Docker.Container"
… und ich antwortete…
… wobei die Betonung auf >nur< lag. Es hätte ja sein können, das du dir aus dieser Information irgendwas für die Docker API herauszufiltern vermagst. Ich geh aber nochmal in mich, da ich auch meine, schon mal irgendwas zum Thema Docker API gesehen zu haben.

Wir beide und Kommunikation... 🤣
Mittlerweile können wir ja (wieder) drüber lachen. Damals waren wir zwei aber schon leicht gegenseitig angepi**t 😂
 
  • Haha
Reaktionen: ctrlaltdelete

blinky911

Benutzer
Mitglied seit
04. Jul 2021
Beiträge
97
Punkte für Reaktionen
0
Punkte
6
Gudem das Thema ist zwar schon älter. Aber kann man da irgendwie einstellen das man nur X Versionen behalten möchte? Sonst würden ja unendliche viele Sicherungen eines Containers gemacht werden.
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.391
Punkte für Reaktionen
1.206
Punkte
234
Schieb einfach ein zweites Skript hinterher. Dafür hatte ich mal ArchiveRotate geschrieben. Damit kannst du einstellen, wie viele Versionen in welchen Intervallen erhalten bleiben sollen:
https://github.com/geimist/archive_rotate
 
Zuletzt bearbeitet:

EDvonSchleck

Gesperrt
Mitglied seit
06. Mrz 2018
Beiträge
4.703
Punkte für Reaktionen
1.114
Punkte
214
Du kannst auch einfach mit dem Find-Befehl in der untersten Zeile die Dateien nach Tagen X löschen. Hier eingestellt auf 25 Tage.

Code:
find /volume1/docker/Docker_BackUps/ -mtime +25 -delete

Die Tage sind natürlich variabel.
 
  • Like
Reaktionen: haydibe und blinky911


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat