Backup Nextcloud Netcup

Liebe Nutzer des deutschen Subforums.

Es passiert leider häufig genug, dass ganz wesentliche Infos bei vielen Threads fehlen. Dabei weiß niemand außer Euch selbst, wie ihr eure Maschine(n) konfiguriert habt. Doch Informationen sind wesentlich für eventuelle Helfer.

Bitte beachtet beim Posten deshalb folgende kleine Hinweise - die erleichtern allen die Fehlersuche. Und sparen allen Zeit. Und auch Nerven :wink:

  • Bei welchen Anbieter? Was für ein Server? v-server, shared, root, usw. Oder Lokal?
  • Netcup, Webspace
  • Auf welcher Hardware? PC, Raspberry PI, Banana, NAS usw…
  • Webspace
  • Betriebssystem sowie Version ALLER beteiligten Systeme
  • Nextcloud Version: https://nextcloud.com/
  • PHP Version: 7.4.33
  • Welche Datenbank? MySQL

Hallo Community,

ich betreibe eine Nextcloud über Netcup. Für meine Zwecke hat es bisher gereicht. Mir ist allerdings auch ein Backup lieb und ab hier fangen die Probleme an. Ich würde gerne die “Backup” App von Nextcloud nutzen (nur bräuchte ich dafür erstmal eine höhere Nextcloud Version).
Könntet ihr mir bitte helfen, wie ich ein Backup von meiner aktuellen Nextcloud-Instanz auf einem webspace anlege?
Im nächsten Schritt würde ich nämlich gerne ein Update der Nextcloud Version vollziehen und dazu wäre eine Sicherung schon hilfreich.

Vielen Dank.

Ordentliche Backups macht man so:

Backup — Nextcloud latest Administration Manual latest documentation

Und auf jedem Fall auf einem Testsystem ausprobieren, ob es wirklich funktioniert.

Restoring backup — Nextcloud latest Administration Manual latest documentation

genau diese Anleitung habe ich gesehen und würde ich gerne umsetzen. Nur kann ich das per ssh auf einem webspace?

In einer anderen Anleitung wurde empfohlen den “data” und “config” Ordner der alten Nextcloud-Instanz zu sichern und in eine neue (aktualisierte) Nextcloud Instanz zu verschieben. Würden so auch die Ordnerstrukturen erhalten bleiben?

Ja, natürlich! Das ist der entscheidende Vorteil vom Webspace bei Netcup.

Mit der nachfolgenden beispielhaften Anleitung funktioniert bei mir das Backup und Restore perfekt. Bei einem fehlgeschlgenen Nextcloud-Update stelle ich nur die Nextcloud-Dateien wieder her. Nur in absolut seltenen Fällen muss die Nextcloud-Datenbank wiederhergestellt werden.

Anleitung für Backup und Restore von Nextcloud bei netcup

Bei Bedarf kann der Ordner data bei netcup sehr einfach über die Wiederherstellen-Funktion zurückgesichert werden, 
daher wird das schnelle Backup ohne den data-Ordner durchgeführt.
Alternativ die Option --exclude "data" bei der Sicherung weglassen, jedoch dauert die Datensicherung dann sehr lange.
Eine weitere Alternative wäre, bei größeren Nextcloud-Instanzen, den Ordner "data" in ein separates Verzeichnis auszulagern.

Pfade der Nextcloud und der Backups zum Beispiel:
/httpdocs/nextcloud
/httpdocs/backup

********** Backup **********
Wartungsmodus der Nextcloud einschalten:
php -d memory_limit=512M /httpdocs/nextcloud/occ maintenance:mode --on

Komplettes Verzeichnis "nextcloud", außer dem Ordner "data" sichern:
tar --exclude "data" -cjpf ./httpdocs/backup/`date +%Y-%m-%d`_nextcloud.tar.bz2 ./httpdocs/nextcloud/

Datenbank sichern:
mysqldump --single-transaction -h'IP-Adresse (intern)' -u'Benutzername' -p'Passwort' 'Datenbankname' > /httpdocs/backup/`date +%Y-%m-%d`_nextcloud-sqlbkp.bak

Wartungsmodus der Nextcloud ausschalten:
php -d memory_limit=512M /httpdocs/nextcloud/occ maintenance:mode --off

********** Restore **********
Wartungsmodus der Nextcloud einschalten:
php -d memory_limit=512M /httpdocs/nextcloud/occ maintenance:mode --on

Sicherung wiederherstellen (Datum der Datei einfügen):
tar -xf httpdocs/backup/####-##-##_nextcloud.tar.bz2 -C ./

