{"id":1846,"date":"2023-08-28T10:11:44","date_gmt":"2023-08-28T08:11:44","guid":{"rendered":"https:\/\/etscheid.biz\/blog\/?p=1846"},"modified":"2024-02-07T10:43:10","modified_gmt":"2024-02-07T09:43:10","slug":"paperless-dokumentenverwaltung-backup-mit-cronjob-auf-ftp","status":"publish","type":"post","link":"https:\/\/etscheid.biz\/blog\/2023\/08\/28\/paperless-dokumentenverwaltung-backup-mit-cronjob-auf-ftp\/","title":{"rendered":"Paperless Dokumentenverwaltung &#8211; Backup mit cronjob auf FTP"},"content":{"rendered":"\n<p>\u00dcber Cashys Blog bin ich zuf\u00e4llig auf dieses Dokumentenverwaltungssystem gesto\u00dfen, 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\u00e4\u00dfige Backup Funktion. Dazu findet man eher weniger im Netz. Ich wollte ein automatisches Backup auf meinen FTP Server. Hier zeige ich nun einen m\u00f6glichen Weg.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"682\" src=\"https:\/\/etscheid.biz\/blog\/wp-content\/uploads\/sites\/5\/2023\/01\/storage-storage-medium-hard-drive-870713-1024x682.jpg\" alt=\"storage storage medium hard drive 870713\" class=\"wp-image-1670\" style=\"width:512px;height:341px\" srcset=\"https:\/\/etscheid.biz\/blog\/wp-content\/uploads\/sites\/5\/2023\/01\/storage-storage-medium-hard-drive-870713-1024x682.jpg 1024w, https:\/\/etscheid.biz\/blog\/wp-content\/uploads\/sites\/5\/2023\/01\/storage-storage-medium-hard-drive-870713-300x200.jpg 300w, https:\/\/etscheid.biz\/blog\/wp-content\/uploads\/sites\/5\/2023\/01\/storage-storage-medium-hard-drive-870713-768x512.jpg 768w, https:\/\/etscheid.biz\/blog\/wp-content\/uploads\/sites\/5\/2023\/01\/storage-storage-medium-hard-drive-870713-405x270.jpg 405w, https:\/\/etscheid.biz\/blog\/wp-content\/uploads\/sites\/5\/2023\/01\/storage-storage-medium-hard-drive-870713.jpg 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Image by <a class=\"fal-attribute\" href=\"https:\/\/pixabay.com\/photos\/storage-storage-medium-hard-drive-870713\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=Free Media Assets\">Bru-nO<\/a> from <a href=\"https:\/\/pixabay.com\/photos\/storage-storage-medium-hard-drive-870713\/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=Free Media Assets\">Pixabay<\/a><\/figcaption><\/figure>\n<\/div>\n\n\n<!--more-->\n\n\n\n<p>Zun\u00e4chst einmal findet man hier Infos zum Tool und zur Installation. Ich w\u00fcrde jetzt im weiteren Verlauf nur noch auf das Backup Thema eingehen.<\/p>\n\n\n\n<p><a href=\"https:\/\/stadt-bremerhaven.de\/?s=paperless\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/stadt-bremerhaven.de\/?s=paperless<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/mariushosting.com\/how-to-install-paperless-ngx-on-your-synology-nas\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/mariushosting.com\/how-to-install-paperless-ngx-on-your-synology-nas\/<\/a><\/p>\n\n\n\n<p>F\u00fcr den manuellen Export der Dokumente steht auf der <a href=\"https:\/\/docs.paperless-ngx.com\/administration\/#exporter\" target=\"_blank\" rel=\"noreferrer noopener\">Hilfe Seite<\/a> folgendes:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker-compose exec -T webserver document_exporter ..\/export<\/code><\/pre>\n\n\n\n<p>f\u00fcr mich habe ich den Eintrag wie folgt abge\u00e4ndert:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker exec paperless-webserver-1 document_exporter ..\/export -z<\/code><\/pre>\n\n\n\n<p>Da mein Container &#8222;paperless-websever-1&#8220; heisst, habe ich den Namen \u00fcbernommen. <br>-z bedeutet ZIP Archiv, damit ich alles in einer Datei bekomme.<br>Dieses Kommando sollte jetzt auf dem Raspberry in der Kommandozeile z.B. \u00fcber Putty funktionieren. Es dauert ein bisschen, aber dann ist die Backup Datei erzeugt und liegt im Ordner &#8222;\/data\/compose\/2\/export&#8220; auf dem Raspberry.<\/p>\n\n\n\n<p>Nun kann der Inhalt des Ordners &#8222;export&#8220; zum Beispiel in einen anderen Ordner oder Server kopiert werden.<\/p>\n\n\n\n<p>Manuell habe ich die Datei auf meinen FTP Server kopiert. Der FTP Server ist bei mir im lokalen Netz und wurde vorher schon verbunden.<\/p>\n\n\n\n<p>Wie findet man den Pfad f\u00fcr den FTP Server. Ich habe \u00fcber die Desktop Oberfl\u00e4che des Raspberry PI den Dateimanager ge\u00f6ffnet, dort geht man auf &#8222;Gehe zu&#8220; und dann &#8222;Verbinde mit Server&#8230;&#8220;. 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 &#8222;im Terminal \u00f6ffnen&#8220; ausw\u00e4hlen. Nun wird der Pfad im Terminal ge\u00f6ffnet und ich sehe den Ordner Pfad, den ich f\u00fcr ein Script benutzen kann. siehe Screenshots unten&#8230;<\/p>\n\n\n\n<p>Alternativ kann man auch im Terminal folgenden Befehl eintragen, dann muss man nicht \u00fcber die Desktop Oberfl\u00e4che gehen.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gio mount -a \"ftp:\/\/10.0.1.21\"<\/code><\/pre>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><a href=\"https:\/\/etscheid.biz\/blog\/wp-content\/uploads\/sites\/5\/2023\/08\/image-3.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"818\" height=\"686\" src=\"https:\/\/etscheid.biz\/blog\/wp-content\/uploads\/sites\/5\/2023\/08\/image-3.png\" alt=\"Raspberry PI Dateimanager\" class=\"wp-image-1852\" style=\"width:614px;height:515px\" srcset=\"https:\/\/etscheid.biz\/blog\/wp-content\/uploads\/sites\/5\/2023\/08\/image-3.png 818w, https:\/\/etscheid.biz\/blog\/wp-content\/uploads\/sites\/5\/2023\/08\/image-3-300x252.png 300w, https:\/\/etscheid.biz\/blog\/wp-content\/uploads\/sites\/5\/2023\/08\/image-3-768x644.png 768w, https:\/\/etscheid.biz\/blog\/wp-content\/uploads\/sites\/5\/2023\/08\/image-3-322x270.png 322w\" sizes=\"auto, (max-width: 818px) 100vw, 818px\" \/><\/a><figcaption class=\"wp-element-caption\">Raspberry PI Dateimanager Quelle: Screenshot<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/etscheid.biz\/blog\/wp-content\/uploads\/sites\/5\/2023\/08\/image-4.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"655\" height=\"264\" src=\"https:\/\/etscheid.biz\/blog\/wp-content\/uploads\/sites\/5\/2023\/08\/image-4.png\" alt=\"Raspberry Pi Terminal\" class=\"wp-image-1853\" srcset=\"https:\/\/etscheid.biz\/blog\/wp-content\/uploads\/sites\/5\/2023\/08\/image-4.png 655w, https:\/\/etscheid.biz\/blog\/wp-content\/uploads\/sites\/5\/2023\/08\/image-4-300x121.png 300w, https:\/\/etscheid.biz\/blog\/wp-content\/uploads\/sites\/5\/2023\/08\/image-4-604x243.png 604w\" sizes=\"auto, (max-width: 655px) 100vw, 655px\" \/><\/a><figcaption class=\"wp-element-caption\">Raspberry Pi Terminal Quelle: Screenshot<\/figcaption><\/figure>\n<\/div>\n\n\n<pre class=\"wp-block-code\"><code>cp -r -u \/data\/compose\/2\/export \/run\/user\/1000\/gvfs\/ftp:host=10.0.1.21\/paperless<\/code><\/pre>\n\n\n\n<p>Wenn der oben stehenden Kopiebefehl funktioniert, dann kann jetzt der cronjob angelegt werden.<\/p>\n\n\n\n<p>Zuerst muss ich eine Script Datei erstellen. Dazu nutze ich folgenden Befehl, dabei ist &#8222;paperless-backup.sh&#8220; der Dateiname des Scriptes:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano paperless-backup.sh<\/code><\/pre>\n\n\n\n<p>Dort trage ich nun einmal den Befehl f\u00fcr den Export in eine zip Datei ein und einmal den Kopierbefehl womit alle neuen Dateien auf den FTP Server kopiert werden<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\ndocker exec paperless-webserver-1 document_exporter ..\/export -z\ngio mount -a \"ftp:\/\/10.0.1.21\"\ncp -r -u \/data\/compose\/2\/export \/run\/user\/1000\/gvfs\/ftp:host=10.0.1.21\/paperless\n<\/code><\/pre>\n\n\n\n<p>Damit sich das Script ausf\u00fchren l\u00e4sst muss noch die Berechtigung gesetzt werden:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo chmod 777 paperless-backup.sh<\/code><\/pre>\n\n\n\n<p>Danach sollte es mit .\/paperless-backup.sh funktionieren.<\/p>\n\n\n\n<p>Zuletzt noch der cronjob, den wir mit folgenden Befehl editieren:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>crontab -e<\/code><\/pre>\n\n\n\n<p>Dort tragen wir ganz unten an letzter Stelle folgendes ein:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1 0 * * 0 .\/paperless-backup.sh &gt;\/dev\/null 2&gt;&amp;1<\/code><\/pre>\n\n\n\n<p>Mit diesem Kommando wird jeden Sonntag um 0:01 der Job ausgef\u00fchrt. Das wars auch schon \ud83d\ude42<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00dcber Cashys Blog bin ich zuf\u00e4llig auf dieses Dokumentenverwaltungssystem gesto\u00dfen, 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\u00e4\u00dfige Backup Funktion. Dazu findet man &hellip; <\/p>\n<p class=\"read-more\"><a class=\"readmore-btn\" href=\"https:\/\/etscheid.biz\/blog\/2023\/08\/28\/paperless-dokumentenverwaltung-backup-mit-cronjob-auf-ftp\/\">+<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":1670,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[291,183,292,290,21],"class_list":["post-1846","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-allgemein","tag-backup","tag-container","tag-export","tag-paperless","tag-raspberry"],"_links":{"self":[{"href":"https:\/\/etscheid.biz\/blog\/wp-json\/wp\/v2\/posts\/1846","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/etscheid.biz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/etscheid.biz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/etscheid.biz\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/etscheid.biz\/blog\/wp-json\/wp\/v2\/comments?post=1846"}],"version-history":[{"count":11,"href":"https:\/\/etscheid.biz\/blog\/wp-json\/wp\/v2\/posts\/1846\/revisions"}],"predecessor-version":[{"id":1868,"href":"https:\/\/etscheid.biz\/blog\/wp-json\/wp\/v2\/posts\/1846\/revisions\/1868"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/etscheid.biz\/blog\/wp-json\/wp\/v2\/media\/1670"}],"wp:attachment":[{"href":"https:\/\/etscheid.biz\/blog\/wp-json\/wp\/v2\/media?parent=1846"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/etscheid.biz\/blog\/wp-json\/wp\/v2\/categories?post=1846"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/etscheid.biz\/blog\/wp-json\/wp\/v2\/tags?post=1846"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}