Anleitung Backup/Restore Paperless ngx?

Ok.
Ich habe mich ja an dem Netzwerkdump versucht, aber da haut etwas nicht hin. Der Versuch ist oben im Post #7 zu sehen. Wenn man mir da einen Tipp geben kann, wäre ich froh. Da komme ich leider nicht weiter.

Zudem tut sich ein neues Problem bzw eine Verfeinerung auf. Ich möchte aus dem Paperless Mediaarchiv "/volume2/docker/paperlessngx/media"
alle Dateien, welche in den letzten 24h dort angelegt worden sind automatisch in ein anderes Verzeichnis kopieren wollen, um sie von dort weiter zu verarbeiten.
Mein erster Gedanke war das per Aufgabenplanung und rsync zu machen, aber so wie ich das sehe gibt es da keine Funktion, die alle Unterordner nach den Dateien des letzten Tages durchsucht und nur diese kopiert. Also muss da so denke ich ein Script hin. Und da kommen dann meine begrenzten Linuxkenntnisse ins Spiel.

Die Struktur ist:

-media
--documents
---archive
----Jahr
-----Monat 1
------Dokumentart A
-------xyz.pdf
------Dokumentart B
-------xyz.pdf
-----Monat 2


Das gehört hier eigentlich nicht rein, ich habe aber auch kein Forum so recht finden können. Wenn ihr so nett seid und mir dennoch hier helfen mögt, so bin ich dafür dankbar. Alternativ mache ich auch gerne in einem anderen Unterforum einen neuen Thread auf, wenn ihr mir den Weg in das korrekte Unterforum weist.

Euch allen einen wundervollen Tag.
 
Zu Problem 2 habe ich zumindest eine Teillösung, die ich hier mal miteinstelle. Vielleicht ist ja dem einen oder anderem auch geholfen.

Code:
find volume2/docker/paperlessngx/media/documents/originals -type f -name '*.pdf' -mtime -1 -exec cp {} volume1/uebergabe/ \;

Hiermit werden die Dateien der letzten 24h schonmal kopiert. Allerdings gehen die timestamps verloren.
 
bei dem "cp" noch ein "-p" mit übergeben:

Code:
find volume2/docker/paperlessngx/media/documents/originals -type f -name '*.pdf' -mtime -1 -exec cp -p {} volume1/uebergabe/ \;
 
@DrDeath Prima. Danke, das funktioniert. Kann ich in dem find Teil es auch noch hinbekommen, dass immer gleich lautenden aber an verschiedenen Stellen stehende Unterordner herausgenommen werden? So ala -exclude dichwillichnicht ?
 
ja, und zwar mit:

Code:
-not -path "*diesen/pfad/nicht/beachten*"

kann auch mehrfach verwendetet werden:

Code:
find /volume2/docker/paperlessngx/media/documents/originals -type f -name '*.pdf' -mtime -1 \
-not -path "*hier/nicht*" \
-not -path "*und/hier/auch/nicht*" \
-not -path "*geheim*" \
-exec cp -p {} volume1/uebergabe/ \;
 
Wieviele "Ausnahmen" brauchst du denn ?
Ansonsten müsstest Du deine Ordnerstruktur ggf. überarbeiten.
 
24 Ausnahmen pro Jahr. Und die auch nicht immer in jedem Monat. Daher war der Gedanke einer Variablen. Wenn der Ordner XYZ heisst, dann nicht beachten. Wenn das nicht geht, muss ich mir mit den Ordnern etwas einfallen lassen.
 
Hänge doch an die betroffenen Ordner per script oder etwas anderen etwas spezielles an.... zb: "_extra" und Filter den Pfad dann auf "*_extra*"
 
Dein Denkfehler ist, dass du vergisst, dass es nicht nur um die Dokumente geht, sondern eine Verbindung zwischen den Dokumenten und dem Datenbankeintrag gibt – den stellst du mit dem Kopieren eines Dokumentes in den media-Ordner nicht wieder her. Deswegen reicht es auch nicht, einfach irgendwelche Dateien zurück in den Ordner zu legen. Dein grundsätzliches Vorgehen für das Back-up ist aber richtig!

Wenn du also eine Sicherung zurückspielen willst, dann bedeutet das, dass du alle drei Container stoppst, über Hyper Backup den kompletten Ordner von Paperless-ngx mit allen Unterordnern von einem Zeitpunkt deiner Wahl wiederherstellst und dann die Container per Befehl oder Portier neustartest und dann funktioniert das auch wieder mit dem Stand der Datenbank und der Dokumente zum Zeitpunkt deiner eingespielten Sicherung.

Hallo zusammen!

ich habe Probleme beim Restore von Paperless-ngx.

Ich habe die Installation von Paperless nach der Anleitung von Marius durchgeführt (auch mit Docker und Container).
Per Hyperbackup habe ich alle Paperless-Verzeichnisse gesichert.

Ich verstehe die zitierte Vorgehensweise von Monacum so, dass es eigentlich funktionieren müsste, wenn ich die Verzeichnisse vom Stand von vor 2 Tagen in den Docker-Ordner kopiere und dann den Portainer-Stack drüber laufen lasse.

Nach dem Kopieren der zwei Tage alten Dateien in den das Docker-Verzeichnis habe ich im Portainer den Stack mit re-pull neu drüber laufen lassen.

Die Startseite von paperless wird aber nicht angezeigt.

Im Container von paperless-ngx gibt es eine Fehlermeldung:
django.db.utils.OperationalError: could not translate host name "db" to address: Name or service not known

Ich habe das bei google recherchiert, wirklich klar ist mir aber nicht, was ich anpassen sollte. Zumal der Stack ja vorher funktioniert hat.

