Paperless-ngx Paperless-ngx Datensicherung

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.200
Punkte für Reaktionen
1.024
Punkte
224
Gibt es denn das Verzeichnis /export/back-up?
 

cplex

Benutzer
Mitglied seit
24. Feb 2024
Beiträge
72
Punkte für Reaktionen
24
Punkte
8
Ja, das ist der Pfad aus der File Station: /docker/paperless-ngx/export/backup-db
Ist wie im Skript angegeben...

Das Mapping (falls relevant) in der yml ist:
Code:
 volumes:
  - ../export:/usr/src/paperless/export
 
Zuletzt bearbeitet:

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Du musst in dem Script auch nicht den Pfad auf dem Host, sondern den Pfad im Container angeben.
 

cplex

Benutzer
Mitglied seit
24. Feb 2024
Beiträge
72
Punkte für Reaktionen
24
Punkte
8
Du meinst für das Ziel des dumps? Wie bekommen ich "den Pfad im Container" den ermittelt?

Die Datenbankdaten sollten in /var/lib/postgresql/data liegen. Das ist gemapped nach ../pgdata:/var/lib/postgresql/data. Somit lässt sich der Ordner pgdata (und alle andern Paperless-Ordner) mit Hype Backup sichern.
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Dann erstelle doch im Ordner pgdata auf dem Host nen Unterordner mit dem Namen Backup. Darein kannst du dann die Backups laufen lassen. Aber wie gesagt halt mit Sicht des Containers und nicht des Hosts. Der Pfad wäre dann also /var/lib/postgresql/data/Backup
 
  • Like
Reaktionen: cplex

cplex

Benutzer
Mitglied seit
24. Feb 2024
Beiträge
72
Punkte für Reaktionen
24
Punkte
8
Man, man, man... Jetzt fiel der Groschen!

Die Aufgabe steht und der Dump wird erzeugt. Den kann ich mit Hyper Backup wegsichern.

Besten Dank (y)
 

cplex

Benutzer
Mitglied seit
24. Feb 2024
Beiträge
72
Punkte für Reaktionen
24
Punkte
8
Dann erstelle doch im Ordner pgdata auf dem Host nen Unterordner mit dem Namen Backup. Darein kannst du dann die Backups laufen lassen. Aber wie gesagt halt mit Sicht des Containers und nicht des Hosts. Der Pfad wäre dann also /var/lib/postgresql/data/Backup
Gerade habe ich noch einmal das Ergebnis der Aufgabe per Email erhalten. Ich erhalte wieder:
Aktueller Status: 0 (Normal)
Standardausgabe/Fehler:
/bin/bash: line 0: cd: /docker/paperless-ngx/pgdata/backup-pg: No such file or directory
Obwohl der Dump im angegebenen Ordner erzeugt wird.

Hier noch einmal mein Skript:
Bash:
cd /docker/paperless-ngx/pgdata/backup-pg
find -mtime +28 -delete
docker exec paperless-db-1 bash -c "pg_dumpall -U paperless | gzip > /var/lib/postgresql/data/backup-pg/pg_dumpall_$(date +%F_%a_%T_%Z).dump.gz"
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Das liegt am cd-Befehl, den du wie gesagt nicht brauchst. Wenn du schon mit Change Directory da hinhüpfen willst, wäre der korrekte Befehl cd /volume1/docker/paperless-ngx/pgdata/backup-pg
 
  • Like
Reaktionen: cplex

cplex

Benutzer
Mitglied seit
24. Feb 2024
Beiträge
72
Punkte für Reaktionen
24
Punkte
8
Ich dachte für find -mtime +28 -delete ist es notwenig, dass vorher der Ort (Pfad) bekannt ist...

OT @plang.pl
Siehst Du meine Posts eigentlich bevor ich sie abschicke? Es ist ja fast etwas unheimlich, wie schnell Du tippst... :alien:
 
  • Haha
Reaktionen: plang.pl

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Ja, das war vorhin schon ziemlich flott :cool:
Achso stimmt, da hast du recht. Dann brauchst du den doch. Die Alternative wäre, den Pfad direkt in der find Anweisung mitzuschicken. Für so ein kleines Script kannst du das aber durchaus mit dem Change Directory machen. Wie gesagt, fehlt da nur noch das /volume1 (oder eben das Volume auf dem dein Ordner liegt) und dann müsste es gehen.
 
  • Like
