Sauvegarde de Nextcloud impossible

:fr: Modèle de message (français)

Matériel: Vieil ordinateur
Version de YunoHost: 3.6.5.3
J’ai accès à mon serveur : En SSH et Par la webadmin et En direct avec un clavier/écran
Êtes-vous dans un contexte particulier ou avez-vous effectué des modificiations particulières sur votre instance ? : non

Description du problème

La sauvegarde de Nextcloud par la web admin est impossible.
En ssh, lorsque je fait un sudo yunohost backup create --apps nextcloud --debug

à la fin du log, j’obtiens :

5254 INFO [################++..] > Backing up data directory...
12713 INFO Création d'une archive de sauvegarde à partir des fichiers collectés …
12713 DEBUG Création de l’archive tar de la sauvegarde …
1679528 ERROR Impossible d'ajouter des fichiers '/home/yunohost.app/nextcloud/data' (nommés dans l'archive : 'apps/nextcloud/backup/home/yunohost.app/nextcloud/data') à sauvegarder dans l'archive compressée '/home/yunohost.backup/archives/20191111-100153.tar.gz'
Traceback (most recent call last):
  File "/usr/lib/moulinette/yunohost/backup.py", line 1814, in backup
    tar.add(path['source'], arcname=path['dest'])
  File "/usr/lib/python2.7/tarfile.py", line 2032, in add
    recursive, exclude, filter)
  File "/usr/lib/python2.7/tarfile.py", line 2032, in add
    recursive, exclude, filter)
  File "/usr/lib/python2.7/tarfile.py", line 2032, in add
    recursive, exclude, filter)
  File "/usr/lib/python2.7/tarfile.py", line 2032, in add
    recursive, exclude, filter)
  File "/usr/lib/python2.7/tarfile.py", line 2032, in add
    recursive, exclude, filter)
  File "/usr/lib/python2.7/tarfile.py", line 2032, in add
    recursive, exclude, filter)
  File "/usr/lib/python2.7/tarfile.py", line 2032, in add
    recursive, exclude, filter)
  File "/usr/lib/python2.7/tarfile.py", line 2025, in add
    self.addfile(tarinfo, f)
  File "/usr/lib/python2.7/tarfile.py", line 2054, in addfile
    copyfileobj(fileobj, self.fileobj, tarinfo.size)
  File "/usr/lib/python2.7/tarfile.py", line 274, in copyfileobj
    raise IOError("end of file reached")
IOError: end of file reached
1679788 DEBUG action [868.1] executed in 1679.268s
1679789 DEBUG lock has been released
1679789 ERROR Impossible de créer la sauvegarde

J’ai pensé à faire la commande suivante et j’ai obtenu le résultat qui suit :

$ sudo grep copyfileobj /usr/lib/python2.7/tarfile.py
259:def copyfileobj(src, dst, length=None):
266:        shutil.copyfileobj(src, dst)
2054:            copyfileobj(fileobj, self.fileobj, tarinfo.size)
2235:                copyfileobj(source, target)

La sauvegarde de Nextcloud lors de la mise à jour de ce matin (j’espérais une résolution de problème par la même occasion), a elle pu faire une sauvegarde “pré-mise-à-jour” avec le message ci-dessous trouvé dans le debug et si je comprends bien, yunohost a pu faire la sauvegarde de nextcloud sans le dossier /home/yunohost.app/nextcloud/data

10009 WARNING 5046 [WARN] /home/yunohost.app/nextcloud/data will not be saved, because 'BACKUP_CORE_ONLY' is set.

J’ai aussi fait cat /usr/lib/python2.7/tarfile.py et j’ai cherché la fonction copyfileobj que je vous soumets ci-dessous. Peutêtre que vous la comprendrez et aurez une idée de recherche à me proposer.

def copyfileobj(src, dst, length=None):
    """Copy length bytes from fileobj src to fileobj dst.
       If length is None, copy the entire content.
    """
    if length == 0:
        return
    if length is None:
        shutil.copyfileobj(src, dst)
        return

    BUFSIZE = 16 * 1024
    blocks, remainder = divmod(length, BUFSIZE)
    for b in xrange(blocks):
        buf = src.read(BUFSIZE)
        if len(buf) < BUFSIZE:
            raise IOError("end of file reached")
        dst.write(buf)

    if remainder != 0:
        buf = src.read(remainder)
        if len(buf) < remainder:
            raise IOError("end of file reached")
        dst.write(buf)
    return 

Une idée nouvelle? Sinon, j’espère qu’une mise à jour de yunohost viendra résoudre le problème.

Do you have a lot of data in your nextcloud ?
Are you sure you have enough free space to do this backup ?

What gives a df -h ?

Aucun problème à ce niveau là, il reste de la place pour 3 sauvegardes au moins.

Bonjour,

La solution ne pourrait-elle pas être celle-ci ?

Pour désactiver manuellement la sauvegarde des données volumineuses, pour les applications qui implémentent cette fonctionnalité, vous pouvez définir la variable BACKUP_CORE_ONLY . Pour ce faire, la variable doit être définie avant la commande de backup : sudo BACKUP_CORE_ONLY=1 yunohost backup create --apps nextcloud . Soyez prudent : il vous faudra alors sauvegarder vous même les données des utilisateurs de nextcloud. Choisir ce type de sauvegarde vous permettra de mettre en place manuellement des sauvegardes incrémentielles ou différentielles (que yunohost ne permet pas encore de faire automatiquement).

Source : https://yunohost.org/#/backup

1 Like

Je n’ai pas fait le test mais effectivement je pense que cette commande fonctionnerait.
Je ne l’ai pas fait car je voulais sauvegarder les données des utilisateurs aussi.
Vous semblez dire que ce serait possible d’effectuer des sauvegardes du CORE via yunohost (ça je comprends) et de sauvegarder les données des utilisateurs par ailleurs et qui plus est de façon incrémentielles.

Pourriez-vous m’expliquer plus en détail ou me donner un lien qui explique comment faire? avec quels outils?

Ça semblerait être une bonne solution en effet.

Le dossier /home/yunohost.app/nextcloud/data existe-t-il ou avais-tu déplacé le répertoire des données Nextcloud ailleurs ?

Je n’ai rien déplacé, et tout fonctionnait très bien il y a encore quelques temps. Ça s’est arrêté de fonctionner d’un coup, sans prévenir…

…mais le dossier que je t’indique existe-t-il ?

oui, oui, pardon, j’avais vérifié mais j’ai oublié de le préciser.
Oui, il existe bien.

Bonjour,
Ce que je comprends de cette méthode est de pouvoir sauvegarder le “core” Nextcloud avec Yunohost, d’une part, et, de scripter “out of the box” une sauvegarde des données, d’autre part.

Que signifie

scripter “out of the box” une sauvegarde des données

Comment faire ça?
Merci,

Tu trouveras quelques infos sur ce sujet

Je n’arrive pas à retrouver le sujet, mais il m’avait semblé comprendre que dans une version future Yunohost inclurait, nativement, un système de sauvegarde incrémentale.
À suivre, donc !