Paperless Dokumentenverwaltung – Backup mit cronjob auf FTP
Über Cashys Blog bin ich zufällig auf dieses Dokumentenverwaltungssystem gestoßen, welches man selber im Container auf z.B. einem Raspberry oder NAS hosten kann. Anleitungen zur Installation gibt es einige. Ich habe bei mir Portainer auf einem Raspberry installiert und dann dort paperless integriert. Was mir leider fehlte war eine regelmäßige Backup Funktion. Dazu findet man eher weniger im Netz. Ich wollte ein automatisches Backup auf meinen FTP Server. Hier zeige ich nun einen möglichen Weg.
Zunächst einmal findet man hier Infos zum Tool und zur Installation. Ich würde jetzt im weiteren Verlauf nur noch auf das Backup Thema eingehen.
https://stadt-bremerhaven.de/?s=paperless
https://mariushosting.com/how-to-install-paperless-ngx-on-your-synology-nas/
Für den manuellen Export der Dokumente steht auf der Hilfe Seite folgendes:
docker-compose exec -T webserver document_exporter ../export
für mich habe ich den Eintrag wie folgt abgeändert:
docker exec paperless-webserver-1 document_exporter ../export -z
Da mein Container “paperless-websever-1” heisst, habe ich den Namen übernommen.
-z bedeutet ZIP Archiv, damit ich alles in einer Datei bekomme.
Dieses Kommando sollte jetzt auf dem Raspberry in der Kommandozeile z.B. über Putty funktionieren. Es dauert ein bisschen, aber dann ist die Backup Datei erzeugt und liegt im Ordner “/data/compose/2/export” auf dem Raspberry.
Nun kann der Inhalt des Ordners “export” zum Beispiel in einen anderen Ordner oder Server kopiert werden.
Manuell habe ich die Datei auf meinen FTP Server kopiert. Der FTP Server ist bei mir im lokalen Netz und wurde vorher schon verbunden.
Wie findet man den Pfad für den FTP Server. Ich habe über die Desktop Oberfläche des Raspberry PI den Dateimanager geöffnet, dort geht man auf “Gehe zu” und dann “Verbinde mit Server…”. Nun habe ich meinen FTP Server verbunden. Der nun verbundene FTP Server kann jetzt als Lesezeichen auf die Leiste links abgelegt werden und ich kann mit der rechten Maustaste draufklicken und “im Terminal öffnen” auswählen. Nun wird der Pfad im Terminal geöffnet und ich sehe den Ordner Pfad, den ich für ein Script benutzen kann. siehe Screenshots unten…
Alternativ kann man auch im Terminal folgenden Befehl eintragen, dann muss man nicht über die Desktop Oberfläche gehen.
gio mount -a "ftp://10.0.1.21"
cp -r -u /data/compose/2/export /run/user/1000/gvfs/ftp:host=10.0.1.21/paperless
Wenn der oben stehenden Kopiebefehl funktioniert, dann kann jetzt der cronjob angelegt werden.
Zuerst muss ich eine Script Datei erstellen. Dazu nutze ich folgenden Befehl, dabei ist “paperless-backup.sh” der Dateiname des Scriptes:
sudo nano paperless-backup.sh
Dort trage ich nun einmal den Befehl für den Export in eine zip Datei ein und einmal den Kopierbefehl womit alle neuen Dateien auf den FTP Server kopiert werden
#!/bin/bash
docker exec paperless-webserver-1 document_exporter ../export -z
gio mount -a "ftp://10.0.1.21"
cp -r -u /data/compose/2/export /run/user/1000/gvfs/ftp:host=10.0.1.21/paperless
Damit sich das Script ausführen lässt muss noch die Berechtigung gesetzt werden:
sudo chmod 777 paperless-backup.sh
Danach sollte es mit ./paperless-backup.sh funktionieren.
Zuletzt noch der cronjob, den wir mit folgenden Befehl editieren:
crontab -e
Dort tragen wir ganz unten an letzter Stelle folgendes ein:
1 0 * * 0 ./paperless-backup.sh >/dev/null 2>&1
Mit diesem Kommando wird jeden Sonntag um 0:01 der Job ausgeführt. Das wars auch schon 🙂