j’aurais aimé avoir des retours d’expérience /conseils sur l’emploie des fonctionnalités backup et retore de yunohost.
En effet, je dois changer le serveur hébergeant mon yunohost et j’ai donc voulu utiliser les fonctions backup/ restore pour migrer l’intégralité de mon yunohost.
Les serveurs d’origine et de destination ont les caractéristiques suivantes :
La sauvegarde intégrale (données comprise) à pris 8h pour former un tar.gz de 177Go.
J’ai lancé le restauration hier vers 15h et il tourne encore… cela fait donc plus de 24 H que celui-ci est en cours.
J’ai le message suivant : “Info: Preparing archive for restoration…” donc je supose qu’il en est à exécuter la fonction def mount(self): du RestoreManager (voir par ici).
Si le serveur de destination a moins de 360Go d’espace disque total c’est sûr que c’est mort avec cette méthode (et encore vu que c’est compressé il faut potentiellement 177Go+la taille de la décompression).
Tu peux probablement vérifier que c’est encore en train de restaurer en regardant si l’espace disque augmente (df -h). Normalement, Les fichiers sont extraits sélectivement du tar.gz, ce qui dans le cas d’une restauration totale peut être plus lent, mais évite certains problèmes d’espace disque.
Je déconseille la méthode de sauvegarde par tar.gz pour les trop grosses données. Avant, je connaissais une méthode pour exclure les grosses données, ce qui permettait de les rsync séparément, mais je crois que ça ne marche plus.
De façon un peu “hackish” tu peux toujours déplacer temporairement les données avec ‘mv’ pendant le backup pour éviter qu’elles soient inclues dans la sauvegarde (en faisant attention de stopper php-fpm). Ensuite tu fais la restauration et le transfert des data nextcloud avec rsync.
Alternativement, tu peux essayer de restaurer sélectivement ton backup(yunohost backup restore --apps APP1), et faire la restauration de nextcloud manuellement si tu sais le faire en utilisant rsync ou autre chose pour déplacer les fichiers.
Pourquoi n’y ai je pas pensé ?
Cela en ai a 222 sur 591, même pas la moitié. Ca va être long !
Savait faire. Il faudrait que je retrouve comment dans la doc de Nextcloud. De mémoire, il y a une commande pour être en maintenance. Une fois les données importées on importe la db et c’est théoriquement bon.
Cela intéresse du monde une doc sur cela ?
Petite question à ce propos.
If neither --apps or --system are given, this will backup all apps and all ystem parts. If only --apps if given, this will only backup apps and no system parts. Similarly, if only --system is given, this will only backup system parts and no apps.
Je trouve les termes --apps et --system un peu flou. --apps : c’est contenu des BDDs compris ?
L’option --apps s’appuie sur les scripts de backup de chaque application, et ces derniers sont en charge de sauvegarder l’ensemble des données nécessaires de l’application, donc la base de données la plupart du temps.
En ce qui concerne le backup sélectif sans les données volumineuses (généralement dans /home/yunohost.app, pour Nextcloud ou Jirafeau par exemple), il suffit de lancer le backup ainsi :
Warning: YunoHost is already installed
Info: Preparing archive for restoration…
Traceback (most recent call last):
File "/usr/bin/yunohost", line 214, in <module>
timeout=opts.timeout,
File "/usr/lib/python2.7/dist-packages/moulinette/__init__.py", line 136, in cli
moulinette.run(args, output_as=output_as, password=password, timeout=timeout)
File "/usr/lib/python2.7/dist-packages/moulinette/interfaces/cli.py", line 425, in run
ret = self.actionsmap.process(args, timeout=timeout)
File "/usr/lib/python2.7/dist-packages/moulinette/actionsmap.py", line 523, in process
return func(**arguments)
File "/usr/lib/moulinette/yunohost/backup.py", line 2159, in backup_restore
restore_manager.mount()
File "/usr/lib/moulinette/yunohost/backup.py", line 1042, in mount
self.method.mount(self)
File "/usr/lib/moulinette/yunohost/backup.py", line 1902, in mount
tar.extractall(members=subdir_and_files, path=self.work_dir)
File "/usr/lib/python2.7/tarfile.py", line 2081, in extractall
self.extract(tarinfo, path)
File "/usr/lib/python2.7/tarfile.py", line 2118, in extract
self._extract_member(tarinfo, os.path.join(path, tarinfo.name))
File "/usr/lib/python2.7/tarfile.py", line 2211, in _extract_member
self.utime(tarinfo, targetpath)
File "/usr/lib/python2.7/tarfile.py", line 2332, in utime
os.utime(targetpath, (tarinfo.mtime, tarinfo.mtime))
OverflowError: Python int too large to convert to C long
Pour info sys.maxsize 9223372036854775807
Je crois que je vais faire le backup sans les données de nextcloud.