Déplacer un dossier de données Nextcloud vers un disque dur externe plus grand peut sembler une simple opération de copie et d'édition. Or, ce n'est pas le cas. Nextcloud identifie le stockage local par son chemin absolu sur le disque. Si ce chemin est modifié par inadvertance, le serveur peut considérer les fichiers comme se trouvant à un autre emplacement de stockage, ce qui peut entraîner des enregistrements de fichiers dupliqués ou orphelins, des métadonnées corrompues ou la perte des relations de partage.
Pour une installation existante, la solution la plus sûre consiste donc à conserver le même chemin d'accès au répertoire de données dans Nextcloud tout en déplaçant les données elles-mêmes vers le disque externe. Le manuel d'administration actuel de Nextcloud recommande explicitement de déplacer le répertoire, puis de créer un lien symbolique depuis le chemin d'origine vers le nouvel emplacement. Le manuel précise également que toute modification directe datadirectorynécessite des modifications de la base de données et ne constitue pas une méthode de migration prise en charge. Consultez le guide de dépannage du répertoire de données de Nextcloud .
Avant de commencer : qu’est-ce qui est vérifié, qu’est-ce qui dépend de votre configuration ?
| Question | Réponse pratique |
Puis-je simplement modifier datadirectoryle texte config.php? | Cette opération n'est pas sans risque. Nextcloud indique que modifier le chemin absolu du stockage local peut rompre les relations de la base de données. Il est préférable de conserver le chemin d'origine à l'aide d'un lien symbolique. |
| Ai-je besoin d'une sauvegarde complète ? | Oui. La documentation de sauvegarde de Nextcloud inclut la configuration, le répertoire de données, la base de données et les données des applications/thèmes personnalisés. Ne considérez pas l'ancien disque comme votre unique copie de restauration. |
| Le disque dur externe doit-il être au format ext4 ? | Cette procédure n'impose aucun système de fichiers particulier. Les exemples ci-dessous utilisent ext4 car la gestion des droits d'accès et de propriété sous Linux y est simple. D'autres systèmes de fichiers peuvent nécessiter des options de montage différentes. |
Devrais-je courir files:scan --allensuite ? | En général, cette fonction n'est pas recommandée pour un déplacement préservant le chemin d'accès. Utilisez-la uniquement lorsque des fichiers sont absents du cache ou lorsqu'ils ont été copiés dans l'arborescence de données en dehors de Nextcloud et nécessitent une nouvelle analyse immédiate. |
| Un disque dur USB est-il aussi fiable qu'un disque interne ? | Cela dépend du boîtier, du câble, de l'alimentation, du système de fichiers et de l'hôte. L'indisponibilité d'un disque amovible représente un risque pour la disponibilité du service ; assurez-vous donc que le montage est permanent et vérifiez-le avant de démarrer Nextcloud. |
1. Montez le disque dur externe sur un chemin stable
Commencez par identifier le périphérique et le système de fichiers. Sous Linux, des commandes comme `ls` lsblk -fet `ls` blkidaffichent l'UUID du système de fichiers. Évitez de créer une configuration permanente basée sur un nom de périphérique tel que `/dev` ; les noms de périphériques Linux peuvent changer lors de l'ajout de matériel ou d'une modification de l'ordre de détection. Le manuel `fstab`/dev/sdb1 de Linux recommande l'utilisation d'identifiants UUID ou LABEL pour les montages persistants.
lsblk -f
sudo blkid /dev/sdb1
sudo mkdir -p /mnt/nextcloud-data-storage
Ajoutez une entrée appropriée /etc/fstab. Remplacez l'UUID et le type de système de fichiers d'exemple par les valeurs de votre propre disque :
UUID=YOUR-FILESYSTEM-UUID /mnt/nextcloud-data-storage ext4 defaults 0 2
Ensuite, testez le montage avant de toucher à Nextcloud :
sudo mount -a
findmnt /mnt/nextcloud-data-storage
df -h /mnt/nextcloud-data-storage
Vérifiez le disque externe par son UUID et confirmez son point de montage avant de déplacer des fichiers Nextcloud.
Idée reçue : un répertoire nommé «/mnt/nextcloud-data-storage mount » ne prouve pas que le disque y est monté. Si le disque est absent, le répertoire de montage peut toujours exister sur le disque système. Action : utilisez findmntcette commande à mountpointchaque test de migration et après un redémarrage.
2. Sauvegardez Nextcloud et arrêtez les écritures.
Le guide de sauvegarde actuel de Nextcloud indique qu'une sauvegarde récupérable inclut le répertoire de données, la configuration, la base de données et tout autre contenu spécifique au déploiement, comme les applications et thèmes personnalisés. Consultez la documentation officielle de Nextcloud relative à la sauvegarde et assurez-vous que celle-ci est stockée ailleurs que sur le disque que vous vous apprêtez à repartitionner ou à réutiliser.
Ensuite, activez le mode maintenance depuis le répertoire d'installation de Nextcloud. Sous Debian et Ubuntu, le compte du serveur web est généralementwww-data :
cd /var/www/nextcloud
sudo -E -u www-data php occ maintenance:mode --on
Les instructions de migration précisent également qu'aucune tâche cron ne doit s'exécuter pendant le déplacement et recommandent d'arrêter les serveurs web/d'applications pendant la migration des données. La procédure à suivre dépend du déploiement : Apache, Nginx avec PHP-FPM, Docker Compose, Snap, AIO et Kubernetes ont tous des limites de service différentes.
Action : désactivez la tâche cron Nextcloud ou arrêtez le service cron concerné, puis arrêtez le service web/application avant la copie finale. Si le volume de données est important, vous pouvez pré-remplir le disque externe pendant que le site est en ligne, puis passer en mode maintenance, arrêter les processus d’écriture et effectuer une dernière rsynccopie pour capturer les modifications.
3. Copiez l'intégralité du répertoire de données, y compris les fichiers cachés.
Ne copiez pas uniquement les dossiers utilisateur. Le répertoire de données contient également des fichiers cachés, tels que .ncdatades données d'application, qui font partie intégrante du stockage. Nextcloud mentionne explicitement les fichiers cachés (ou fichiers « dot ») lors de sa procédure de déplacement.
Supposons que le répertoire courant soit /var/www/nextcloud/dataet que le disque externe soit monté à /mnt/nextcloud-data-storage. Créez la destination et copiez le répertoire :
sudo mkdir -p /mnt/nextcloud-data-storage/data
sudo rsync -Aax --info=progress2 /var/www/nextcloud/data/ /mnt/nextcloud-data-storage/data/
La documentation de restauration de Nextcloud utilise rsync -Aaxcomme exemple la préservation de l'arborescence des répertoires et des métadonnées. Pour les installations très volumineuses, effectuez une seconde passe après l'arrêt de tous les processus d'écriture et examinez le résultat. Les options exactes nécessaires peuvent varier selon que votre source utilise des listes de contrôle d'accès (ACL), des attributs étendus, des systèmes de fichiers inhabituels ou un stockage monté dans un conteneur.
Arrêtez les écritures en arrière-plan et copiez l'intégralité de l'arborescence des données, y compris les fichiers de métadonnées Nextcloud cachés.
Idée reçue : une copie terminée signifie que la migration est achevée. Ce n’est pas le cas. Nextcloud a toujours besoin du chemin d’accès prévu, et l’utilisateur HTTP doit pouvoir accéder au nouvel emplacement et y écrire. Action : vérifiez le nombre de fichiers ou les sommes de contrôle avant de changer de chemin, et conservez le répertoire source intact jusqu’à ce que le nouveau stockage ait passé les tests.
4. Préservez le chemin de données d'origine avec un lien symbolique
Il s'agit de la principale mesure de sécurité. Supposons que Nextcloud utilise actuellement :
'datadirectory' => '/var/www/nextcloud/data',
Ne modifiez pas cette valeur pour la migration recommandée avec préservation du chemin. Conservez plutôt l'ancien répertoire comme copie de restauration et remplacez-le par un lien symbolique pointant vers le lecteur externe :
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 documente cette méthode de lien symbolique car le stockage local est identifié par son chemin absolu. Grâce à ce lien, Nextcloud continue d'y accéder /var/www/nextcloud/datamême si les données résident sur le disque externe.
Vérifiez la propriété avant d'apporter des modifications importantes aux autorisations :
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
L'utilisateur HTTP doit pouvoir parcourir les répertoires parents et lire/écrire dans le répertoire de données. Le propriétaire correct varie selon la distribution et la méthode d'installation. La documentation occ de Nextcloud indique que le compte HTTP est généralement utilisé www-datasur Debian/Ubuntu, apachesur Fedora/CentOS, et différent sur d'autres systèmes.
Conservez le chemin d'accès d'origine du répertoire de données et faites-le pointer vers le disque externe à l'aide d'un lien symbolique.
Idée reçue : l’exécution récursive d’une commande générique chmod 777corrige les permissions. Or, elle peut masquer le véritable problème tout en affaiblissant la sécurité. Action : comparez le nouveau répertoire avec ses droits d’accès et son propriétaire d’origine, conservez les ACL lorsqu’elles sont utilisées et n’effectuez que les corrections minimales requises pour l’utilisateur HTTP.
Et si vous vouliez vraiment changer datadirectory?
Nextcloud décrit bien une procédure sans lien symbolique, mais la même documentation indique qu'elle n'est pas prise en charge et avertit qu'elle peut endommager la base de données. Elle nécessite à la fois la modification config.phpet la mise à jour de l' local::/old-data-dir/entrée correspondante dans la oc_storagestable.
Il ne s'agit pas simplement d'une syntaxe alternative pour la même opération ; cela modifie l'identifiant de stockage enregistré en interne par Nextcloud. Action : utilisez la méthode du lien symbolique, sauf si vous disposez d'une sauvegarde et d'une procédure de restauration testées, ainsi que d'une raison opérationnelle spécifique justifiant la suppression de l'ancien chemin d'accès. Lors d'une nouvelle installation de Nextcloud, choisissez plutôt l'emplacement final des données pendant l'installation. Nextcloud indique clairement que cette méthode est plus simple que de déplacer les données ultérieurement.
5. Redémarrez, vérifiez le montage et remettez Nextcloud en ligne.
Avant de démarrer Nextcloud, vérifiez que le système de fichiers externe est bien monté et que le lien symbolique pointe vers celui-ci :
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
Redémarrez le service web/applicatif et réactivez la tâche cron Nextcloud en utilisant la méthode appropriée à votre déploiement. Désactivez ensuite le mode maintenance et vérifiez l'état du serveur.
cd /var/www/nextcloud
sudo -E -u www-data php occ maintenance:mode --off
sudo -E -u www-data php occ status
Connectez-vous et testez plusieurs opérations : ouvrir un fichier existant, en téléverser un nouveau, le renommer, le supprimer, le restaurer depuis la Corbeille et vérifier qu’un autre client peut le synchroniser. Redémarrez l’hôte une fois et répétez l’opérationfindmnt ; cela permet de détecter une entrée invalide /etc/fstabavant qu’elle ne devienne problématique en cas de panne.
Après la modification, vérifiez le montage du système d'exploitation et le fonctionnement normal des fichiers dans Nextcloud.
Avez-vous besoin de occ files:scan --all?
Pas automatiquement. La documentation de la commande `files` de Nextcloud indique files:scanqu'elle met à jour le cache de fichiers pour les fichiers nouveaux ou modifiés et peut s'avérer utile après une copie manuelle ou lors de la résolution d'incohérences dans le cache. Un déplacement conservant les chemins d'accès, correctement exécuté, vise à préserver les mêmes fichiers et le même chemin d'accès logique au stockage local. Par conséquent, une analyse complète ne devrait pas être l'étape de précaution par défaut.
Action : commencez par tester l’interface utilisateur et comparez-la aux fichiers attendus. Si des fichiers sont absents de Nextcloud alors qu’ils sont présents sur le disque, effectuez une analyse ciblée ou, le cas échéant, une analyse plus poussée files:scan --all. Notez qu’une analyse complète d’une installation importante peut prendre beaucoup de temps.
Liste de contrôle finale pour la migration
- Une base de données, une configuration et une sauvegarde de données actuelles existent en dehors du disque en cours de migration.
- Le système de fichiers externe possède un point de montage stable configuré par UUID ou LABEL.
findmntconfirme que le disque dur externe est bien monté.
- Les écritures Nextcloud et les tâches cron sont interrompues pendant la synchronisation finale.
- L'intégralité du répertoire de données, y compris
.ncdata, a été copiée.
- Le
datadirectorychemin d'accès d'origine est conservé grâce à un lien symbolique.
- L'utilisateur HTTP peut parcourir le chemin de montage et lire/écrire les données.
- Nextcloud démarre sans erreur de stockage et
occ statusfonctionne normalement.
- Les tests de chargement, de renommage, de suppression, de restauration, de téléchargement et de synchronisation ont réussi.
- Le serveur a été redémarré une fois pour prouver que le disque externe se monte correctement au démarrage.
- L'ancien répertoire de données n'a pas été supprimé tant que la nouvelle configuration n'a pas été testée et sauvegardée séparément.
L'idée principale est simple : migrer des données Nextcloud ne se limite pas à une simple copie du système de fichiers. Le chemin d'accès fait partie intégrante de l'identité du stockage local de Nextcloud. Il est donc essentiel de le préserver autant que possible, de configurer le disque externe comme un point de montage système fiable, d'interrompre les écritures pendant la copie finale et de conserver une copie de restauration jusqu'à ce que le nouveau stockage ait résisté aux tests applicatifs et à un redémarrage.