{"id":3145,"date":"2022-03-21T07:00:00","date_gmt":"2022-03-21T06:00:00","guid":{"rendered":"https:\/\/www.my-it-brain.de\/wordpress\/?p=3145"},"modified":"2022-04-18T13:48:19","modified_gmt":"2022-04-18T11:48:19","slug":"nextcloud-im-container-teil-5-backup-und-restore","status":"publish","type":"post","link":"https:\/\/www.my-it-brain.de\/wordpress\/nextcloud-im-container-teil-5-backup-und-restore\/","title":{"rendered":"Nextcloud im Container &#8211; Teil 5: Backup und Restore"},"content":{"rendered":"\n<p>Hallo und herzlich willkommen zu Teil 5 von Nextcloud im Container. In diesem Artikel geht es um Backup und Restore. Die vorhergehenden Teile dieser Serie sind <a href=\"#quellen-links\">weiter unten verlinkt.<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Backup<\/h2>\n\n\n\n<p>Mit dem Thema <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/backup-und-restore-im-kanboard-container-land\/\" data-type=\"post\" data-id=\"2705\">Backup und Restore im Containerland<\/a> habe ich mich bereits in einem fr\u00fcheren Artikel besch\u00e4ftigt. Da ich mit dem Ansatz von dort nicht ganz zufrieden bin, gehe ich in diesem Wochenend-Projekt einen anderen Weg.<\/p>\n\n\n\n<p>F\u00fcr Nextcloud existiert die App <a href=\"https:\/\/github.com\/nextcloud\/backup\">Backup<\/a>, welche im Folgenden zum Einsatz kommt. Diese wird \u00fcber die App-Verwaltung in den Admin-Einstellungen der Nextcloud aktiviert.<\/p>\n\n\n\n<p>Die englischsprachige Dokumentation (siehe [<a href=\"#quellen-links\">5<\/a>]) macht einen <s>soliden und<\/s> verst\u00e4ndlichen Eindruck. Ich habe mich von dieser durch die Konfiguration f\u00fchren lassen.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"957\" height=\"2258\" src=\"https:\/\/www.my-it-brain.de\/wordpress\/wp-content\/uploads\/2022\/03\/Einstellungen-Nextcloud-Sicherung.png\" alt=\"Einstellungen der Nextcloud-Sicherung\" class=\"wp-image-3146\" title=\"Scherungen konfigurieren\" srcset=\"https:\/\/www.my-it-brain.de\/wordpress\/wp-content\/uploads\/2022\/03\/Einstellungen-Nextcloud-Sicherung.png 957w, https:\/\/www.my-it-brain.de\/wordpress\/wp-content\/uploads\/2022\/03\/Einstellungen-Nextcloud-Sicherung-127x300.png 127w, https:\/\/www.my-it-brain.de\/wordpress\/wp-content\/uploads\/2022\/03\/Einstellungen-Nextcloud-Sicherung-339x800.png 339w, https:\/\/www.my-it-brain.de\/wordpress\/wp-content\/uploads\/2022\/03\/Einstellungen-Nextcloud-Sicherung-768x1812.png 768w, https:\/\/www.my-it-brain.de\/wordpress\/wp-content\/uploads\/2022\/03\/Einstellungen-Nextcloud-Sicherung-651x1536.png 651w, https:\/\/www.my-it-brain.de\/wordpress\/wp-content\/uploads\/2022\/03\/Einstellungen-Nextcloud-Sicherung-868x2048.png 868w, https:\/\/www.my-it-brain.de\/wordpress\/wp-content\/uploads\/2022\/03\/Einstellungen-Nextcloud-Sicherung-624x1472.png 624w\" sizes=\"auto, (max-width: 957px) 100vw, 957px\" \/><figcaption>Standard-Einstellungen der Nextcloud-Sicherungs-App<\/figcaption><\/figure><\/div>\n\n\n\n<p>Ich habe die im obigen Bild dargestellten Einstellungen wie folgt ge\u00e4ndert:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Zeitintervall zwischen zwei vollst\u00e4ndigen Wiederherstellungspunkten: 7 Tage<\/li><li>Die Verschl\u00fcsselung f\u00fcr Wiederherstellungspunkte habe ich deaktiviert<\/li><li>Richtlinie f\u00fcr die lokalen App-Daten: 4<\/li><\/ol>\n\n\n\n<p>Nun kann man \u00fcber die entsprechende Schaltfl\u00e4che einen vollst\u00e4ndigen Wiederherstellungspunkt erstellen. Alternativ kann man auch warten, bis das Zeitfenster f\u00fcr den ersten vollst\u00e4ndigen Wiederherstellungspunkt erreicht ist.<\/p>\n\n\n\n<p>Ich habe die Sicherung einige Tage mitlaufen lassen. Wie der folgende Screenshot zeigt, wurden ein Full-Backup und zwei darauf folgende differenzielle Backups erzeugt, bevor ein neues Full-Backup erstellt wurde.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"360\" src=\"https:\/\/www.my-it-brain.de\/wordpress\/wp-content\/uploads\/2022\/03\/Backup-History-800x360.png\" alt=\"Backup-History on Sun 13th Mar\" class=\"wp-image-3152\" title=\"Backup-History\" srcset=\"https:\/\/www.my-it-brain.de\/wordpress\/wp-content\/uploads\/2022\/03\/Backup-History-800x360.png 800w, https:\/\/www.my-it-brain.de\/wordpress\/wp-content\/uploads\/2022\/03\/Backup-History-300x135.png 300w, https:\/\/www.my-it-brain.de\/wordpress\/wp-content\/uploads\/2022\/03\/Backup-History-768x345.png 768w, https:\/\/www.my-it-brain.de\/wordpress\/wp-content\/uploads\/2022\/03\/Backup-History-624x281.png 624w, https:\/\/www.my-it-brain.de\/wordpress\/wp-content\/uploads\/2022\/03\/Backup-History.png 992w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption>Backup-Historie am 13.03.2022<\/figcaption><\/figure>\n\n\n\n<p>Hierbei ist zu beachten, dass die Backups in der gleichen Container-Instanz liegen wie die Live- bzw. Produktions-Daten. Damit ist es noch kein richtiges Backup. Denn wenn diese Instanz komplett zerst\u00f6rt wird, ist auch das Backup weg. Die Backups m\u00fcssen daher unbedingt an einem anderen Ort gespeichert werden. <s>Ich habe mich entschieden, diesem Thema einen eigenen Artikel zu widmen und es in Teil 6 Desaster-Recovery zu behandeln.<\/s><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wiederherstellung einer einzelnen Datei<\/h2>\n\n\n\n<p>An dieser Stelle m\u00f6chte ich festhalten, wie eine einzelne Datei wiederhergestellt werden kann. <s>Mit der Wiederherstellung einer kompletten Nextcloud-Instanz besch\u00e4ftige ich mich in einem folgenden Artikel.<\/s><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"list-points\">Wiederherstellungspunkte auflisten<\/h3>\n\n\n\n<p>Um vorhandene Wiederherstellungspunkte auflisten zu k\u00f6nnen, wechselt man auf dem Container-Host zuerst in die Container-Instanz mit der laufenden Nextcloud:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ podman exec -u 33 -it nextcloud bash\nwww-data@nc_pod:~\/html$<\/code><\/pre>\n\n\n\n<p>Durch &#8218;-u 33&#8242; betritt man den Container mit der UID des Users www-data, welcher berechtigt ist, die folgenden Kommandos auszuf\u00fchren. In obigem Beispiel hei\u00dft die Container-Instanz schlicht &#8217;nextcloud&#8216;. F\u00fcr weitere Informationen zum Kommando siehe podman-exec(1). Die Restore-Points k\u00f6nnen nun wie folgt aufgelistet werden:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>www-data@nc_pod:~\/html$ .\/occ backup:point:list\n- retreiving data from local\n &gt; found RestoringPoint 20220305001002-full-3ebDDoh2yinj55C\n &gt; found RestoringPoint 20220307235028-differential-W558tuHGTnCbwgx\n &gt; found RestoringPoint 20220310234002-differential-1NHETYudPSx6Yxc\n &gt; found RestoringPoint 20220312001002-full-i1SY9VxDZRL8n1O\nAusgabe gek\u00fcrzt.<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"search-point\">Einen Wiederherstellungspunkt nach einer Datei durchsuchen<\/h3>\n\n\n\n<p>Angenommen, die Bilddatei <code>Frog.jpg<\/code> ist abhandengekommen. Nun kann ein Wiederherstellungspunkt wie folgt nach dem Dateinamen durchsucht werden:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>www-data@nc_pod:~\/html$ .\/occ backup:file:search --point 20220305001002-full-3ebDDoh2yinj55C Frog.jpg\n\n- searching in 20220305001002-full-3ebDDoh2yinj55C (2022-03-05 00:10:02)\n 1\/1 &#91;============================] 100%\n   &gt; found tronde\/files\/Photos\/Frog.jpg (447.02 KB) in data\/data-baa61d4a-85a8-4cc7-b43b-5a6270b7143e\n   &gt; found bob\/files\/Photos\/Frog.jpg (447.02 KB) in data\/data-baa61d4a-85a8-4cc7-b43b-5a6270b7143e\n 1\/1 &#91;============================] 100%\n   &gt; found core\/skeleton\/Photos\/Frog.jpg (447.02 KB) in nextcloud\/nextcloud-853e4f81-7f34-4a85-a428-1f569fe7efb5\n 1\/1 &#91;============================] 100%<\/code><\/pre>\n\n\n\n<p>In dem angegebenen Wiederherstellungspunkt existiert die Datei <code>Frog.jpg<\/code> insgesamt dreimal. Es wird jeweils der komplette Pfad angezeigt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"Frog\">Wiederherstellung von bob\/files\/Photos\/Frog.jpg<\/h3>\n\n\n\n<p>Nun soll die Datei <code>Frog.jpg<\/code> f\u00fcr den Benutzer Bob aus dem oben verwendeten Wiederherstellungspunkt wiederhergestellt werden. Da meine Wiederherstellungspunkte komprimiert gespeichert werden, dient der erste Befehl im folgenden Codeblock jedoch erstmal dazu, einen Wiederherstellungspunkt zu entpacken.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>www-data@nc_pod:~\/html$ .\/occ backup:point:unpack 20220305001002-full-3ebDDoh2yinj55C\nUnpacking Restoring Point 20220305001002-full-3ebDDoh2yinj55C\n &gt; lock and set status to unpacking\n &gt; Browsing RestoringData data\n   &gt; Unpacking RestoringChunk data-baa61d4a-85a8-4cc7-b43b-5a6270b7143e: proceeding\n     * copying parts to temp files\n       - 00001-Ur86KyoXRnp8Evt: \/tmp\/phpkzVs4Y\n     * merging parts into single file: \/tmp\/phpyLjmxZ\n     * Extracting \/tmp\/phpyLjmxZ: \/tmp\/phpmJG1O1\n     - storing chunk in appdata ok\n     * removing old chunk parts\n &gt; Browsing RestoringData nextcloud\n   &gt; Unpacking RestoringChunk nextcloud-853e4f81-7f34-4a85-a428-1f569fe7efb5: proceeding\n     * copying parts to temp files\n       - 00001-EUEeVME26dbQyf6: \/tmp\/phpVfSAt3\n     * merging parts into single file: \/tmp\/phpc3kVw0\n     * Extracting \/tmp\/phpc3kVw0: \/tmp\/phpF1kt52\n     - storing chunk in appdata ok\n     * removing old chunk parts\n &gt; Browsing RestoringData apps\n   &gt; Unpacking RestoringChunk apps-14864f48-87a9-4c61-82f5-33defc3de2d2: proceeding\n     * copying parts to temp files\n       - 00001-65lDdATRHTQde5b: \/tmp\/phpDngG62\n     * merging parts into single file: \/tmp\/php9U5X7Y\n     * Extracting \/tmp\/php9U5X7Y: \/tmp\/phpXGwXP0\n     - storing chunk in appdata ok\n     * removing old chunk parts\n &gt; Browsing RestoringData config\n   &gt; Unpacking RestoringChunk config-a8809c3e-5259-49b4-b2cb-2dbeb755949f: proceeding\n     * copying parts to temp files\n       - 00001-HMfvJewXGLEckCH: \/tmp\/phpPePsK1\n     * merging parts into single file: \/tmp\/phpVlxXA1\n     * Extracting \/tmp\/phpVlxXA1: \/tmp\/phpBUIDm0\n     - storing chunk in appdata ok\n     * removing old chunk parts\n &gt; Browsing RestoringData apps-custom_apps-84a585e6\n   &gt; Unpacking RestoringChunk apps-custom_apps-84a585e6-c4e2adaa-eb06-4318-8196-62aea73b89c8: proceeding\n     * copying parts to temp files\n       - 00001-pXttjhVm9cRU6DU: \/tmp\/phpATT8t2\n     * merging parts into single file: \/tmp\/php8HMcR1\n     * Extracting \/tmp\/php8HMcR1: \/tmp\/phpmHRKS1\n     - storing chunk in appdata ok\n     * removing old chunk parts\n &gt; Browsing RestoringData sqldump\n   &gt; Unpacking RestoringChunk sqldump-d0ebed1c-81dd-418b-a8ba-cecca8d92c00: proceeding\n     * copying parts to temp files\n       - 00001-QYOIpn2zOj43TsL: \/tmp\/phpcEUqQZ\n     * merging parts into single file: \/tmp\/phpOwn0g1\n     * Extracting \/tmp\/phpOwn0g1: \/tmp\/phpiJxrh3\n     - storing chunk in appdata ok\n     * removing old chunk parts\n &gt; removing status packed\n &gt; unlocking restoring point\n\nwww-data@nc_pod:~\/html$ .\/occ backup:point:restore 20220305001002-full-3ebDDoh2yinj55C --file bob\/files\/Photos\/Frog.jpg --data data                                           \n   &gt; restoring bob\/files\/Photos\/Frog.jpg (447.02 KB) from \/data\/data-baa61d4a-85a8-4cc7-b43b-5a6270b7143e\/data-baa61d4a-85a8-4cc7-b43b-5a6270b7143e (rewind: 8 days, 20 hours, 51 minutes and 20 seconds): ok<\/code><\/pre>\n\n\n\n<p>Die allgemeine Befehlsform f\u00fcr die Wiederherstellung lautet:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>backup:point:restore &#91;--force] &#91;--do-not-ask-data] &#91;--do-not-ask-sql] &#91;--file FILE] &#91;--chunk CHUNK] &#91;--data DATA] &#91;--] &lt;pointId&gt;<\/code><\/pre>\n\n\n\n<p>Es ist nicht gut dokumentiert, wie man den korrekten Wert f\u00fcr <code>--data<\/code> herausfindet. Ich habe diesen durch Ausprobieren gefunden. Dann war der Restore jedoch kein Problem mehr. Wie man die korrekten Werte f\u00fcr <code>--data<\/code> bzw. <code>--chunk<\/code> sicher identifiziert, muss ich noch herausfinden. Falls hier jemand einen Tipp f\u00fcr mich hat, freue ich mich \u00fcber euren Kommentar oder eine E-Mail.<\/p>\n\n\n\n<p>Um Speicherplatz zu sparen, komprimiere ich den genutzten Wiederherstellungspunkt wieder und verlasse den Container:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>www-data@nc_pod:~\/html$ .\/occ backup:point:pack 20220305001002-full-3ebDDoh2yinj55C\nPacking Restoring Point 20220305001002-full-3ebDDoh2yinj55C\n &gt; lock and set status to processing\n &gt; Browsing RestoringData data\n   &gt; Packing RestoringChunk data-baa61d4a-85a8-4cc7-b43b-5a6270b7143e: proceeding\n     * copying chunk to temp file \/tmp\/phpsyGIxw: ok\n     * compressing \/tmp\/phpsyGIxw: \/tmp\/phpjuZY7z\n     * spliting \/tmp\/phpjuZY7z in parts: 1 part(s) \n     - storing parts in appdata .ok\n     * Removing old chunk file data-baa61d4a-85a8-4cc7-b43b-5a6270b7143e.zip\n &gt; Browsing RestoringData nextcloud\n   &gt; Packing RestoringChunk nextcloud-853e4f81-7f34-4a85-a428-1f569fe7efb5: proceeding\n     * copying chunk to temp file \/tmp\/php6f6Kfx: ok\n     * compressing \/tmp\/php6f6Kfx: \/tmp\/phpz3Ndtz\n     * spliting \/tmp\/phpz3Ndtz in parts: 1 part(s) \n     - storing parts in appdata .ok\n     * Removing old chunk file nextcloud-853e4f81-7f34-4a85-a428-1f569fe7efb5.zip\n &gt; Browsing RestoringData apps\n   &gt; Packing RestoringChunk apps-14864f48-87a9-4c61-82f5-33defc3de2d2: proceeding\n     * copying chunk to temp file \/tmp\/phpf19OHA: ok\n     * compressing \/tmp\/phpf19OHA: \/tmp\/phpZMcpmw\n     * spliting \/tmp\/phpZMcpmw in parts: 1 part(s) \n     - storing parts in appdata .ok\n     * Removing old chunk file apps-14864f48-87a9-4c61-82f5-33defc3de2d2.zip\n &gt; Browsing RestoringData config\n   &gt; Packing RestoringChunk config-a8809c3e-5259-49b4-b2cb-2dbeb755949f: proceeding\n     * copying chunk to temp file \/tmp\/phpykt9Rw: ok\n     * compressing \/tmp\/phpykt9Rw: \/tmp\/phpxik6bx\n     * spliting \/tmp\/phpxik6bx in parts: 1 part(s) \n     - storing parts in appdata .ok\n     * Removing old chunk file config-a8809c3e-5259-49b4-b2cb-2dbeb755949f.zip\n &gt; Browsing RestoringData apps-custom_apps-84a585e6\n   &gt; Packing RestoringChunk apps-custom_apps-84a585e6-c4e2adaa-eb06-4318-8196-62aea73b89c8: proceeding\n     * copying chunk to temp file \/tmp\/php1oAWAA: ok\n     * compressing \/tmp\/php1oAWAA: \/tmp\/phpOtyrjA\n     * spliting \/tmp\/phpOtyrjA in parts: 1 part(s) \n     - storing parts in appdata .ok\n     * Removing old chunk file apps-custom_apps-84a585e6-c4e2adaa-eb06-4318-8196-62aea73b89c8.zip\n &gt; Browsing RestoringData internal\n   &gt; Packing RestoringChunk app.zip: already packed\n   &gt; Packing RestoringChunk restore.php: already packed\n &gt; Browsing RestoringData sqldump\n   &gt; Packing RestoringChunk sqldump-d0ebed1c-81dd-418b-a8ba-cecca8d92c00: proceeding\n     * copying chunk to temp file \/tmp\/phpFfW2zy: ok\n     * compressing \/tmp\/phpFfW2zy: \/tmp\/phpvXl8qy\n     * spliting \/tmp\/phpvXl8qy in parts: 1 part(s) \n     - storing parts in appdata .ok\n     * Removing old chunk file sqldump-d0ebed1c-81dd-418b-a8ba-cecca8d92c00.zip\n &gt; removing status processing, adding status packed\n &gt; unlocking restoring point\nwww-data@nc_pod:~\/html$ exit\nexit<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Wiederherstellung eines Ordners inkl. Inhalt<\/h2>\n\n\n\n<p>Manchmal ist es erforderlich, statt einzelner Dateien ganze Ordner inkl. Inhalt wiederherzustellen. Wie dies funktioniert, demonstriere ich im Folgenden f\u00fcr den Ordner Documents des Benutzers Bob. Dazu wechsle ich zuerst wieder in den Container, <a href=\"#list-points\">wie in diesem Abschnitt bereits beschrieben wurde.<\/a><\/p>\n\n\n\n<p><strong>TL;DR:<\/strong> Die Wiederherstellung eines Ordners inkl. dessen Inhalts ist aktuell nicht m\u00f6glich (siehe [<a href=\"#quellen-links\">6<\/a>]). Wer es eilig hat, kann direkt zum <a href=\"#Fazit\">Fazit<\/a> springen.<\/p>\n\n\n\n<p>W\u00e4hrend ich im vorherigen Abschnitt <a href=\"#search-point\">einen ausgew\u00e4hlten Wiederherstellungspunkt nach einer Datei durchsucht<\/a> habe, liste ich diesmal alle Wiederherstellungspunkte bis zum 15.03.2022 auf, welche den gesuchten Pfad enthalten:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>www-data@nc_pod:~\/html$ .\/occ backup:file:search bob\/files\/Documents --until 2022-03-15\n\n- searching in 20220305001002-full-3ebDDoh2yinj55C (2022-03-05 00:10:02)\n 1\/1 &#91;============================] 100%\n   &gt; found bob\/files\/Documents\/Example.md (1.07 KB) in data\/data-baa61d4a-85a8-4cc7-b43b-5a6270b7143e\n   &gt; found bob\/files\/Documents\/Nextcloud flyer.pdf (365.24 KB) in data\/data-baa61d4a-85a8-4cc7-b43b-5a6270b7143e\n   &gt; found bob\/files\/Documents\/Readme.md (136 B) in data\/data-baa61d4a-85a8-4cc7-b43b-5a6270b7143e\n   &gt; found bob\/files\/Documents\/Welcome to Nextcloud Hub.docx (24.56 KB) in data\/data-baa61d4a-85a8-4cc7-b43b-5a6270b7143e\n 1\/1 &#91;============================] 100%\n\n- searching in 20220307235028-differential-W558tuHGTnCbwgx (2022-03-07 23:50:28)\n 1\/1 &#91;============================] 100%   no result\n\n- searching in 20220310234002-differential-1NHETYudPSx6Yxc (2022-03-10 23:40:02)\n 1\/1 &#91;============================] 100%   no result\n\n- searching in 20220312001002-full-i1SY9VxDZRL8n1O (2022-03-12 00:10:02)\n 1\/1 &#91;============================] 100%\n   &gt; found bob\/files\/Documents\/Example.md (1.07 KB) in data\/data-f55df957-3368-4b84-b957-4dc3e819c0ce\n   &gt; found bob\/files\/Documents\/Nextcloud flyer.pdf (365.24 KB) in data\/data-f55df957-3368-4b84-b957-4dc3e819c0ce\n   &gt; found bob\/files\/Documents\/Readme.md (136 B) in data\/data-f55df957-3368-4b84-b957-4dc3e819c0ce\n   &gt; found bob\/files\/Documents\/Welcome to Nextcloud Hub.docx (24.56 KB) in data\/data-f55df957-3368-4b84-b957-4dc3e819c0ce\n 1\/1 &#91;============================] 100%\n\n- searching in 20220314234502-differential-suwLdJJegRlO4XI (2022-03-14 23:45:02)\n 1\/1 &#91;============================] 100%   no result<\/code><\/pre>\n\n\n\n<p>Es muss der vollst\u00e4ndige Pfad zum gesuchten Verzeichnis angegeben werden. Wildcards wie z.B. <code>*\/Documents<\/code> oder <code>\"*\/Documents\"<\/code> funktionieren genauso wenig wie regul\u00e4re Ausdr\u00fccke. Dies kann die Suche nach einem Ordner schonmal schwierig gestalten. Denn welcher Anwender kennt schon den vollst\u00e4ndigen Pfad zu dem Ordner, der vermisst wird?<\/p>\n\n\n\n<p>Im obigen Codeblock ist zu sehen, dass der Pfad zum Ordner lediglich als Bestandteil der Pfade zu den darin enthaltenen Dateien angezeigt wird. Dies und die Erkenntnis, keine Suchmuster verwenden zu k\u00f6nnen, lassen bei mir erste Zweifel aufkommen, ob das Verzeichnis inkl. Inhalt wiederhergestellt werden kann, oder ob ich jede enthaltene Datei einzeln wiederherstellen muss.<\/p>\n\n\n\n<p>Doch bevor ich mich an der Wiederherstellung versuchen kann, muss ich zuerst den ausgew\u00e4hlten Wiederherstellungspunkt entpacken. Wie dies aussieht, kann dem <a href=\"#Frog\">Abschnitt \u00fcber die Dateiwiederherstellung<\/a> entnommen werden.<\/p>\n\n\n\n<p>Der folgende Codeblock zeigt dann auch, dass der Ordner nicht wiederhergestellt werden kann:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>www-data@nc_pod:~\/html$ .\/occ backup:point:restore 20220312001002-full-i1SY9VxDZRL8n1O --file bob\/files\/Documents --data data\n \nIn ChunkService.php line 925:\n                                                        \n  &#91;OCA\\Backup\\Exceptions\\ArchiveFileNotFoundException]  \n                                                        \n\nbackup:point:restore &#91;--force] &#91;--do-not-ask-data] &#91;--do-not-ask-sql] &#91;--file FILE] &#91;--chunk CHUNK] &#91;--data DATA] &#91;--] &lt;pointId&gt;<\/code><\/pre>\n\n\n\n<p>Eine Wiederherstellung ist <s>offenbar<\/s> nur auf Dateiebene m\u00f6glich (siehe [<a href=\"#quellen-links\">6<\/a>]). Das ist sehr schade, da dies die Wiederherstellung deutlich verkompliziert. Vor allem da Wildcards ebenfalls nicht funktionieren.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Fazit\">Fazit<\/h2>\n\n\n\n<p>In diesem Artikel habe ich das Thema Backup und Recovery aufgegriffen. Ich habe kurz beschrieben, wie eine Sicherung mit der Nextcloud-Backup-App konfiguriert werden kann. Nachdem einige Wiederherstellungspunkte erstellt wurden, habe ich exemplarisch eine Datei wiederhergestellt.<\/p>\n\n\n\n<p>Da die Wiederherstellungspunkte komprimiert gespeichert werden, musste der ausgew\u00e4hlte Wiederherstellungspunkt vor dem Restore erst dekomprimiert werden, was einige Zeit gedauert hat. Hier muss jeder f\u00fcr sich selbst entscheiden, ob man sich die k\u00fcrzere Zeit zur Wiederherstellung mit einem erh\u00f6hten Speicherbedarf durch unkomprimierte Wiederherstellungspunkte erkaufen m\u00f6chte oder nicht.<\/p>\n\n\n\n<p>Die zu Beginn des Artikels noch gelobte Dokumentation offenbarte schnell L\u00fccken und ich muss mein Urteil revidieren. Sie ist im besten Fall ausreichend.<\/p>\n\n\n\n<p>Der Versuch, einen Ordner inkl. Inhalt wiederherzustellen, endete hingegen in einer Entt\u00e4uschung. Dies ist aktuell offenbar nicht m\u00f6glich, da nur der Datei-Restore oder die Wiederherstellung der gesamten Nextcloud-Instanz unterst\u00fctzt wird. Diese Erfahrung l\u00e4sst mich ein wenig entt\u00e4uscht und unzufrieden zur\u00fcck.<\/p>\n\n\n\n<p>Wie sichert ihr eure Nextcloud? Welche Restore-F\u00e4lle habt ihr damit bereits durchgespielt? Ich freue mich auf eure Kommentare und darauf euch zu Teil 6: <s>Desaster-Recovery<\/s> Updates wieder begr\u00fc\u00dfen zu d\u00fcrfen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"update-20220327\">Update 27.03.2022<\/h2>\n\n\n\n<p>Der obige Text wurde dahingehend angepasst, dass nun deutlich wird, dass die Wiederherstellung ganzer Verzeichnisse inkl. deren Inhalt aktuell nicht unterst\u00fctzt wird (siehe [<a href=\"#quellen-links\">6<\/a>]). Nicht mehr zutreffende Textstellen habe ich gestrichen.<\/p>\n\n\n\n<p>Entgegen meiner urspr\u00fcnglichen Planung wird es keinen Artikel zum Thema Desaster-Recovery geben, da es mir aktuell nicht m\u00f6glich ist, die Restore-Points auf externem Speicher abzulegen (siehe [<a href=\"#quellen-links\">7<\/a>] und [<a href=\"#quellen-links\">8<\/a>]).<\/p>\n\n\n\n<p>Damit ist die <a href=\"https:\/\/github.com\/nextcloud\/backup\">Backup-App<\/a> in ihrem aktuellen Zustand (Version 1.0.6; Stand 27.03.2022) in meinen Augen unbrauchbar. Das ist schade, da mir die Idee, die Backup&amp;Recovery-Funktion als App direkt zu integrieren, vom Grundsatz her gut gef\u00e4llt.<\/p>\n\n\n\n<p>Bis auf Weiteres verfahre ich daher so, wie analog im Artikel <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/backup-und-restore-im-kanboard-container-land\/\" data-type=\"post\" data-id=\"2705\">Backup und Restore im Kanboard-Container-Land<\/a> beschrieben. Das dort beschriebene Verfahren l\u00e4sst sich auch hier anwenden und gen\u00fcgt meinen Anforderungen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"quellen-links\">Quellen und weiterf\u00fchrende Links<\/h2>\n\n\n\n<ol class=\"wp-block-list\"><li><a href=\"https:\/\/www.my-it-brain.de\/wordpress\/nextcloud-im-container-teil-1-der-plan\/\" data-type=\"post\" data-id=\"2993\">Nextcloud im Container &#8211; Teil 1: Der Plan<\/a><\/li><li><a href=\"https:\/\/www.my-it-brain.de\/wordpress\/nextcloud-im-container-teil-2-die-ansible-rolle\/\" data-type=\"post\" data-id=\"2996\">Nextcloud im Container &#8211; Teil 2: Die Ansible-Rolle<\/a><\/li><li><a href=\"https:\/\/www.my-it-brain.de\/wordpress\/nextcloud-im-container-teil-3-mit-reverse-proxy\/\" data-type=\"post\" data-id=\"3120\">Nextcloud im Container &#8211; Teil 3: Mit Reverse-Proxy<\/a><\/li><li><a href=\"https:\/\/www.my-it-brain.de\/wordpress\/nextcloud-im-container-teil-4-hier-und-da-klemmt-es\/\" data-type=\"post\" data-id=\"3140\">Nextcloud im Container &#8211; Teil 4: Hier und da klemmt es<\/a><\/li><li><a href=\"https:\/\/www.my-it-brain.de\/wordpress\/nextcloud-im-container-teil-6-updates\/\" data-type=\"post\" data-id=\"3173\">Nextcloud im Container \u2013 Teil 6: Updates<\/a><\/li><li><a href=\"https:\/\/github.com\/nextcloud\/backup\">Nextcloud Backup App auf GitHub<\/a><\/li><li><a href=\"https:\/\/github.com\/nextcloud\/backup\/issues\/211\">How to restore a folder with all files in it? #211<\/a><\/li><li><a href=\"https:\/\/github.com\/nextcloud\/backup\/issues\/237\">S3 upload still failes with OOM for 1.0.6 #237<\/a><\/li><li><a href=\"https:\/\/github.com\/nextcloud\/backup\/issues\/238\">Nothing being uploaded to external storage (WebDAV) #238<\/a><\/li><\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Hallo und herzlich willkommen zu Teil 5 von Nextcloud im Container. In diesem Artikel geht es um Backup und Restore. Die vorhergehenden Teile dieser Serie sind weiter unten verlinkt. Backup Mit dem Thema Backup und Restore im Containerland habe ich mich bereits in einem fr\u00fcheren Artikel besch\u00e4ftigt. Da ich mit dem Ansatz von dort nicht<span class=\"continue-reading\"> <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/nextcloud-im-container-teil-5-backup-und-restore\/\">[Weiterlesen&#8230;]<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_metis_text_type":"","_metis_text_length":0,"_post_count":0,"footnotes":""},"categories":[57],"tags":[9,16,652,688],"class_list":["post-3145","post","type-post","status-publish","format-standard","hentry","category-wochenend-projekte","tag-backup","tag-datensicherung","tag-nextcloud","tag-restore"],"_links":{"self":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/3145","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/comments?post=3145"}],"version-history":[{"count":10,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/3145\/revisions"}],"predecessor-version":[{"id":3183,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/3145\/revisions\/3183"}],"wp:attachment":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/media?parent=3145"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/categories?post=3145"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/tags?post=3145"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}