Geänderte Speicherpfade, Export und Backup

Hallo zusammen, :waving_hand:

mein erster Beitrag hat es bereits in sich. :wink: Ich habe Paperless NGX erfolgreich in meinem UGREEN NAS über Portainer installiert. Bis auf ein paar Anfangsprobleme funktioniert es soweit. Nachdem ich schrittweise Dokumente hinzugefügt habe, habe ich auch für ein Backup gesorgt und alles über document_exporter exportiert. Das funktionierte soweit ganz gut. Bis vor kurzem…

Ich habe natürlich vorher zu meinem Problem recherchiert und habe dazu auch einige Posts gefunden (siehe unter Referenzen). Allerdings scheint mir, dass dies mein Problem nur teilweise(?) betrifft.

Das Problem: wie bei den anderen Posts kann ich document_exporter jetzt nicht mehr ausführen und Paperless gibt mir ein FileNotFoundError Traceback zurück. :cry:

Das Credo war, dass dies (nur?) auftritt wenn man Dateien manuell(!) verschiebt. Das war bei mir jedoch nicht der Fall! Ich habe das Archiv so belassen.

Allerdings musste ich nachdem ich Dokumente hinzugefügt habe ein paar mal den Speicherpfad ändern. Ich habe das überprüft und soweit ich das beurteilen kann, hat Paperless die Dateien korrekt im neuen Pfad angelegt. Allerdings vermute ich, dass sich hier etwas verhakt hat. :thinking:

Es wird ja häufig der document_sanity_checker erwähnt der dann alle Inkonsistenzen auflisten soll. Das tut es und ist ja schön und gut, aber ich habe keinen Hinweis darauf gefunden, was man mit dieser Infomration anfangen soll. Die offizielle Dokumentation schweigt sich darüber aus.

Wenn ich ein Archived version of document does not exist lese verstehe ich zwar, dass die Datei im Archiv nicht mehr existiert. Aber wie kann ich es der Datenbank klarmachen? Vor allem, warum kann ich dem Exporter nicht beibringen, dass er „orphaned“ Dokumente einfach überspringen kann?

Aber vor allem: Wie erstelle ich mein Export?

Ich wäre über sachdienliche Hinweise sehr dankbar! Falls mehr Details zu docker-compose.yml oder weiteren Einstellungen benötigt werden, kann ich das gerne liefern. Ich wollte nur nicht zu viel für den Anfang schreiben. :smiling_face:

Danke euch!


Referenzen
[1] Export lässt sich nicht ausführen
[2] Kein Export aus Paperless-ngx mehr möglich - #2 von huebi

Hi,

Ich würde den Exporter laufen lassen, und die Fehlemeldungen dokumenteiren
Die Dokumente die angeblich nicht vorhanden sind im Media Ordner suchen und sichern, dann das Dokument aus dem Django-Adminpanel löschen.
So lange bis der Export ohne Fehler durchläuft.

Danach kannst du die gesicherten Dokumente wieder konsumieren.
Den Export laufen lassen und schaun ob er ohne Fehler durchläuft.

Dann kannst du überlegen ob du Paperless komplett neu aufsetzt dass die Ordner + Inhalte passen.

Vielen Dank! :+1: Ich werde es morgen ausprobieren und berichten.

Hi Jake und alle anderen Interessierten,

vielen Dank nochmals. Irgendwie ist das etwas verwirrend. Vielleicht kann hier jemand mit mehr Erfahrung sehen was ich hier falsch gemacht habe.

Ich habe zwei Nutzer und der Speicherpfad beträgt bei beiden {{ owner_username }}/{{ correspondent }}/{{ custom_fields | get_cf_value('Kategorie','Sonstiges') }}/{{ document_type }}/{{ created_year }}/{{ asn }}-{{ title }}. Die Dokumente werden auch korrekt einsortiert und sind bereits 1.1GB. Die will man ungern verlieren. :wink:

Wenn ich den document_sanity_checker aufrufe, sehe ich drei verschiedene Fehlertypen in der Ausgabe:

  • Archived version of document does not exist.
  • Orphaned file in media dir
  • Checksum mismatch of archived document

Hier ein kleiner Auszug (*** ist der Platzhalter für den Dateinamen, tut erstmal nichts zur Sache):

[2025-10-06 12:12:05,215] [INFO] [paperless.sanity_checker] Detected following issue(s) with document #434, titled ***
[2025-10-06 12:12:05,216] [ERROR] [paperless.sanity_checker] Archived version of document does not exist.
[2025-10-06 12:12:05,218] [INFO] [paperless.sanity_checker] Detected following issue(s) with document #299, titled *** 
[2025-10-06 12:12:05,219] [ERROR] [paperless.sanity_checker] Archived version of document does not exist.
[...]
[2025-10-06 12:12:05,333] [ERROR] [paperless.sanity_checker] Checksum mismatch of archived document. Stored: 72731468c67ce71886cdd957d71480d0, actual: d41d8cd98f00b204e9800998ecf8427e.