Datenbank wiederherstellen (Datum der Datei einfügen):
***** Optional *****
mysql -h'IP-Adresse (intern)' -u'Benutzername' -p'Passwort' -e "DROP DATABASE 'Datenbankname'"
mysql -h'IP-Adresse (intern)' -u'Benutzername' -p'Passwort' -e "CREATE DATABASE 'Datenbankname' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci"
***** Optional Ende *****
mysql -h'IP-Adresse (intern)' -u'Benutzername' -p'Passwort' 'Datenbankname' < /httpdocs/backup/####-##-##_nextcloud-sqlbkp.bak

Wartungsmodus der Nextcloud ausschalten:
php -d memory_limit=512M /httpdocs/nextcloud/occ maintenance:mode --off

Systemdatenfingerabdruck nach der Wiederherstellung einer Sicherung aktualisieren
php -d memory_limit=512M /httpdocs/nextcloud/occ maintenance:data-fingerprint

Ergänzung:

Der rsync Befehl würde um ein Vielfaches schneller gehen, jedoch ist dieser Befehl im Webspace nicht gestattet.

1 Like

danke sehr. wenn ich das recht sehe, dann soll ich mich per ssh auf den webspace schalten und dann direkt von dort aus “php…” ausführen? Sicherst du dir dann das “/backup” auf den Rechner oder verbleibt das auf dem Webspace?

für rsync alternative auf Netcup wird scheinbar das hier empfohlen. ich verstehe allerdings nicht wie es funktionieren sollte oder wie das mittels git funktionieren sollte.

Schau Dir einmal die verschiedenen Optionen von rsync an und vergleiche es mit git. Ich glaube hier wird von verschiedenen Dingen geredet.
Wichtig für ein ordentliches Backup der Nextcloud ist, dass man eine Wiederherstellung machen kann in welcher auch alle Dateiberechtigungen wieder am alten Ort sind.
Ich habe meine Backups mit einer kompletten Wiederherstellung der Nextcloud getestet und es war danach so, als wäre nie etwas geschehen. :wink:

was super klingt :slight_smile: hast du das dann irgendwie noch automatisiert oder so?

da fangen die Probleme schon an :smiley:

php -d memory_limit=512M /httpdocs/nextcloud/occ maintenance:mode --on
Your data directory is invalid
Ensure there is a file called ".ocdata" in the root of the data directory.

Cannot create "data" directory
This can usually be fixed by giving the webserver write access to the root directory. See https://docs.nextcloud.com/server/22/go.php?to=admin-dir_permissions

An unhandled exception has been thrown:
Exception: Environment not properly prepared. in /httpdocs/nextcloud/lib/private/Console/Application.php:162
Stack trace:
#0 /httpdocs/nextcloud/console.php(98): OC\Console\Application->loadCommands(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#1 /httpdocs/nextcloud/occ(11): require_once('/httpdocs/nextc...')

Wie löse ich das am besten auf?

ssh-zugriff ist eingestellt auf
/bin/bash (chrooted)

Oje, das ist schon etliche Jahre her, aber ich denke da musst Du noch eine Datei in den config Ordner Deiner Nextcloud hineinlegen.

/httpdocs/nextcloud/config/data.config.php

Datei data.config.php mit folgendem Inhalt anlegen.

<?php

$CONFIG['datadirectory'] = realpath(__dir__ . '/../data');

Anschließend die Zeile

  'datadirectory' => '/var/www/vhosts/hosting123456.abc45.netcup.net/httpdocs/nextcloud/data',

aus der config.php entfernen.

Somit wird bei den Befehlen im SSH-Zugang immer der Realpfad verwendet.

1 Like

Sofern du eine aktuell laufende Nextcloud hast, wirst du ein data-Verzeichnis haben, denn sonst würde sie gar nicht laufen. Hierauf muss der Webserver-Benutzer und in deinem Fall aufgrund eingeschränkter Netcup-Berechtigungen (bei Webspace) wahrscheinlich dein Benutzer Zugriff haben.

Such doch erst mal den data-Ordner.
find . -name "data"

Es ist wahrscheinlich /httpdocs/nextcloud/data. Dort muss es eine .ocdata-Datei geben. Wenn nicht, leg sie an.
touch /httpdocs/nextcloud/data/.ocdata
(verwende den korrekten Pfad)

Ich empfehle dir dringend dein Linux-Wissen zu verbessern. Falls du wichtige Daten in deiner Nextcloud speichern willst, besorge dir vielleicht besser eine Managed Nextcloud z. B. Storage Share von Hetzner um nur ein Beispiel zu nennen. Da sparst du dir den ganzen Ärger. Backups musst du trotzdem machen. Oder du suchst dir eine Managed Nextcloud inkl. Backup.

