Déplacement données Nextcloud sur disque externe : erreur au scan du nouveau répertoire

Matériel: Olimex A20, lime2. image Debian buster
Version de YunoHost: 4.0.8.3 (stable) derrière freebox mini 4K
J’ai accès à mon serveur : En SSH | Par la webadmin
Êtes-vous dans un contexte particulier ou avez-vous effectué des modificiations particulières sur votre instance ? : non

Hello,

J’essaye de déplacer mes données Nextcloud vers un disque dur externe, en suivant le très clair tuto dispo ici : YunoHost • index

Je suis dans le cas B : je compte utiliser le disque externe pour d’autres choses, donc les données Nextcloud sont dans un dossier /media/stockage/nextcloud_data.

Tout s’est très bien passé, jusqu’à la dernière commande de scan du répertoire par Nextcloud :

sudo -u nextcloud php7.3 occ files:scan --all

J’obtiens ce message d’erreur en sortie :

An unhandled exception has been thrown:
RuntimeException: Could not get appdata folder in /var/www/nextcloud/lib/private/Files/AppData/AppData.php:94
Stack trace:
#0 /var/www/nextcloud/lib/private/Files/AppData/AppData.php(110): OC\Files\AppData\AppData->getAppDataRootFolder()
#1 /var/www/nextcloud/lib/private/Files/AppData/AppData.php(157): OC\Files\AppData\AppData->getAppDataFolder()
#2 /var/www/nextcloud/apps/richdocuments/lib/TemplateManager.php(148): OC\Files\AppData\AppData->newFolder('templates')
#3 /var/www/nextcloud/apps/richdocuments/lib/TemplateManager.php(134): OCA\Richdocuments\TemplateManager->createAppDataFolders()
#4 [internal function]: OCA\Richdocuments\TemplateManager->__construct('richdocuments', NULL, Object(OC\AllConfig), Object(OC\Files\AppData\AppData), Object(OC\URLGenerator), Object(OC\Files\Node\LazyRoot), Object(OC\L10N\LazyL10N))
#5 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(101): ReflectionClass->newInstanceArgs(Array)
#6 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(109): OC\AppFramework\Utility\SimpleContainer->buildClass(Object(ReflectionClass))
#7 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(126): OC\AppFramework\Utility\SimpleContainer->resolve('OCA\\Richdocumen...')
#8 /var/www/nextcloud/lib/private/AppFramework/DependencyInjection/DIContainer.php(455): OC\AppFramework\Utility\SimpleContainer->query('OCA\\Richdocumen...')
#9 /var/www/nextcloud/lib/private/AppFramework/DependencyInjection/DIContainer.php(427): OC\AppFramework\DependencyInjection\DIContainer->queryNoFallback('OCA\\Richdocumen...')
#10 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(87): OC\AppFramework\DependencyInjection\DIContainer->query('OCA\\Richdocumen...', true)
#11 [internal function]: OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}(Object(ReflectionParameter))
#12 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(101): array_map(Object(Closure), Array)
#13 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(109): OC\AppFramework\Utility\SimpleContainer->buildClass(Object(ReflectionClass))
#14 /var/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(126): OC\AppFramework\Utility\SimpleContainer->resolve('OCA\\Richdocumen...')
#15 /var/www/nextcloud/lib/private/AppFramework/DependencyInjection/DIContainer.php(455): OC\AppFramework\Utility\SimpleContainer->query('OCA\\Richdocumen...')
#16 /var/www/nextcloud/lib/private/ServerContainer.php(140): OC\AppFramework\DependencyInjection\DIContainer->queryNoFallback('OCA\\Richdocumen...')
#17 /var/www/nextcloud/lib/private/Console/Application.php(221): OC\ServerContainer->query('OCA\\Richdocumen...')
#18 /var/www/nextcloud/lib/private/Console/Application.php(136): OC\Console\Application->loadCommandsFromInfoXml(Array)
#19 /var/www/nextcloud/console.php(99): OC\Console\Application->loadCommands(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#20 /var/www/nextcloud/occ(11): require_once('/var/www/nextcl...')

