Paperless-ngx Paperless-ngx Datensicherung

florian1308

Benutzer
Mitglied seit
24. Jul 2023
Beiträge
12
Punkte für Reaktionen
2
Punkte
3
Hallo Zusammen,

ich betreibe auf meinem DS220+ Paperless-ngx und würde gerne die Datensicherung automatisieren. Manuell ist das alles kein Problem.

Dafür nutze ich einfach den folgenden Befehl via SSH:
sudo docker-compose exec webserver document_exporter ../export/

Manuell funktioniert das wunderbar, auch die Wiederherstellung, allerdings würde ich gerne ein automatisches Backup bevorzugen.

Wie sichert ihr euer Paperles-ngx?
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.216
Punkte für Reaktionen
1.035
Punkte
224
Hallo und herzlich willkommen!

Ich speichere die Daten, die auf der Festplatte gespeichert werden außerhalb des Containers über Hyper Backup auf einer zweiten Disk Station und auf einer weiteren Festplatte. Da ich damit auch die Konfiguration speichere und gleichzeitig den Start-Befehl der Aufgabenplaners, kann ich bei einem Fehler einfach alle Daten wieder an ihre richtige Stelle kopieren und da weiter machen, wo das Backup aufgehört hat.

Das ganze Verfahren habe ich dieses Jahr bereits angewendet, so dass ich auch sicher weiß, dass es im Falle des Falles funktioniert.

Wichtig ist, dass nicht nur die Dokumente an sich erhalten bleiben, sondern auch die Datenbank gesichert wird, weil die die ganzen Verknüpfungen und weiteren Informationen enthält.
 
  • Like
Reaktionen: Iarn

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Den genannten Befehl könntest du auch im Aufgabenplaner eintragen und damit automatisieren.
Beachte auch, dass ein Dump der Datenbank wichtig ist, wie bereits geschrieben. Das mache ich ebenfalls über den Aufgabenplaner.
Dann wegsichern der Daten mit Hyper Backup
 

florian1308

Benutzer
Mitglied seit
24. Jul 2023
Beiträge
12
Punkte für Reaktionen
2
Punkte
3
An den Aufgabenplaner habe ich auch schon gedacht, aber habe es nicht hinbekommen. In der Aufgabe habe ich den Befehl "/bin/bash /volume1/docker/paperless-ngx/config/backup_paperless.sh" eingetragen. Woraufhin die sh-Datei ausgeführt wird.

Die Datei enthält die beiden Befehle:
cd /volume1/docker/paperless-ngx/config/
sudo docker-compose exec webserver document_exporter ../export/

Wie sieht das in deinem Aufgabenplaner aus?
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
854
Punkte
154
Das sudo entfernen und das Script als root ausführen lassen
 
  • Like
Reaktionen: geimist

florian1308

Benutzer
Mitglied seit
24. Jul 2023
Beiträge
12
Punkte für Reaktionen
2
Punkte
3
Das hat nun geklappt! Dankeschön!
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.216
Punkte für Reaktionen
1.035
Punkte
224
Hast du meinen Beitrag oben gelesen? Exporter hin oder her, der für Docker empfohlene Weg unabhängig vom Container ist, die Daten auf der Platte zu speichern und von dort mit z. B. Hyper Backup noch woanders abzulegen. Die Verwendung von Datenbank-Dump und Exporter sehe ich als zusätzliche Möglichkeit.

Die alleinige Verwendung des Exporters kann dazu führen, dass man Inkonsistenzen in Bezug auf die Datenbank bekommt, das alleine reicht eventuell nicht.
 
  • Like
Reaktionen: alexhell

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
854
Punkte
154
Wie @Monacum schreibt solltest du wirklich IMMER einen Datenbankdump vorher erstellen und die gemounteten Ordner sichern. Mehr würde ich nicht machen. Mit Dump + Ordner kannst du das komplett wieder herstellen. Also klar du musst noch wissen wie du den Container erstellt hast.
 

florian1308

Benutzer
Mitglied seit
24. Jul 2023
Beiträge
12
Punkte für Reaktionen
2
Punkte
3
Okay, danke für eure Hinweise! So werde ich es nun mal realisieren.
 

axler

Benutzer
Mitglied seit
13. Feb 2023
Beiträge
29
Punkte für Reaktionen
4
Punkte
3
Hallo zusammen,

Ich hoffe es ist ok wenn ich mich hier ranhänge. Ich versuche derzeit ebenfalls ein vernünftiges Backup von Paperless hinzubekommen. Folgender Plan:
Nachts wird per Aufgabenplaner der Synology der document_export ausgeführt. Anschließend erstellt Hyperbackup vom Docker Ordner inkl. dem Export ein Backup in ein anderes Verzeichnis auf der selben NAS. Schlussendlich wird das Hyperbackup File über Cloudsync verschlüsselt in onedrive abgelegt.
Um das Backup zu testen, habe ich mir Paperless ngx auf meinem Windows PC eingerichtet und die Daten über document_import eingespielt. Hat soweit funktioniert. Meine ursprüngliche Frage wäre jetzt muss ich die Container beenden bevor ich den document_export starte? Und die zweite Frage nach lesen der bisherigen Antworten hier, wie mache ich einen Datenbank dump? Kann ich das ebenfalls in den Aufgabenplaner integrieren? Als DB kommt postgres zum Einsatz?
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Nein. Im Gegenteil: Da paperless ja selbst das Backup erstellt, wird das nicht funktionieren, wenn der Container nicht läuft.
Mit postgres kann ich dir nicht sagen, wie ein Dump abläuft, da ich mariadb nutze.
Auf die Schnelle fand ich das hier
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.216
Punkte für Reaktionen
1.035
Punkte
224
Beim Laden des Dumps in die Datenbank muss diese laufen, aber auch nur diese bzw. sollte sichergestellt sein, dass in die zu ladende DB nicht geschrieben oder zugegriffen wird.
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Das ist bei relationalen Datenbanken i.d.R. irrelevant. Da bei einem Dump die Tabelle gelockt wird und Schreibvorgänge angehalten werden
 
  • Like