danke sehr. ich habe noch eine alte Nextcloud Version und möchte diese sehr gerne Update. Deshalb diese Backup-Frage, damit beim Update nichts schief gehen wird.

eine alte nextcloud-version: 22.1.0

Eine Internet-Anleitung für Updates empfahl ich solle die data + config speichern und ansonsten einfach ein neues Nextcloud auf den ftp hochladen. Ist diese Vorgehensweise empfehlenswert oder sollte ich lieber über ssh commands updaten? Sobald mal das Backup steht.

danke für den Tipp mit Manged Nextcloud. Ich würde es ja gerne lernen, deshalb nutze ich euer Forum und euer Wissen. Ich habe schlicht eine zu alte Nextcloud Version (weil ich eben zu lange mit Updates gewartet habe) und stoße daher auf diese Fehler, meiner Meinung nach. Ich bin eher mit Mac OS/Windows produktiv unterwegs, weniger mit Linux. Daher auch mein geringes Linux-Wissen.

Ich hatte mir damals (April 2023) für den Webspace bei Netcup eine Notiz gemacht. Betrifft die PHP-Einstellungen der Subdomain für die Nextcloud.

Ab Nextcloud Version 26.0.1 muss nun open_basedir auf diesen Wert geändert werden.

{WEBSPACEROOT}{/}{:}{TMP}{/}{:}{/}var{/}lib{/}php{/}sessions

Alle anderen Werte bleiben auf Standard stehen.

Eventuell könnte das zum Ziel führen.

wie kann ich diesen code hinterlegen?
mittels euch, chatgpt hab ich tatsächlich 1 Durchlauf backup hinbekommen :slight_smile: werde nochmal die aktuellere code-variante angeben, damit du ggf. den Backup-Code oben aktualisieren kannst.

Diese Einstellungen musst Du im Webhostingcontrolpanel (WCP) unter dem Punkt “PHP” tätigen. Dann gibt es noch die Apache-Einstellungen. Dort musst Du unter “Zusätzliche Header” noch fden folgenden Wert eintragen.

Strict-Transport-Security: max-age=15552000;IncludeSubDomains

Zuletzt noch die in meinem Beitrag beschriebene Datei in den config Ordner der Nextcloud hineinlegen und dann sollte alles passen.

Hallo Zusammen,
besten Dank für diesen Post. Anhand dessen konnte ich jetzt so ziemlich erfolgreich von Strato zu Netcup mit der Nextcloud umziehen. Vor dem Umzug hat alles funktioniert und ich habe auf dem alten System noch alles auf den neusten Stand gebracht, bevor ich nach eurem Austausch und den Tipps von Crashandy vorgegangen bin. Dafür nochmals einen besonderen Dank!

Bei /occ maintenance:repair bekomme ich allerdings noch Fehler ausgeworfen:

An unhandled exception has been thrown:
Error: Failed opening required ‘/httpdocs/cloud.xxxxx.xx/3rdparty/symfony/string/Resources/data/wcswidth_table_zero.php’ (include_path=‘/httpdocs/cloud.xxxxx.xx/3rdparty/pear/archive_tar:/httpdocs/cloud.xxxxx.xx/3rdparty/pear/console_getopt:/httpdocs/cloud.xxxxx.xx/3rdparty/pear/pear-core-minimal/src:/httpdocs/cloud.xxxxx.xx/3rdparty/pear/pear_exception:/httpdocs/cloud.xxxxx.xx/apps’) in /httpdocs/cloud.xxxxx.xx/3rdparty/symfony/string/AbstractUnicodeString.php:562

Hat das jemand von euch vielleicht auch schon gehabt oder eine Idee wie ich das auch noch gefixt bekomme?

1000 Dank
Niko

Hallo @rit2017

Welche PHP-Version läuft in Deinem Webhosting?
php -v
Bei mir ist die Version 8.3 voreingestellt.

bash-5.1$ php -v
PHP 8.3.16 (cli) (built: Feb 11 2025 12:06:58) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.16, Copyright (c) Zend Technologies
    with the ionCube PHP Loader v14.4.0, Copyright (c) 2002-2025, by ionCube Ltd.
    with Zend OPcache v8.3.16, Copyright (c), by Zend Technologies

Gruß Crashandy

Schau mal ob die Datei existiert und von deinem Webserver-Account gelesen werden kann:
/httpdocs/cloud.xxxxx.xx/3rdparty/symfony/string/Resources/data/wcswidth_table_zero.php

1 Like