Den dritten Fehler ignorieren wir erstmal. Okay, dann also ins Django Admin Interface von Paperless einloggen. Offensichtlich ist #434 die ID des Dokuments. Mit dieser ID kann ich den Dokumenteneintrag durch die URL http://PAPERLESS-URL/admin/documents/document/434/change/ sehen. Wenn ich unter Filename den Pfad kopiere, sehe ich die Datei in meinem Archiv.

Meine Fragen dazu:

  1. Wieso meldet mir dann Paperless, dass es diese Datei nicht finden kann obwohl sie im Archiv vorhanden ist?

  2. Muss ich diese beiden Fehlerkategorien irgendwie unterscheiden?

  3. Wenn ich mir die Ausgabe von document_sanity_checker anschaue, gibt es einige Dokumente die in eine der obigen Kategorien fallen. Muss ich die alle händisch anfassen oder gibt es eine schnellere und effizientere Verfahrensweise?

  4. Sonstige Tipps die ich anwenden kann?

Danke euch!

Das sieht für mich so aus, dass die Dateien verschoben / umbenannt wurden, denn zu einem nicht gefundenen Dokument kommt dann oft ein “orphaned”, also verwaistes Dokument, dazu.

Hier ist leider nun manuelle Nacharbeit angesagt: Wenn du sicher bist, dass das orphaned file zu dem missing file gehört, verschiebst du es manuell da hin, wo paperless-ngx es erwartet.

Lässt sich sicherlich auch mit einem Script programmieren, aber hier wäre mir die Fehlerwahrscheinlichkeit zu hoch.

Danke dir Stefan!

Manuell habe ich im Archiv nichts verschoben. Ich habe aber Speicherpfade angefasst und habe die im Verdacht. Möglicherweise hat sich da was verhakt.

Ich habe es jetzt so gelöst, dass ich Paperless neu aufgesetzt, ein Backup importiert und die wenigen Inkonsistenzen im Django Admin Seite gelöscht habe. Das hat soweit geklappt und auch der document_sanity_checker meldet keine Probleme mehr.

Das hat zwar jetzt funktioniert, dennoch empfinde ich den Export als suboptimal wenn mir ein Traceback angezeigt wird. :unamused_face: Mal vom unausgereiften Eindruck abgesehen, aber ich hätte mir gewünscht, dass man über eine Option solche Dinge einfach überspringen kann. Dann hat man evlt. zwar nicht alles drin, hat aber ein Backup der Daten.

Besten Dank!

Ok, blos wo zieht man die Grenze?
Ist es noch OK wenn nur ein paar Dateien fehlen? Was passiert wen mal ein paar hundert Dateien nicht exportiert werden?
Dann kann ich den Export gleich bleiben lassen.

Wer den Export als Datensicherung verwendet, sollte auch sicherstellen dass der Export reibungslos funktioniert.
Warum Dateien fehlen oder PNX existierende Dateien als „nicht vorhanden markiert“ lässt sich natürlich schwer nachvollziehen.

Mein Export läuft jede Nacht automatisch, und trotzdem mach ich alle paar Wochen einen Export per ssh damit mir evtl Fehler aufgezeigt werden.
Nach dem Motto: "Vertrauen ist gut, … " den Spruch kennen wir alle und der gilt auch für Software und Datensicherung.

Da hast du natürlich vollkommen Recht. Eine Grenze zu ziehen ist hier schwierig. Aber software-technisch wäre es ja möglich, dass man über eine Option solche Dateien auf eigene Gefahr übersprungen werden. Am besten mit einer Auflistung. Dann hätte ich zumindest etwas und würde nicht komplett mit leeren Händen dastehen.

Am besten wäre es natürlich, wenn Paperless so stabil wäre, dass man sich darum gar keine Sorgen machen müsste. :wink:

Was aber meiner Ansicht gar nicht geht ist, dass der Export komplett fehlschlägt und eine Python-Traceback zurückgibt. Das stellt mich und alle die davon betroffen sind vor einige Hürden die doch nicht sein müssten.

Wenn ich eine Python-Traceback beim Export bekomme ist das nicht normal und deutet darauf hin, dass das im Code nicht abgefangen wurde. Ein Nutzer sollte nie(!) eine Traceback zu Gesicht bekommen, wohl aber eine korrekte Fehlermeldung. Das ist nicht unbedingt vertrauensfördernd für wertvollen Daten…

An anderer Stelle fangen die Entwickler die Tracebacks auch nicht ab. Hast du schonmal ins Log reingeschaut? Wenn Paperless eine Datei nicht findet stehen da auch unzählige solche hässlichen Dinge drin. Und ja, ich habe auf GitHub das als Issue eingetragen. Als Antwort bekam ich dann ein lapidares „das ist deine Meinung, aber kein Fehler“. Ja danke für nix! :unamused_face:

Als Konsequenz werde ich einen täglichen Export einrichten (was ich sowieso wollte).

Danke dir!

Dieses Thema wurde automatisch 7 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.