Oder muss ich etwas anders machen?
Ist jemandem diese Fehlermeldung auch mal untergekommen?
 
Er findet die db nicht. Zeig doch mal deinen Stack
 
Ja, klingt danach. @fronki hast du wirklich den exakt gleichen Stack verwendet, ohne Anpassungen etwa bei einem der Versionstags? Wenn ich die exakt gleichen Versionen verwende und die Container mit den gleichen Parametern neu starte, habe ich kein Problem bei der von mir beschriebenen Variante. Ein Backup auf aktualisierte Containerversionen kann aber zu Problemen führen, insbesondere, wenn so wie oben bereit beschrieben, die Datenbank, bei vielen PostgreSQL angepasst wird.

Das geht dann nicht so einfach, hier muss die Paperless-Datenbank direkt aus PostgreSQL heraus gesichert (gedumpt) werden und dann wieder nach dem Update der Datenbank eingespielt werden. Wer das in den meisten Fällen umgehen möchte, nimmt wie @Adama MariaDB.
 
Ich wollte eigentlich schreiben, dass man kein Backup, das unter einer alten Version erstellt wurde, in einen aktualisierten Container kopieren sollte, weil das ja diese Probleme verursachen kann.
 
Entschuldigt bitte, ich habe jetzt erst gesehen, dass schon Nachfragen gekommen sind.
Ich habe alle Container außer die Datenbank upgedatet (u.a. Paperless auf 2. irgendwas). Da lief alles problemlos. Dann hatte ich versucht Postgress upzudaten, ging nicht. Das Problem hatte ich gelöst (':15' hinter dem image dran gehängt). Lief dann auch wieder.

Hier ist der Stack:

version: "3.6"
services:
redis:
image: redis
container_name: PaperlessNGX-REDIS
restart: always
volumes:
- /volume1/docker/paperlessngx/redis:/data
db:
image: postgres:15
container_name: PaperlessNGX-DB
hostname: db
restart: always
volumes:
- /volume1/docker/paperlessngx/db:/var/lib/postgresql/data
environment:
POSTGRES_DB: paperless
POSTGRES_USER: paperless
POSTGRES_PASSWORD: paperless
webserver:
image: ghcr.io/paperless-ngx/paperless-ngx
container_name: PaperlessNGX
restart: always
depends_on:
- db
- redis
- gotenberg
- tika
ports:
- 8777:8000
volumes:
- /volume1/docker/paperlessngx/data:/usr/src/paperless/data
- /volume1/docker/paperlessngx/media:/usr/src/paperless/media
- /volume1/docker/paperlessngx/export:/usr/src/paperless/export
- /volume1/docker/paperlessngx/consume:/usr/src/paperless/consume
environment:
PAPERLESS_REDIS: redis://redis:6379
PAPERLESS_DBHOST: db
USERMAP_UID: 1026
USERMAP_GID: 100
PAPERLESS_TIME_ZONE: Europe/Berlin
PAPERLESS_ADMIN_USER: xxxxxxxx
PAPERLESS_ADMIN_PASSWORD: xxxxxx
PAPERLESS_OCR_LANGUAGE: deu+eng+spa
PAPERLESS_OCR_SKIP_ARCHIVE_FILE: always
PAPERLESS_TIKA_ENABLED: 1
PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000/forms/libreoffice/convert#
PAPERLESS_TIKA_ENDPOINT: http://tika:9998
gotenberg:
image: gotenberg/gotenberg
restart: always
container_name: PaperlessNGX-GOTENBERG
ports:
- 3000:3000
command:
- "gotenberg"
- "--chromium-disable-routes=true"

tika:
image: ghcr.io/paperless-ngx/tika
container_name: PaperlessNGX-TIKA
ports:
- 9998:9998
restart: always
 
Das sieht ja erstmal gut aus. Läuft es jetzt wieder?
Und wenn nein, was sagen die Logs der Datenbank?
 
Nein, immer noch der Fehler "django.db.utils.OperationalError: could not translate host name "db" to address: Name or service not known".

Ich habe in Hyperbackup inkrementelles Backup eingestellt. Kann es daran liegen? Sollte ich lieber die Daten über ein vollständiges Backup sichern?
 
Nein. Du solltest aber einen SQL-Dump der DB haben. Was sagen denn nun die Logs der DB?
 
Ok, den Dump habe ich nicht. Hier sind die Logs der DB:

PostgreSQL Database directory appears to contain a database; Skipping initialization
2023-12-17 15:06:24.290 UTC [1] LOG: starting PostgreSQL 15.5 (Debian 15.5-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
2023-12-17 15:06:24.291 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
2023-12-17 15:06:24.291 UTC [1] LOG: listening on IPv6 address "::", port 5432
2023-12-17 15:06:24.384 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2023-12-17 15:06:24.583 UTC [28] LOG: database system was interrupted; last known up at 2023-12-11 03:00:39 UTC
2023-12-17 15:06:24.971 UTC [28] LOG: invalid record length at 0/6F2C7DD8: wanted 24, got 0
2023-12-17 15:06:24.971 UTC [28] LOG: invalid primary checkpoint record
2023-12-17 15:06:24.971 UTC [28] PANIC: could not locate a valid checkpoint record
2023-12-17 15:06:25.651 UTC [1] LOG: startup process (PID 28) was terminated by signal 6: Aborted
2023-12-17 15:06:25.651 UTC [1] LOG: aborting startup due to startup process failure
2023-12-17 15:06:25.652 UTC [1] LOG: database system is shut down
 

Additional post fields

 

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