Une idée de ce qui ne va pas ?
Merci d’avance !

Edit : je suis bien dans /var/www/nextcloud.

Bonsoir,

Ça me rappelle que je m’étais proposé de rectifier la documentation sur ce forum il y a plusieurs mois et ça m’est complètement sorti de la tête :roll_eyes:
Il y a des erreurs dans celle-ci. Tu peux suivre la discussion suivante dans laquelle j’étais intervenu.

Il y a un problème de propriétaire à l’arrivé en utilisant la commande cp -ir au lieu de cp -a. Tu peux toujours rectifier avec un chown si tu es à l’aise avec les commandes sur Debian. Il faut bien vérifier également que le chemin dans le fichier de configuration est le bon.
Edit: Bon j’ai corrigé le tuto, en attente d’acceptation

2 Likes

@metyun,

Merci pour les infos !

J’ai recommencé la procédure (après avoir rm -r /media/stockage/nextcloud_data) en suivant les infos indiquées dans ta PR de la doc. C’est en train de scanner, je confirmerai ici quand ce sera OK (ça a commencé il y a 10 minutes, c’est normal que ce soit un peu long j’imagine ?..).

Edit : tout a bien fonctionné !

Deux notes au passage :

  • Pas de /media/stockage/nextcloud_data/nextcloud/data chez moi, c’est directement /media/stockage/nextcloud_data/data. Dans config.php, j’ai plutôt indiqué 'datadirectory' => '/media/stockage/nextcloud_data/data', sinon ça ne fonctionne pas.

  • ligne 84, tu proposes de remplacer ls -la /home/yunohost.app/nextcloud par ls -la /home/yunohost.app/nextcloud/data, mais dans mon cas la première commande donnait bien un résultat identique à ls -al /media/stockage/nextcloud_data, alors que la deuxième donne quelque chose de très différent (“total 6812” au lieu de “total 12”).

Humm, effectivement, j’aurais dû le faire à tête reposée plutôt que hier soir, d’autant plus que Je n’ai pas testé moi-même.

Pour la 1ère remarque "Pas de /media/stockage/nextcloud_data/nextcloud/data chez moi, c’est directement /media/stockage/nextcloud_data/data"

Je suis OK, par contre je ne vois pas à quelle ligne j’ai pu indiquer ce chemin /media/stockage/nextcloud_data/nextcloud/data?

Pour la seconde remarque ligne 84, erreur de ma part, si quelqu’un a un compte Github pour corriger, ce serait sympa car je ne suis pas sûr d’y comprendre grand chose et je n’ai pas franchement envie de créer un compte juste pour ça.
Pour rappel ce qu’il y a à corriger:
La ligne 84 à supprimer (celle en vert)
La modification ligne 108 à remplacer par:

CAS B : 'datadirectory' => '/media/stockage/nextcloud_data/data',

Et logiquement selon tes indications, il faudrait également modifier ligne 106-107

CAS A : 'datadirectory' => '/media/stockage',

par

CAS A : 'datadirectory' => '/media/stockage/data',

Pour info pour ceux qui se poseraient la question, le shopt -s dotglob permet de copier le fichier .ocdata et de simplifier du coup le tuto.

Je suis OK, par contre je ne vois pas à quelle ligne j’ai pu indiquer ce chemin /media/stockage/nextcloud_data/nextcloud/data?

Pardon c’était pas clair : c’était déjà dans la doc avant ta mise à jour ! J’ai listé mes deux remarques à la suite, mais seule la seconde concernait tes apports d’hier.

Je veux bien m’occuper de mettre tout ça à jour sur Github, mais comme ta modif d’hier n’est pas encore intégrée (mergée), je crois qu’il faut attendre que ce soit validé par un.e admin. Je note ça sur un post-it pour y repasser dans quelques jours :slight_smile:

Oui pour la ligne 108, donc j’imagine aussi pour la précédente.

1 Like

Bonsoir,

Tu peux mettre un commentaire sur la ligne avec une remarque.

Amicalement,
Gaëtan.

1 Like

Tu peux mettre un commentaire sur la ligne avec une remarque.

Done, merci Gaëtan.

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.