Reaktionen: cplex

cplex

Benutzer
Mitglied seit
24. Feb 2024
Beiträge
72
Punkte für Reaktionen
24
Punkte
8
Angepasst mit /volume1 und läuft.

Danke @plang.pl
 
  • Like
Reaktionen: plang.pl

Dog6574

Benutzer
Mitglied seit
15. Sep 2014
Beiträge
181
Punkte für Reaktionen
1
Punkte
18
Hallo.

Ich habe nun mein virtuelles DSM lauffähig und habe darauf Paperless installiert. Könnt ihr mir kurz erklären wie ich den Dump einspielen kann?

Gruß,
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
854
Punkte
154
Hast du mal mit Googel probiert? Gibt direkt haufenweise Anleitungen wie man ein Dump einspielt. Siehe Doku (https://www.postgresql.org/docs/current/app-pgrestore.html). Wenn du dann fragen hast, dann musst du die genau stellen.
Ist nicht böse gemeint, aber man sollte sich mit den Basics auch befassen von dem was man installiert/betreibt.
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.200
Punkte für Reaktionen
1.024
Punkte
224
@Dog6574 Es gibt sogar hier im Forum Anleitungen… 😉 Und es gilt definitiv für ein entspanntes Gefühl bei der Nutzung der zweite Satz von alexhell.
 

Dog6574

Benutzer
Mitglied seit
15. Sep 2014
Beiträge
181
Punkte für Reaktionen
1
Punkte
18
Hallo.

Ich glaube ich weiss nun wie es geht:

psql -d $POSTGRES_DB -U $POSTGRES_USER < /backup/backup.sql

Danach wurde der Import gestartet. Mein Rechner hatte sich leider schlafen gelegt. Ich denke, weil die Datenbank so groß ist dauert es ein wenig in der virtuellen Umgebung.

Danach brauche ich doch nur noch die Dokumente neu einlesen...oder nur die Ordner mit Hyper Backup zurückspielen??

Gruß,
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.200
Punkte für Reaktionen
1.024
Punkte
224
Ich habe den Eindruck, da liegt bei dir ein Verständnisprobleme vor. Wenn du die Dokumente neu einliest, sind sie in der Datenbank doppelt vorhanden. deswegen funktioniert das nur, wenn die Sicherung aus Hyper Backup eingespielt wird. Aber ich habe ja die Anleitung über das Vorgehen verlinkt. die bezieht sich zwar auf ein Updates PostgreSQL-Containers, aber die Idee dahinter ist die gleiche.
 

Dog6574

Benutzer
Mitglied seit
15. Sep 2014
Beiträge
181
Punkte für Reaktionen
1
Punkte
18
Bevor ich aber alle Verzeichnisse mit Hyperbackup einspiele muss ich aber in der virtuellen Umgebung Paperless frisch aufsetzen und den Dump einspielen oder brauche ich den Dump dann nicht?

Gruss
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.200
Punkte für Reaktionen
1.024
Punkte
224
Wenn alles wie erwartet funktioniert und die Datenbank keinen Fehler hat, dann reicht es, die vorhandene Sicherung einzuspielen und danach wie auch immer die drei Container erstellen zu lassen. Ich persönlich mache das über einen Befehl, der dann die Konfiguration der yml und env abfragt und die Container erstellt, das funktioniert aber genauso über Portainer.

Der Grund für den Dump ist, das ist immer mal wieder passieren kann, dass in der Datenbank geschrieben wird, während gerade die Sicherung von Hyperback abläuft, weil beide Prozesse nichts voneinander wissen. In dem Falle passen die Daten in der Datenbank eventuell nicht zu den Daten im Ordner und dann würde es einen Fehler geben. Wenn das der Fall ist, dann hilft es, einen Dump einzuspielen, weil für den jeder interne Prozess in der Datenbank kurz gestoppt wird.
 

Furchensumpf

Benutzer
Mitglied seit
19. Mrz 2011
Beiträge
312
Punkte für Reaktionen
10
Punkte
18
Moin zusammen,

ich wollte auch von meiner paperless-Installation die DB sichern, scheiter aber im Grunde schon an der Installation vom Portainer.

Ich bin nach der Anleitung hier vorgegangen: https://www.youtube.com/watch?v=lWdhzyrMxGw

Da wird das ganze über die Aufgabenplanung mit dem Script:
docker run -d --name=portainer \
-p 8000:8000 \
-p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /volume1/docker/portainer:/data \
--restart=always \
portainer/portainer-ce

realisiert. Der Pfad sollte stimmen und auch die Rechtevergabe.

Dennoch bekomme ich einige Fehlermeldungen und die Installation wird abgebrochen. Das Log spuckt da folgendes aus:

Unable to find image 'portainer/portainer-ce:latest' locally
latest: Pulling from portainer/portainer-ce
57654d40e0a5: Pulling fs layer
1f476acfabd6: Pulling fs layer
5171176db7f2: Pulling fs layer
52e9438966a5: Pulling fs layer
43d4775415ac: Pulling fs layer
c1cad9f5200f: Pulling fs layer
a5e2b359b78b: Pulling fs layer
eb172612bcbb: Pulling fs layer
6be7b2acffb5: Pulling fs layer
391dff0fb880: Pulling fs layer
4f4fb700ef54: Pulling fs layer
a5e2b359b78b: Waiting
52e9438966a5: Waiting
43d4775415ac: Waiting
eb172612bcbb: Waiting
c1cad9f5200f: Waiting
4f4fb700ef54: Waiting
6be7b2acffb5: Waiting
391dff0fb880: Waiting
1f476acfabd6: Verifying Checksum
1f476acfabd6: Download complete
57654d40e0a5: Verifying Checksum
57654d40e0a5: Download complete
5171176db7f2: Verifying Checksum
5171176db7f2: Download complete
57654d40e0a5: Pull complete
52e9438966a5: Verifying Checksum
52e9438966a5: Download complete
43d4775415ac: Verifying Checksum
43d4775415ac: Download complete
c1cad9f5200f: Verifying Checksum
c1cad9f5200f: Download complete
a5e2b359b78b: Verifying Checksum
a5e2b359b78b: Download complete
1f476acfabd6: Pull complete
eb172612bcbb: Verifying Checksum
eb172612bcbb: Download complete
6be7b2acffb5: Verifying Checksum
6be7b2acffb5: Download complete
391dff0fb880: Verifying Checksum
391dff0fb880: Download complete
4f4fb700ef54: Verifying Checksum
4f4fb700ef54: Download complete
5171176db7f2: Pull complete
52e9438966a5: Pull complete
43d4775415ac: Pull complete
c1cad9f5200f: Pull complete
a5e2b359b78b: Pull complete
eb172612bcbb: Pull complete
6be7b2acffb5: Pull complete
391dff0fb880: Pull complete
4f4fb700ef54: Pull complete
Digest: sha256:4a1ceadd7f7898d9190ee0a6d22234c4323aefd80e796e84f5e57127f74370f1
Status: Downloaded newer image for portainer/portainer-ce:latest
45b532f6769aeca19400f1ebe2132c5c87c967357c8833eec6b4d0e58ff0bd2a
docker: Error response from daemon: driver failed programming external connectivity on endpoint portainer (3c7535113bb1078b56567c2e7278fb3b5f1b1b049fc6e63d5842cc86c3b1d77e): Bind for 0.0.0.0:8000 failed: port is already allocated.

Wäre für jeden Tipp dankbar was ich jetzt machen soll..^^
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Nimm nen anderen Port. Der Port 8000 ist bei dir schon vergeben.
Und der Portainer lauscht nicht auf 8000 intern. Ich würde das so machen:
Bash:
docker run -d --name=portainer \
-p 9000:9443 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /volume1/docker/portainer:/data \
--restart=always \
portainer/portainer-ce:latest

EDIT: nur, damit du dein System mal besser kennen lernst:
Bind for 0.0.0.0:8000 failed: port is already allocated.
Das ist der Fehler. Das sagt eigentlich alles aus, was man wissen muss.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Furchensumpf


 

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