Matériel: Raspberry Pi 3b+ à la maison Version de YunoHost: 3.5.2.2 J’ai accès à mon serveur : En SSH | Par la webadmin Êtes-vous dans un contexte particulier ou avez-vous effectué des modifications particulières sur votre instance ? : oui
Modification de certains fichiers nginx pour autoriser l’accès à la Webadmin uniquement en local.
Installation de Sonerezh par yunohost puis application mise à jour manuellement
backup Borg
Description du problème
La sauvegarde ne sauvegarde pas tout le dossier /etc/yunohost, est-ce un bug ou un oubli?
J’ai eu le fichier /etc/yunohost/appslists.json de corrompu et je ne pouvais plus mettre à jour avec la commande yunohost upgrade , dépanné en remplaçant par celui d’un autre utilisateur yunohost.
J’ai donc crée un hook dans /etc/yunohost/hook.d/backup si c’est bien comme cela que ça s’appelle avec le contenu suivant:
#!/bin/bash
set -eu
source /usr/share/yunohost/helpers
backup_dir="${1}/conf/ynh"
# Save json files
ynh_backup "/etc/yunohost/appslists.json" "${backup_dir}/appslists.json"
Ça fonctionne. Ensuite je veux créer celui de restauration mais la restauration échoue. Qu’ai-je fait comme erreur?
Voici le script dans /etc/yunohost/hooks.d/restore
2019-06-22 12:36:53,937: WARNING - mv: impossible d'évaluer '/home/yunohost.backup/tmp/20190620-214002/conf/ynh/appslists.json': Aucun fichier ou dossier de ce type
Salut,
En fait si tu veux pas te casser la tête, tu fais:
Dans le fichier backup
#!/bin/bash
set -eu
source /usr/share/yunohost/helpers
ynh_backup "/etc/yunohost/appslists.json"
Et dans le fichier restore
#!/bin/bash
set -eu
source /usr/share/yunohost/helpers
ynh_restore_file "/etc/yunohost/appslists.json"
Logiquement ça devrait fonctionner, à condition que le fichier appslists.json existe bien à l’origine.
Est-ce un oublie ? Sans doute, a priori je dirais que oui si on imagine que la personne a ajouté la liste community ou la brique internet, plutôt non dans le cas contraire.
Comme la liste community et la liste de la brique sont en train de disparaître, au profit d’une liste d’apps général, j’aurais tendance à penser que si le fichier est corrompu, nous devrions plutôt le recréer. Mais une liste d’apps non-free.json apparaîtra peut être un jour.
Toujours est il que ça ressemble à un bug, où il y a plusieurs solutions. La solution du backup/restore peut causer des soucis si on restore le fichier d’une version ancienne de YunoHost vers celui d’une plus récente version. (en ce moment on migre les instances vers la nouvelles listes apps.json).
Merci ljf pour ta réponse.
Logiquement ça devrait fonctionner, mais en fait non
Voici le rapport de log complet: https://paste.yunohost.org/raw/giyoramesu
Le fichier /etc/yunohost/appslists.json existe bien.
Ce n’est pas bien grave, le backup se faisant bien je peux rétablir manuellement en récupérant le fichier dans l’archive, cependant je découvre ce système de “hook” et c’est quand même bien pratique pour sauvegarder/restaurer des fichiers avec une intégration parfaite à yunohost. Par ailleurs, y-a-t-il une règle à respecter pour le nom de ces scripts hooks?
Dans mon cas la liste community était ajoutée, cependant la situation a été résolue en ajoutant un fichier appslists.json avec uniquement la liste officielle et j’ai ensuite mis à jour le fichier en ajoutant la liste community à partir de la Webadmin. Je comprends le risque avec la restauration d’une version ancienne, j’ai une sauvegarde journalière aussi en cas de souci je rétablirai une version récente. Je trouve l’idée d’une liste unique d’apps nettement mieux que la façon dont c’est géré actuellement et de recréer celle-ci si le fichier est corrompu. C’est ce qu’il y a de plus transparent pour l’utilisateur. Et pour une liste non-free.json, pourquoi pas, si elle est gérée dans un fichier à part, ça devrait quand même simplifier les choses en cas de soucis en récréant la liste des apps générales et ne pas bloquer le système des mises à jours de celles-ci.
WARNING - cp: impossible d’évaluer ‘/home/yunohost.backup/tmp/20190624-175949/conf/ynh/appslists.json’: Aucun fichier ou dossier de ce type
J’ai vérifié que les droits et propriétaire étaient les mêmes, j’ai même essayé de mettre le script dans /usr/share/yunohost/hooks/restore. J’ai également essayé en prenant pour modèle le script 40-conf_ynh_currenthost et en gardant exactement la même structure et toujours rien. Dans ce dernier essai, j’ai donné un nom différent (12-myconf_ynh_appslists au lieu de 12-conf_ynh_appslists) afin de pouvoir sauvegarder indépendamment du reste du système.
Le problème semble se situer dans l’archive décompressée qui ne contient pas ce fichier alors qu’il est bien présent dans l’archive.
Ok merci.
Si ça peux servir, voici ce que le mail cron me rapporte ce matin avec, je le rappelle, une sauvegarde borg gérée par un script:
Le script de restauration '{part:s}' n’est pas disponible sur votre système, et ne l'est pas non plus dans l’archive.
Puis un peu plus loin:
Could not link /etc/yunohost/appslists.json to /home/yunohost.backup/tmp/sauvegarde_automatique_du_mardi-25-juin-2019/conf/ynh/appslists.json ([Errno 17] File exists) ... falling back to regular copy.
File "/usr/lib/python2.7/shutil.py", line 69, in copyfile
raise Error("`%s` and `%s` are the same file" % (src, dst))
shutil.Error: `/etc/yunohost/appslists.json` and `/home/yunohost.backup/tmp/sauvegarde_automatique_du_mardi-25-juin-2019/conf/ynh/appslists.json` are the same file