Das Verschieben eines Nextcloud-Datenordners auf eine größere externe Festplatte klingt nach einem einfachen Kopiervorgang. Ist es aber nicht. Der entscheidende Punkt ist, dass Nextcloud den lokalen Speicher anhand seines absoluten Pfads auf der Festplatte identifiziert. Wird dieser Pfad unbedacht geändert, kann der Server die Dateien als einen anderen Speicherort behandeln, was zu doppelten oder verwaisten Dateieinträgen, beschädigten Metadaten oder verloren gegangenen Freigabebeziehungen führen kann.
Die sicherste und praktischste Vorgehensweise für eine bestehende Installation ist daher, Nextcloud weiterhin den gleichen Datenverzeichnispfad anzuzeigen, während die eigentlichen Daten auf die externe Festplatte verschoben werden. Das aktuelle Nextcloud-Administrationshandbuch empfiehlt ausdrücklich, das Verzeichnis zu verschieben und anschließend einen symbolischen Link vom ursprünglichen Pfad zum neuen Speicherort zu erstellen. Das Handbuch warnt außerdem davor, dass eine direkte Änderung datadirectoryDatenbankänderungen erfordert und keine unterstützte Migrationsmethode darstellt. Weitere Informationen finden Sie in der Anleitung zur Fehlerbehebung für Nextcloud-Datenverzeichnisse .
Bevor Sie beginnen: Was ist verifiziert, was hängt von Ihrer Konfiguration ab?
| Frage | Praktische Antwort |
Kann ich datadirectorydas einfach so bearbeiten config.php? | Das ist allein nicht sicher. Nextcloud weist darauf hin, dass die Änderung des absoluten Pfads zum lokalen Speicher Datenbankbeziehungen beschädigen kann. Es empfiehlt sich daher, den ursprünglichen Pfad mithilfe eines symbolischen Links beizubehalten. |
| Benötige ich ein vollständiges Backup? | Ja. Die Backup-Dokumentation von Nextcloud umfasst die Konfiguration, das Datenverzeichnis, die Datenbank und relevante benutzerdefinierte Anwendungs-/Theme-Daten. Verwenden Sie die alte Festplatte nicht als einzige Backup-Kopie. |
| Muss die externe Festplatte im ext4-Format sein? | Dieses Verfahren schreibt kein bestimmtes Dateisystem vor. Die folgenden Beispiele verwenden ext4, da das normale Linux-Verhalten bezüglich Besitzverhältnissen und Berechtigungen unkompliziert ist. Andere Dateisysteme erfordern möglicherweise andere Mount-Optionen. |
Soll ich files:scan --alldanach rennen? | Normalerweise nicht für eine pfaderhaltende Verschiebung. Verwenden Sie diese Funktion, wenn Dateien tatsächlich im Dateicache fehlen oder wenn Dateien außerhalb von Nextcloud in den Datenbaum kopiert wurden und ein sofortiger erneuter Scan erforderlich ist. |
| Ist eine USB-Festplatte genauso zuverlässig wie eine interne Festplatte? | Das hängt vom Gehäuse, Kabel, der Stromversorgung, dem Dateisystem und dem Host ab. Wenn ein Wechseldatenträger nicht mehr verfügbar ist, stellt dies ein Verfügbarkeitsrisiko dar. Stellen Sie daher sicher, dass die Einbindung dauerhaft ist und überprüfen Sie sie, bevor Sie Nextcloud starten. |
1. Montieren Sie das externe Laufwerk an einem stabilen Montagepunkt.
Identifizieren Sie zunächst das Gerät und das Dateisystem. Unter Linux zeigen Befehle wie `ls -l` lsblk -fund ` blkidls -l` die Dateisystem-UUID an. Vermeiden Sie es, eine permanente Konfiguration um einen Gerätenamen wie `/dev/` zu erstellen /dev/sdb1; Linux-Gerätenamen können sich ändern, wenn Hardware hinzugefügt oder die Erkennungsreihenfolge geändert wird. Das Linux- Handbuch `fstab` empfiehlt UUID- oder LABEL-Kennungen für persistente Mounts.
lsblk -f
sudo blkid /dev/sdb1
sudo mkdir -p /mnt/nextcloud-data-storage
Fügen Sie einen passenden Eintrag hinzu /etc/fstab. Ersetzen Sie die Beispiel-UUID und den Dateisystemtyp durch die Werte Ihrer eigenen Festplatte:
UUID=YOUR-FILESYSTEM-UUID /mnt/nextcloud-data-storage ext4 defaults 0 2
Testen Sie die Einbindung, bevor Sie Nextcloud verwenden:
sudo mount -a
findmnt /mnt/nextcloud-data-storage
df -h /mnt/nextcloud-data-storage
Überprüfen Sie die externe Festplatte anhand ihrer UUID und bestätigen Sie ihren Mountpunkt, bevor Sie Nextcloud-Dateien verschieben.
Häufiger Irrtum: Ein Verzeichnis mit dem Namen „ /mnt/nextcloud-data-storagemountpoint“ beweist nicht, dass die Festplatte dort eingebunden ist. Selbst wenn die Festplatte fehlt, kann das Mountpoint-Verzeichnis auf der Systemfestplatte vorhanden sein. Empfehlung: Verwenden Sie findmnt„mountpoint mountpoint“ bei jedem Migrationstest und nach jedem Neustart.
2. Nextcloud sichern und Schreibvorgänge stoppen
Laut der aktuellen Backup-Anleitung von Nextcloud umfasst ein wiederherstellbares Backup das Datenverzeichnis, die Konfiguration, die Datenbank und weitere anwendungsspezifische Inhalte wie benutzerdefinierte Apps und Designs. Lesen Sie die offizielle Nextcloud-Backup-Dokumentation und stellen Sie sicher, dass das Backup nicht auf dem Laufwerk gespeichert wird, das Sie neu partitionieren oder anderweitig verwenden möchten.
Aktivieren Sie anschließend den Wartungsmodus im Nextcloud-Installationsverzeichnis. Unter Debian und Ubuntu lautet das Webserver-Konto üblicherweise www-data:
cd /var/www/nextcloud
sudo -E -u www-data php occ maintenance:mode --on
Die Migrationsrichtlinien besagen außerdem, dass während der Migration keine Cronjobs ausgeführt werden sollten und empfehlen, die Web-/Anwendungsserver während der Datenmigration anzuhalten. Die Vorgehensweise hängt von der jeweiligen Bereitstellung ab: Apache, Nginx plus PHP-FPM, Docker Compose, Snap, AIO und Kubernetes haben jeweils unterschiedliche Servicegrenzen.
Maßnahme: Deaktivieren Sie den Nextcloud-Cronjob oder beenden Sie den entsprechenden Crondienst und stoppen Sie anschließend den Web-/App-Dienst vor dem endgültigen Kopieren. Bei sehr großen Datensätzen können Sie die externe Festplatte vorab mit Daten füllen, während die Website online ist. Anschließend können Sie in den Wartungsmodus wechseln, alle Schreibvorgänge stoppen und einen letzten rsyncDurchlauf durchführen, um die Änderungen zu erfassen.
3. Kopieren Sie das gesamte Datenverzeichnis, einschließlich versteckter Dateien.
Kopieren Sie nicht nur Benutzerordner. Das Datenverzeichnis enthält auch versteckte Dateien .ncdataund Anwendungsdaten, die zum Speicher gehören. Nextcloud weist in seinem Verschiebungsvorgang explizit auf versteckte Dateien/Punktdateien hin.
Angenommen, das aktuelle Verzeichnis ist /var/www/nextcloud/dataund die externe Festplatte ist unter eingebunden /mnt/nextcloud-data-storage. Erstellen Sie das Zielverzeichnis und kopieren Sie das Verzeichnis:
sudo mkdir -p /mnt/nextcloud-data-storage/data
sudo rsync -Aax --info=progress2 /var/www/nextcloud/data/ /mnt/nextcloud-data-storage/data/
Die Nextcloud-Wiederherstellungsdokumentation verwendet rsync -Aaxein Beispiel zur Erhaltung der Verzeichnisstruktur und der Metadaten. Bei sehr großen Installationen empfiehlt es sich, nach dem Stoppen aller Schreibvorgänge einen zweiten Durchlauf durchzuführen und die Ausgabe zu überprüfen. Die benötigten Optionen können je nach Verwendung von ACLs, erweiterten Attributen, ungewöhnlichen Dateisystemen oder containergebundenem Speicher variieren.
Hintergrundschreibvorgänge stoppen und den gesamten Datenbaum kopieren, einschließlich der versteckten Nextcloud-Metadatendateien.
Häufiger Irrtum: Eine abgeschlossene Kopie bedeutet, dass die Migration beendet ist. Das stimmt nicht. Nextcloud benötigt weiterhin den erwarteten Pfad, und der HTTP-Benutzer muss auf den neuen Speicherort zugreifen und Daten schreiben können. Empfehlung: Überprüfen Sie die Dateianzahl oder die Prüfsummen, bevor Sie den Pfad ändern, und lassen Sie das Quellverzeichnis unverändert, bis der neue Speicher erfolgreich getestet wurde.
4. Den ursprünglichen Datenpfad mit einem symbolischen Link beibehalten.
Dies ist die wichtigste Sicherheitsmaßnahme. Angenommen, Nextcloud verwendet derzeit Folgendes:
'datadirectory' => '/var/www/nextcloud/data',
Ändern Sie diesen Wert nicht für die empfohlene pfaderhaltende Migration. Behalten Sie stattdessen das alte Verzeichnis als Rollback-Kopie bei und ersetzen Sie es durch einen symbolischen Link, der auf das externe Laufwerk verweist:
sudo mv /var/www/nextcloud/data /var/www/nextcloud/data.old
sudo ln -s /mnt/nextcloud-data-storage/data /var/www/nextcloud/data
ls -ld /var/www/nextcloud/data
Nextcloud dokumentiert diese Methode der symbolischen Verknüpfung, da der lokale Speicher über den absoluten Pfad identifiziert wird. Dank der bestehenden Verknüpfung kann Nextcloud weiterhin auf den lokalen Speicher zugreifen, /var/www/nextcloud/dataobwohl sich die Daten auf der externen Festplatte befinden.
Prüfen Sie die Eigentumsverhältnisse, bevor Sie weitreichende Berechtigungsänderungen vornehmen:
stat -c '%U:%G %a %n' /var/www/nextcloud/data.old
stat -c '%U:%G %a %n' /mnt/nextcloud-data-storage/data
namei -l /mnt/nextcloud-data-storage/data
Der HTTP-Benutzer muss auf die übergeordneten Verzeichnisse zugreifen und das Datenverzeichnis lesen und beschreiben können. Der korrekte Eigentümer variiert je nach Distribution und Installationsmethode. Die Dokumentation von Nextcloud (occ) weist darauf hin, dass das HTTP-Konto üblicherweise www-dataunter Debian/Ubuntu apacheund Fedora/CentOS lautet, auf anderen Systemen jedoch anders ist.
Behalten Sie den ursprünglichen Pfadnamen des Datenverzeichnisses bei und verweisen Sie ihn mit einem symbolischen Link auf die externe Festplatte.
Häufiger Irrtum: Die rekursive Ausführung eines generischen chmod 777Befehls behebt Berechtigungsprobleme. Dies kann das eigentliche Problem verschleiern und gleichzeitig die Sicherheit schwächen. Vorgehensweise: Vergleichen Sie das neue Verzeichnis mit den ursprünglichen Besitzverhältnissen und Berechtigungen, behalten Sie die ACLs bei, sofern verwendet, und nehmen Sie nur die minimal erforderlichen Korrekturen für den HTTP-Benutzer vor.
Was, wenn Sie sich wirklich verändern wollen datadirectory?
Nextcloud beschreibt zwar ein Verfahren ohne symbolische Links, kennzeichnet es jedoch in der Dokumentation als nicht unterstützt und warnt vor möglichen Datenbankfehlern. Es erfordert sowohl die Änderung config.phpals auch die Aktualisierung des entsprechenden local::/old-data-dir/Eintrags in der oc_storagesTabelle.
Das ist nicht einfach nur eine alternative Syntax für denselben Vorgang; es ändert die Speicherkennung, die Nextcloud intern speichert. Handlungsempfehlung: Verwenden Sie die Methode mit dem symbolischen Link, es sei denn, Sie verfügen über ein getestetes Backup, einen getesteten Wiederherstellungsprozess und einen konkreten betrieblichen Grund, den alten Pfadnamen zu entfernen. Wählen Sie bei einer Neuinstallation von Nextcloud den endgültigen Datenspeicherort stattdessen während der Installation. Nextcloud weist ausdrücklich darauf hin, dass dies einfacher ist als ein späteres Verschieben.
5. Neustart, Mount-Überprüfung und Nextcloud-Verbindung wiederherstellen
Bevor Sie Nextcloud starten, überprüfen Sie, ob das externe Dateisystem tatsächlich eingebunden ist und ob der symbolische Link darauf verweist:
findmnt /mnt/nextcloud-data-storage
readlink -f /var/www/nextcloud/data
sudo -E -u www-data test -r /var/www/nextcloud/data/.ncdata && echo readable
Starten Sie den Web-/Anwendungsdienst neu und aktivieren Sie den Nextcloud-Cronjob mit der für Ihre Bereitstellung geeigneten Methode erneut. Deaktivieren Sie anschließend den Wartungsmodus und überprüfen Sie den Serverstatus.
cd /var/www/nextcloud
sudo -E -u www-data php occ maintenance:mode --off
sudo -E -u www-data php occ status
Melden Sie sich an und testen Sie verschiedene Vorgänge: Öffnen Sie eine vorhandene Datei, laden Sie eine neue Datei hoch, benennen Sie sie um, löschen Sie sie, stellen Sie sie aus dem Papierkorb wieder her und überprüfen Sie, ob ein anderer Client sie synchronisieren kann. Starten Sie den Host einmal neu und wiederholen Sie den Vorgang findmnt. Dadurch werden fehlerhafte /etc/fstabEinträge erkannt, bevor sie während eines Ausfalls zu Problemen führen.
Überprüfen Sie nach dem Wechsel sowohl die Einbindung durch das Betriebssystem als auch die normalen Dateivorgänge in Nextcloud.
Benötigen Sie occ files:scan --all?
Nicht automatisch. Laut der Dokumentation des Nextcloud -Befehls `files`files:scan wird der Dateicache für neue oder geänderte Dateien aktualisiert. Dies kann nach manuellem Kopieren oder bei der Untersuchung von Cache-Inkonsistenzen hilfreich sein. Ein korrekt ausgeführter, pfaderhaltender Verschiebevorgang sorgt dafür, dass dieselben Dateien und derselbe logische lokale Speicherpfad erhalten bleiben. Daher sollte ein vollständiger Scan nicht als Standardmaßnahme („nur für den Fall“) durchgeführt werden.
Vorgehensweise: Testen Sie zunächst die Benutzeroberfläche und vergleichen Sie die erwarteten Dateien. Falls Dateien in Nextcloud fehlen, obwohl sie auf der Festplatte vorhanden sind, führen Sie einen gezielten Scan durch oder, falls erforderlich, einen vollständigen Scan files:scan --all. Beachten Sie, dass ein vollständiger Scan bei einer großen Installation viel Zeit in Anspruch nehmen kann.
Abschließende Migrations-Checkliste
- Eine aktuelle Datenbank, Konfiguration und Datensicherung befinden sich außerhalb der zu migrierenden Festplatte.
- Das externe Dateisystem verfügt über eine stabile Einbindung, die über UUID oder LABEL konfiguriert ist.
findmntbestätigt, dass das externe Laufwerk tatsächlich angeschlossen ist.
- Nextcloud-Schreibvorgänge und Cronjobs werden während der abschließenden Synchronisierung gestoppt.
- Das gesamte Datenverzeichnis, einschließlich
.ncdata, wurde kopiert.
- Der ursprüngliche
datadirectoryPfadname bleibt bei einem symbolischen Link erhalten.
- Der HTTP-Benutzer kann den Mount-Pfad durchlaufen und die Daten lesen/schreiben.
- Nextcloud startet ohne Speicherfehler und
occ statusfunktioniert normal.
- Die Tests für Hochladen, Umbenennen, Löschen, Wiederherstellen, Herunterladen und Synchronisieren waren erfolgreich.
- Der Server wurde einmal neu gestartet, um zu beweisen, dass das externe Laufwerk beim Start zuverlässig eingebunden wird.
- Das alte Datenverzeichnis wurde erst gelöscht, nachdem die neue Konfiguration getestet und separat gesichert worden war.
Der wichtigste Punkt ist einfach: Die Migration von Nextcloud-Daten beschränkt sich nicht nur auf das Kopieren der Dateisysteme. Der Pfad ist Teil der lokalen Speicheridentität von Nextcloud. Bewahren Sie diesen Pfad nach Möglichkeit auf, richten Sie die externe Festplatte als zuverlässiges Systemlaufwerk ein, stoppen Sie Schreibvorgänge während des finalen Kopiervorgangs und erstellen Sie eine Sicherungskopie, bis der neue Speicher sowohl Anwendungstests als auch einen Neustart erfolgreich überstanden hat.