Reaktionen: Monacum

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.216
Punkte für Reaktionen
1.035
Punkte
224
Gut zu wissen. Hatte das mal in irgendeiner Anleitung gelesen und machte für mich auf den ersten Blick Sinn, dass während solcher Arbeiten nicht noch in die Datenbank geschrieben werden soll. Aber umso besser, wenn das so gar nicht möglich ist.
 

axler

Benutzer
Mitglied seit
13. Feb 2023
Beiträge
29
Punkte für Reaktionen
4
Punkte
3
Was ich noch nicht verstehe:
Der document_exporter gibt mir zu jedem Dokument das Originalfile, das Archivfile und die Thumbnail aus. Zusätzlich werden die beiden Dateien manifest.json und version.json erstellt.
Der document_importer erstellt mir anhand dieser Daten ein dem Ursprungssystem (aus meiner Sicht) identisches System. Was kann hier wann schief laufen wenn ich keine Datenbankdump habe? Können die Daten korrupt oder inkonsistent werden, bei einem Datenbankzugriff während der document_exporter läuft? Ist hier ein Datenbankzugriff überhaupt möglich oder besteht für diese Zeit ein Lock?
Was ist der worst case Fall? So wie ich das sehe ist eine Reproduktion der Datenbank dann nicht möglich, meine Dokumente verliere ich dadurch nicht nur die Tags etc., korrekt?
Ich möchte das einfach besser verstehen.
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Mitglied seit
28. Okt 2020
Beiträge
15.028
Punkte für Reaktionen
5.401
Punkte
564
Ja genau. Der Datenbank Dump dient als zusätzliche Sicherheit, um die DMS Datenbank nicht zu verlieren
 
  • Like
Reaktionen: axler

Grischabock

Benutzer
Mitglied seit
10. Sep 2009
Beiträge
282
Punkte für Reaktionen
10
Punkte
24
Ich hänge mich hier mal rein. Habe seit dieser Woche mit Paperless ngx angefangen und will es nun auch noch Backupen. Aktuell mache ich Täglich mit dem Hyper Backup ein Backup aller Verzeichnisse auf einen anderen Server. Das heisst ja, dass /docker/paperless/... und die darin befindlichen PDF`s gesichert sind oder?

Jedoch wenn alles abschmieren sollte, dann habe ich kein DB Backup oder?

Kann ich automatisiert ein Backup der Daten und DB machen? Vielleicht mit dem Aufgaben Manager? Sorry ich habe mich mit dem noch nie ausseinander gesetzt oder ausseinander setzen müssen. Hat jemand vielleicht eine komplett Anleitung falls dies so funktionieren würde?
Das Backup würde ich in der Nacht machen, da sollte die DB ja nichts schreiben. Dennoch wäre es klasse wenn die Container vielleicht gestoppt werden und dann ein Backup gemacht wird. Evt. wäre es auch umsetzbar dass Backups nach X Tagen auch gelöscht werden?

Sorry wie gesagt, bis dato habe ich meine DS nur als Zentrale Datenablage Intern genutzt und nie irgdnwelche Software (ausser Homebridge) am laufen gehabt. Aus dem Grund reichte mir Hyper Backup.

Auf einem Linux Server nutze ich zwar auch Portainer (wie auf der DS) aber da mache ich ein Full-Backup mittels Plesk von den Daten und der Datenbank. Bekannt ist mir das ganze aber halt nicht auf Synology Ebene.
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.216
Punkte für Reaktionen
1.035
Punkte
224
Jedoch wenn alles abschmieren sollte, dann habe ich kein DB Backup oder?
Doch, die Datenbank liegt auch bei docker/paperless/ in einem der Ordner. Zur Sicherheit kann man aber auch noch einen Dump der Datenbank machen, kann ich dir heute Nachmittag mal schicken, oder du suchst bis dahin hier im Forum.

Für den Dump brauchst du die Container nicht zu stoppen, laut @plang.pl schreibt die DB nichts, wenn der Dump-Befehl ausgeführt wird.
 
  • Like
Reaktionen: Grischabock

Grischabock

Benutzer
Mitglied seit
10. Sep 2009
Beiträge
282
Punkte für Reaktionen
10
Punkte
24
Auch hier vielen Dank. Das ist mal gut zu wissen dass in dem Moment nichts geschrieben wird.
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
854
Punkte
154
Kann ich automatisiert ein Backup der Daten und DB machen? Vielleicht mit dem Aufgaben Manager?
Ja, einfach eine Aufgabe erstellen, die als root ausgeführt wird. Als Benutzerdefiniertes Script folgendes einfügen:
Code:
/usr/local/bin/docker exec postgres_container pg_dump -c DB_NAME > /volume1/...../backup.sql

Auf einem Linux Server nutze ich zwar auch Portainer (wie auf der DS) aber da mache ich ein Full-Backup mittels Plesk von den Daten und der Datenbank
Du kannst dein Portainer auch per API sichern. Ich sichere mein Portainer (darüber werden 3 Hosts verwaltet) per API alle 6 Stunden. Dann hast du eine .tar Datei du jederzeit einspielen kannst, wenn du Portainer irgendwo neu installierst oder entpacken und nachgucken wie ein Stack war.
 


 

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