{"id":3436,"date":"2019-01-31T16:00:10","date_gmt":"2019-01-31T15:00:10","guid":{"rendered":"http:\/\/www.unicoda.com\/?p=3436"},"modified":"2019-04-05T23:25:09","modified_gmt":"2019-04-05T21:25:09","slug":"de-limportance-de-la-sauvegarde-dans-lauto-hebergement","status":"publish","type":"post","link":"https:\/\/www.unicoda.com\/?p=3436","title":{"rendered":"De l&rsquo;importance de la sauvegarde dans l&rsquo;auto-h\u00e9bergement"},"content":{"rendered":"\n<p>Le 29 au soir, mon Pi a fait une petite chute d&rsquo;une vingtaine de centim\u00e8tre lorsque le c\u00e2ble d&rsquo;alimentation s&rsquo;est pris dans l&rsquo;un des pieds de ma chaise de bureau. J&rsquo;ai d&rsquo;abord cru que la chute avait \u00e9t\u00e9 sans cons\u00e9quences. Mais l&rsquo;allumage d&rsquo;une LED rouge fixe et l&rsquo;extinction de la LED verte m&rsquo;ont rapidement convaincu du contraire.<\/p>\n\n\n\n<p>Apr\u00e8s une tentative infructueuse de relancer le serveur, je retire la carte SD du Pi afin de l&rsquo;examiner et constate une tr\u00e8s l\u00e9g\u00e8re pliure \u00e0 sa surface. J&rsquo;extrais la carte, l&rsquo;ins\u00e8re dans un lecteur afin de v\u00e9rifier son contenu. Pas de partitions d\u00e9tect\u00e9es et mont\u00e9es automatiquement. C&rsquo;est mauvais signe. Je teste un montage manuel, la r\u00e9ponse est sans appel : \u00ab\u00a0<em>mauvais type de syst\u00e8me de fichiers, option erron\u00e9e, superbloc erron\u00e9 sur \/dev\/sdg, page de code ou programme auxiliaire manquant, ou autre erreur.<\/em>\u00ab\u00a0. Par ailleurs, la carte SD est particuli\u00e8rement chaude au toucher lorsque je la retire du lecteur. Une seule conclusion s&rsquo;impose, la carte SD est morte.<\/p>\n\n\n\n<p>Je v\u00e9rifie le contenu de mon fichier <em>.hubic_credentials<\/em> en local et demande l&rsquo;\u00e9tat de la cha\u00eene de sauvegarde :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">duplicity collection-status cf+hubic:\/\/&lt;container> <\/pre>\n\n\n\n<p>Une sauvegarde compl\u00e8te date de la veille (28 janvier), je me lance dans une premi\u00e8re r\u00e9cup\u00e9ration locale des donn\u00e9es avec :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">duplicity restore --force -t now cf+hubic:\/\/&lt;container> data<\/pre>\n\n\n\n<p>Une fois en possession d&rsquo;une nouvelle carte SD, j&rsquo;ai donc r\u00e9install\u00e9 Raspbian pour pouvoir r\u00e9installer mon serveur. A ce stade, j&rsquo;ai la chance d&rsquo;avoir pass\u00e9 plusieurs heures \u00e0 \u00e9crire un script Ansible me permettant de d\u00e9ployer automatiquement mes diff\u00e9rents services \u00e0 partir de la sauvegarde effectu\u00e9e par duplicity. Tout fonctionne plut\u00f4t bien, jusqu&rsquo;\u00e0 ce qu&rsquo;on arrive \u00e0 la r\u00e9cup\u00e9ration des fichiers sur hubic, o\u00f9 un nombre non n\u00e9gligeable de requ\u00eate termine en erreur 404 et oblige \u00e0 relancer le script jusqu&rsquo;\u00e0 obtenir une r\u00e9ponse. Pas vraiment de solution de ce c\u00f4t\u00e9-l\u00e0 \u00e0 part changer d&rsquo;endroit pour le stockage de la sauvegarde. Les requ\u00eates en erreur finissant en g\u00e9n\u00e9ral par r\u00e9pondre apr\u00e8s un laps de temps al\u00e9atoire pouvant aller jusqu&rsquo;\u00e0 plusieurs jours. Bref, cette solution n&rsquo;est pas satisfaisante du tout !<\/p>\n\n\n\n<p>Apr\u00e8s pas loin d&rsquo;une dizaine d&rsquo;heure de tentative, l&rsquo;ensemble des fichiers n\u00e9cessaires \u00e0 duplicity est finalement disponible en local sur le syst\u00e8me d&rsquo;exploitation tout neuf. C&rsquo;est le moment de tester les diff\u00e9rents services. Wallabag et Shaarli fonctionne directement avec l&rsquo;ensemble des donn\u00e9es accessible. Ce n&rsquo;est malheureusement pas le cas de Gitea, FreshRSS et Nextcloud.<\/p>\n\n\n\n<p>Petit tour dans les logs de FreshRSS : \u00ab\u00a0<em>Access to database is denied<\/em>\u00ab\u00a0. J&rsquo;arr\u00eate le service mysql, le red\u00e9marre et rafra\u00eechis la page. Bingo ! L&rsquo;interface s&rsquo;affiche.<\/p>\n\n\n\n<p>Pour Gitea, le probl\u00e8me se situe \u00e9galement du c\u00f4t\u00e9 de la base de donn\u00e9e et le ticket correspondant sur le projet est le num\u00e9ro <a rel=\"noreferrer noopener\" aria-label=\"2979 (s\u2019ouvre dans un nouvel onglet)\" href=\"https:\/\/github.com\/go-gitea\/gitea\/issues\/2979\" target=\"_blank\">2979<\/a> . Apr\u00e8s connexion \u00e0 la base, un simple<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"> set global innodb_large_prefix = `ON`; <\/pre>\n\n\n\n<p>r\u00e9sous le probl\u00e8me. L&rsquo;ensemble des donn\u00e9es est pr\u00e9sent. Pas de perte.<\/p>\n\n\n\n<p>En ce qui concerne Nextcloud, le probl\u00e8me est \u00e0 chercher du c\u00f4t\u00e9 de la configuration de la sauvegarde. En effet, en y regardant de plus pr\u00e8s, il semble que pour limiter la taille de la sauvegarde, je n&rsquo;avais configur\u00e9 que la sauvegarde du dossier data, au moment de la mise en place. En fait, apr\u00e8s analyse, il s&rsquo;av\u00e8re que c&rsquo;est bien pire, le dossier semble \u00eatre pr\u00e9sent dans la sauvegarde, mais pas son contenu. \u00c9trange. Rien de catastrophique n\u00e9anmoins, les donn\u00e9es pr\u00e9sentes sur mon instance Nextcloud sont toutes synchronis\u00e9es soit sur mon ordinateur, soit sur mon t\u00e9l\u00e9phone, et par ailleurs, l&rsquo;instance ne contient aucune donn\u00e9e critique qui n&rsquo;ait elle-m\u00eame fait l&rsquo;objet d&rsquo;une sauvegarde sur un autre support.<\/p>\n\n\n\n<p>C\u00f4t\u00e9 r\u00e9installation, j&rsquo;ai configur\u00e9 Nextcloud pour utiliser la base existante r\u00e9import\u00e9e \u00e0 partir de la sauvegarde. Au passage, j&rsquo;en ai profit\u00e9 pour faire la mise \u00e0 jour vers la version 15. Les contacts, les calendriers et les t\u00e2ches sont revenus \u00e0 partir de la sauvegarde, j&rsquo;ai perdu au passage l&rsquo;enregistrement d&rsquo;un \u00e9v\u00e9nement, perte sans cons\u00e9quence. La sauvegarde \u00e9tant journali\u00e8re, les pertes sont tr\u00e8s limit\u00e9es. Pour la partie fichier, c&rsquo;est plus compliqu\u00e9, puisque le dossier <em>nextcloud<\/em> du serveur n&rsquo;est pas pr\u00e9sent dans la sauvegarde. Les fichiers \u00e9tant pr\u00e9sent en totalit\u00e9 sur mon disque dur local, j&rsquo;ai donc supprim\u00e9 l&rsquo;int\u00e9gralit\u00e9 du contenu sur le serveur via l&rsquo;interface web et j&rsquo;ai forc\u00e9 la synchronisation \u00e0 partir du contenu local via le client Nextcloud.<\/p>\n\n\n\n<p>Cette m\u00e9saventure m&rsquo;a permis de tester ma proc\u00e9dure de sauvegarde et de d\u00e9ploiement automatis\u00e9 du serveur et de ses services en conditions r\u00e9elles. J&rsquo;ai identifi\u00e9 quelques faiblesses, notamment du c\u00f4t\u00e9 du syst\u00e8me de stockage utilis\u00e9 par duplicity, \u00e0 savoir hubic et un probl\u00e8me de configuration du c\u00f4t\u00e9 de la sauvegarde de Nextcloud. Au passage, pas de perte de donn\u00e9es ou d&rsquo;informations, ce qui est un point plus que positif. A cette occasion, j&rsquo;en ai \u00e9galement profit\u00e9 pour mettre \u00e0 jour certaines parties d\u00e9pr\u00e9ci\u00e9es de mon script Ansible. Des am\u00e9liorations sont donc pr\u00e9vues, en particulier pour trouver une alternative correcte \u00e0 hubic pour stocker les donn\u00e9es de sauvegarde.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le 29 au soir, mon Pi a fait une petite chute d&rsquo;une vingtaine de centim\u00e8tre lorsque le c\u00e2ble d&rsquo;alimentation s&rsquo;est pris dans l&rsquo;un des pieds de ma chaise de bureau. J&rsquo;ai d&rsquo;abord cru que la chute avait \u00e9t\u00e9 sans cons\u00e9quences. Mais l&rsquo;allumage d&rsquo;une LED rouge fixe et l&rsquo;extinction de la LED verte m&rsquo;ont rapidement convaincu &hellip; <a href=\"https:\/\/www.unicoda.com\/?p=3436\" class=\"more-link\">Continuer la lecture<span class=\"screen-reader-text\"> de &laquo;&nbsp;De l&rsquo;importance de la sauvegarde dans l&rsquo;auto-h\u00e9bergement&nbsp;&raquo;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[337,322,415],"tags":[],"class_list":["post-3436","post","type-post","status-publish","format-standard","hentry","category-auto-hebergement","category-raspberry-pi","category-sauvegarde"],"_links":{"self":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/3436","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3436"}],"version-history":[{"count":15,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/3436\/revisions"}],"predecessor-version":[{"id":3453,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/3436\/revisions\/3453"}],"wp:attachment":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3436"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3436"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3436"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}