• chevron_right

      Immich – La solution de sauvegarde auto-hébergée pour vos photos et vidéos

      news.movim.eu / Korben · Thursday, 3 August, 2023 - 07:00 · 2 minutes

    Il était une fois, un Développeur nommé Alex qui cherchait désespérément une solution de sauvegarde auto-hébergée pour ses photos et vidéos de son magnifique bébé. Mais Alex ne voulait pas mettre tout ça dans un cloud privé tenu par les GAFAM.

    Alors en bon geek, Alex a créé sa propre solution : Immich ! C’est une application mobile et web disponible sous licence MIT, axée sur la confidentialité, la collecte de « souvenirs » et bien sûr la facilité d’utilisation.

    Voyez ça comme un Google Photos mais en version auto-hébergeable. D’ailleurs l’une des grandes fonctionnalités d’Immich est la sauvegarde automatique de vos photos et vidéos directement depuis votre smartphone et votre ordinateur. Plus besoin de se soucier de tout perdre dans un crash de disque dur ! Immich gère tout pour vous.

    Aussi, si vous êtes un(e) passionné(e) de photographie, vous serez encore plus joyeux puisqu’il prend même en charge les formats RAW ! Vous pouvez également rechercher des images en utilisant des métadonnées, des noms d’objets, des visages, et même CLIP dont je vous ai déjà parlé. Impressionnant, non ?

    Si vous avez un appareil Android ou iOS , vous pouvez récupérer l’appli mobile.

    Docker Compose est la méthode recommandée pour exécuter Immich en production donc créez un répertoire de votre choix pour y mettre les fichiers docker-compose.yml et .env.

    Ensuite, placez-vous dans le répertoire que vous avez créé et récupérez ces fichiers à l’aide des commandes suivantes :

    wget https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
    wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

    Vous pouvez aussi les récupérer à la main depuis votre navigateur. Renommez le fichier example.env en .env et éditez la pour modifier les valeurs concernant la base de données et l’emplacement où seront stockés les fichiers…etc.

    Enfin, lancez le docker-compose comme ceci :

    docker-compose up -d

    Et pour récupérer les dernières mises à jour de Immich, utilisez cette commande :

    docker-compose pull && docker-compose up -d

    Pour vous aider à en savoir plus, je vous invite à consulter la documentation officielle et pourquoi ne pas jeter un coup d’œil à la démo . Notez cependant que l’application est encore en développement, alors ne la considérez pas comme l’unique moyen de stockage pour vos photos et vidéos. Les backups c’est comme les billets de 100 €, c’est mieux quand y’en a plusieurs !

    À découvrir ici .

    • chevron_right

      Sauvegardez et restaurez vos données en toute sécurité avec Kopia

      news.movim.eu / Korben · Sunday, 15 January, 2023 - 08:00 · 2 minutes

    Hey salut !

    Alors aujourd’hui, je vais vous parler d’un super logiciel nommé Kopia.

    Si vous ne le connaissez pas encore, Kopia est un outil de sauvegarde open source qui est rapide et sécurisé. Il permet de créer des snapshots (instantanés) chiffrés de vos données et de les enregistrer sur un stockage local, distant ou dans le cloud de votre choix.

    Kopia a une version en ligne de commande, mais également une version avec une interface graphique (KopiaUI), ce qui en fait l’outil parfait pour tous les utilisateurs, que vous soyez débutants ou confirmés.

    L’outil dispose de fonctionnalités très pratiques comme la compression, la déduplication, le chiffrement « zero knowledge » de bout en bout sans oublier de la correction d’erreurs.

    Pour installer Kopia, vous devez télécharger le fichier d’installation correspondant à votre système d’exploitation à partir de la page d’installation de Kopia . La version de Kopia avec l’interface graphique s’appelle KopiaUI, donc ouvrez l’oeil, car il y a des versions CLI + UI pour quasiment tous les OS.

    Si vous préférez utiliser la ligne de commande, vous pouvez également installer Kopia en utilisant votre gestionnaire de paquets préféré, comme apt pour Ubuntu, yum pour CentOS ou brew pour macOS.

    Une fois Kopia installé, lancez l’application en cliquant sur l’icône Kopia dans le menu Démarrer (Windows) ou dans le dossier Applications (macOS). Vous pouvez également lancer Kopia en utilisant la ligne de commande en ouvrant un terminal et en tapant « kopia ».

    sudo apt update 
    sudo apt install kopia

    Sur macOS, vous pouvez utiliser brew en ouvrant un terminal et en tapant :

    brew update 
    brew install kopia

    L’interface graphique parle d’elle-même et je suis certain que vous n’aurez aucun mal à configurer votre premier snapshot.

    Pour info, Kopia est compatible avec les services de cloud suivants :

    • Amazon S3 et tout stockage dans le cloud compatible avec S3
    • Azure Blob Storage
    • Backblaze B2
    • Google Cloud Storage
    • Tout serveur distant ou stockage dans le cloud qui prend en charge WebDAV ou SFTP
    • Certains services de cloud pris en charge par Rclone (nécessite de télécharger et de configurer Rclone en plus de Kopia, mais Kopia gère/exécute Rclone pour vous)
    • Votre ordinateur local et tout stockage ou serveur en réseau
    • Votre propre serveur en configurant un serveur de dépôt Kopia.

    Kopia utilise la déduplication de données ce qui vous permettra d’économiser sur le stockage de votre service cloud.

    Pour utiliser Kopia avec la ligne de commande (pratique pour l’automatiser avec un script), ouvrez un terminal et tapez la commande « kopia » suivie des paramètres correspondants.

    Par exemple, pour créer une sauvegarde, vous pouvez utiliser la commande « kopia create » en spécifiant les fichiers/répertoires à sauvegarder, le nom de la sauvegarde et l’emplacement de stockage :

    kopia create /home/user/LesFichiersASauvegarder NomDeLaSauvegarde sftp://user@server/backups

    Ensuite, pour restaurer une sauvegarde, vous pouvez utiliser la commande « kopia restore » en spécifiant la sauvegarde à restaurer, les fichiers/répertoires à restaurer et l’emplacement de restauration

    Je vous mets un petit tuto pour ceux qui veulent :

    Amusez-vous bien !

    • Li chevron_right

      Sauvegarde de données

      Funix · pubsub.eckmul.net / linuxfr · Monday, 9 November, 2020 - 18:43 · 11 minutes

    <p>'lut nal,</p> <p>Vous me direz encore un journal sur la sauvegarde de données alors qu'il en existe tant d'autres. Mais il n'est jamais inutile de rappeler à tel point il est utile et nécessaire de ne pas négliger ce point et c'est souvent malheureusement suite à une mauvaise expérience qu'on s'en préoccupe sérieusement, et c'est malheureusement également ce qui m'est arrivé.</p> <p>Pendant longtemps je me suis cru à l'abri de la perte de mes données perso, depuis des années j'utilise d’un serveur Dell PowerEdge avec RAID matériel acheté d’occasion une poignée de figues sur Ebay (PowerEdge 840 puis T310 actuellement) et je fais des sauvegardes régulières sur disque dur externe USB grâce à un script lancé automatiquement avec l’utilitaire cron. Les données les plus précieuses se retrouvent sur un autre disque externe que je stocke au boulot au cas où la maison parte en fumée. Mon RAID était basé jusqu'à présent sur 4 disques Seagate ST2000DM01 de 2To chacun de 2015. Alors certes, on l'a suffisamment martelé sur ce site le RAID n’est pas assimilable à de la sauvegarde, c’est juste un système de redondance qui dispatche les données sur plusieurs disques pour éviter de tout perdre quand un disque crashe, la tolérance au panne est donc censée être meilleure qu’avec un seul disque.</p> <p>Il se trouve cependant que j’ai eu au printemps dernier une panne de mon RAID bas bruit, le RAID est passé en mode dégradé avec la perte d’un disque. Puis un second disque du RAID a commandé à défaillir, c’est là que j’ai commencé à m’en rendre compte car j’ai eu un certain nombre d’erreurs système qui remontaient. Il était temps de changer 2 disques de mon RAID, après avoir fonctionné quasiment 24h/24 7j/7 pendant 5 ans, je trouve que c'est une durée de vie plutôt correcte pour des disques bas de gamme. Je les ai remplacés par des Seagate IronWolf de 3To. Mon RAID 5 est donc maintenant constitué de 2 disques Seagate ST2000DM01 de 2015 et de 2 disques Seagate IronWolf de 3To ce qui donne une capacité utile de 5,5To. D’ailleurs il faut sans doute que je songe à changer les deux disques les plus anciens. </p> <p>Après avoir réinstallé mon RAID avec les nouveaux disques j’ai redescendu la sauvegarde, c’est là que je me suis rendu compte qu’il manquait un paquet de fichiers. Sur le coup je n’ai pas compris car les sauvegardes avaient été régulières, j’ai reconstitué tardivement le fil du drame. Il y a eu donc un crash bas bruit sur le RAID qui a dégradé des données, la sauvegarde s’est faite normalement mais a supprimé les fichiers qui avaient disparu du RAID car corrompus. Mais quel crétin ! Je n’avais pas mis en place un test d’état de santé des disques et du RAID avant de lancer la sauvegarde. Du coup j’ai essayé de récupérer les fichiers supprimés de la sauvegarde avec Photorec, ça m’a pris beaucoup de temps (des mois !) car il y en avait pour des To, mais comme il y a eu plusieurs sauvegardes dans l’intervalle je n’ai récupéré au final que peu de choses. Dans l’histoire, j’ai perdu dans les 400 films et une centaine de vidéos perso :-(</p> <p>J’ai dû revoir de fond en comble ma pratique de la sauvegarde, mes données principales sont toujours stockées sur le RAID 5 et il existe toujours une sauvegarde journalière sur disque de USB externe. Mais j’ai rajouté des sauvegardes croisées avec d’autres PC que je lance manuellement avec unison au moins une fois par semaine et j’ai rajouté également des tests d’état de santé des disques, dès dégradation des disques les sauvegardes ne sont pas lancées, j’ai mis en place un système de mail automatique journalier qui m’informe de l’état des disques.</p> <p>L’architecture ressemble maintenant à ça :<br> <img src="//img.linuxfr.org/img/68747470733a2f2f6f6c69766965722e686f617261752e6f72672f77702d636f6e74656e742f75706c6f6164732f32303230313130382d736368656d612d736175766567617264652e6a7067/20201108-schema-sauvegarde.jpg" alt="Titre de l'image" title="Source : https://olivier.hoarau.org/wp-content/uploads/20201108-schema-sauvegarde.jpg"></p> <p>Les données principales se trouvent sur le serveur Mana qui dispose d’un RAID 1 avec deux disques SAS de 136Go pour le système et d’un RAID 5 pour les données dans le répertoire data d’un espace utile de 5,5To. Cet espace est copié automatiquement sur un disque externe USB de 4To, il est également copié dans son intégralité vers le disque Germaine de 4To de la station Predator et en partie (hors fichiers multimédia) vers le Thinkpad Tetiaroa. Les deux dernières copies sont manuelles et se font avec unison.</p> <p>Concernant le script de sauvegarde, dans le répertoire /etc/cron.daily on va trouver le fichier sauvegarde qui contient :</p> <pre><code>#!/bin/bash /usr/local/linux/systeme/hwraid-master/wrapper-scripts/megaclisas-status &gt; /tmp/megastatus 2&gt;&amp;1 distant1="/media/sauvegardes" # test de vérification de la présence du disque de sauvegarde if [ ! -e "$distant1" ] then #le disque n'est pas monté, j'envoie juste le mail d'état du raid et je stoppe le script cat /tmp/megastatus | mail -s "Etat raid" olivier exit fi #test de l'état de santé du disque dur externe /usr/sbin/smartctl -a /dev/sdc &gt;&gt; /tmp/megastatus 2&gt;&amp;1 #envoi du mail de l'état des disques de mana cat /tmp/megastatus | mail -s "Etat disk mana" olivier # test de l'état du raid raid=$(MegaCli64 -LDInfo -L1 -a0 | grep State) if echo $raid | grep Degraded &gt;/dev/null 2&gt;&amp;1 then exit fi #test de l'état du disque dur externe ddur=$(/usr/sbin/smartctl -A /dev/sdc) if echo $ddur | grep FAILING_NOW &gt;/dev/null 2&gt;&amp;1 then exit fi /usr/sbin/sauve </code></pre> <p>Ce script vérifie la présence du disque dur externe et vérifie son état de santé, ainsi que celui du RAID, il ne va pas plus loin si l’un des deux est dégradé, sinon il lance le script /usr/sbin/sauve qui contient :</p> <pre><code>#!/bin/bash # Script sauvegarde rsync https://www.funix.org inspiré par # celui de Mickaël BONNARD ( https://www.mickaelbonnard.fr ) # sous licence MIT ( http://choosealicense.com/licenses/mit/ ) # Variables # date et heure jour=`date +%Y-%B-%d` # répertoire contenant les logs log="/var/log/sauvegarde" # répertoires à sauvegarder local1="/data" local2="/home" local3="/chroot/data" # point de montage du disque de sauvegarde distant1="/media/sauvegardes" distant2="/media/sauvegardes/base-mysql" # fichiers et répertoires à exclure de la sauvegarde excludes1="/root/bin/exclude-data.txt" excludes2="/root/bin/exclude-home.txt" # nom de la sauvegarde dans le journal echo "-------------------------------------------------------------" &gt; $log/sauvegarde_$jour.log echo "Sauvegarde de $local1 , $local2 et `{mathjax} local3 `(date +%d-%B-%Y)" &gt;&gt; $log/sauvegarde_$jour.log echo "-------------------------------------------------------------" &gt;&gt; $log/sauvegarde_$jour.log # heure de début du transfert dans le journal echo "Heure de demarrage de la sauvegarde : $(date +%H:%M:%S)" &gt;&gt; $log/sauvegarde_$jour.log echo "-------------------------------------------------------------" &gt;&gt; $log/sauvegarde_$jour.log #echo "lancement sauvegarde : $(date +%H:%M:%S)" | mail -s "Lancement sauvegarde" olivier # transfert des fichiers echo "Copie de data" &gt;&gt; $log/sauvegarde_$jour.log rsync -av --stats --delete-after --exclude-from=$excludes1 $local1 $distant1 &gt;&gt; $log/sauvegarde_$jour.log echo "-------------------------------------------------------------" &gt;&gt; $log/sauvegarde_$jour.log echo "Copie de home" &gt;&gt; $log/sauvegarde_$jour.log rsync -av --stats --delete-after --exclude-from=$excludes2 $local2 $distant1 &gt;&gt; $log/sauvegarde_$jour.log echo "-------------------------------------------------------------" &gt;&gt; $log/sauvegarde_$jour.log echo "Copie de chroot" &gt;&gt; $log/sauvegarde_$jour.log rsync -av --stats --delete-after $local3 $distant2 &gt;&gt; $log/sauvegarde_$jour.log echo "-------------------------------------------------------------" &gt;&gt; $log/sauvegarde_$jour.log # -a : mode archivage ( équivalent -rlptgoD ). # -z : compression des données pendant le transfert. # -- stats donne des informations sur le transfert (nombre de fichiers…). # --delete-after : supprime les fichiers qui n’existent plus dans la source après le transfert dans le dossier de destination. status=$? echo "Statut de la commande " &gt;&gt; $log/sauvegarde_$jour.log #code d'erreurs rsync case $status in 0) echo Succès &gt;&gt; $log/sauvegarde_$jour.log;; 1) echo Erreur de syntaxe ou d'utilisation &gt;&gt; $log/sauvegarde_$jour.log;; 2) echo Incompatibilité de protocole &gt;&gt; $log/sauvegarde_$jour.log;; 3) echo Erreurs lors de la sélection des fichiers et des répertoires d'entrée/sortie &gt;&gt; $log/sauvegarde_$jour.log;; 4) echo Action non supportée : une tentative de manipulation de fichiers 64-bits sur une plate-forme qui ne les supporte pas \ ; ou une option qui est supportée par le client mais pas par le serveur. &gt;&gt; $log/sauvegarde_$jour.log;; 5) echo Erreur lors du démarrage du protocole client-serveur &gt;&gt; $log/sauvegarde_$jour.log;; 6) echo Démon incapable d'écrire dans le fichier de log &gt;&gt; $log/sauvegarde_$jour.log;; 10) echo Erreur dans la socket E/S &gt;&gt; $log/sauvegarde_$jour.log;; 11) echo Erreur d'E/S fichier &gt;&gt; $log/sauvegarde_$jour.log;; 12) echo Erreur dans le flux de donnée du protocole rsync &gt;&gt; $log/sauvegarde_$jour.log;; 13) echo Erreur avec les diagnostics du programme &gt;&gt; $log/sauvegarde_$jour.log;; 14) echo Erreur dans le code IPC&gt;&gt; $log/sauvegarde_$jour.log;; 20) echo SIGUSR1 ou SIGINT reçu &gt;&gt; $log/sauvegarde_$jour.log;; 21) echo "Une erreur retournée par waitpid()" &gt;&gt; $log/sauvegarde_$jour.log;; 22) echo Erreur lors de l'allocation des tampons de mémoire principaux &gt;&gt; $log/sauvegarde_$jour.log;; 23) echo Transfert partiel du à une erreur &gt;&gt; $log/sauvegarde_$jour.log;; 24) echo Transfert partiel du à la disparition d'un fichier source &gt;&gt; $log/sauvegarde_$jour.log;; 25) echo La limite --max-delete a été atteinte &gt;&gt; $log/sauvegarde_$jour.log;; 30) echo Dépassement du temps d'attente maximal lors d'envoi/réception de données &gt;&gt; $log/sauvegarde_$jour.log;; 35) echo Temps d’attente dépassé en attendant une connection &gt;&gt; $log/sauvegarde_$jour.log;; 255) echo Erreur inexpliquée &gt;&gt; $log/sauvegarde_$jour.log;; esac echo "-------------------------------------------------------------" &gt;&gt; $log/sauvegarde_$jour.log # heure de fin dans le journal echo "Jour de fin de sauvegarde : $(date +%d-%B-%Y)" &gt;&gt; $log/sauvegarde_$jour.log echo "Heure de fin de la sauvegarde : $(date +%H:%M:%S)" &gt;&gt; $log/sauvegarde_$jour.log echo "-------------------------------------------------------------" &gt;&gt; $log/sauvegarde_$jour.log cat $log/sauvegarde_$jour.log | mail -s "Sauvegarde" olivier exit </code></pre> <p>En parallèle sur le serveur mana j’ai activé smartmontools, cet outil embarque le serveur smartd qui monitore les disques durs et envoie des alertes en cas d’erreur. J'ai mis dans le fichier /etc/smartd.conf la ligne :</p> <pre><code>DEVICESCAN -o on -S on -s (S/../.././01|L/../../1/03) -m olivier -M test </code></pre> <p>Cela signifie que tous les disques subiront un test court tous les jours à 1h du matin et un test long les lundis à 3h du matin, en cas d’erreurs rencontrés un mail me sera remonté. </p> <p>Sur les PC Predator et Tetiaroa ils ne sont pas allumés en permanence, il faut que je pense régulièrement à lancer les commandes de vérification de l’état de santé du disque sur lequel se trouve ma sauvegarde avant chaque lancement d’unison. Je songe à rédiger un script pour vérifier l'état des disques au lancement.</p> <p>Maintenant j’ai sur les bras un disque externe USB de 1To supplémentaire, un disque dur de 2To inutilisé et bientôt 2 autres disques de 2To après les avoir remplacés dans le RAID 5. Je compte grouper tous ces disques dans un boîtier multi disque USB ou un NAS réseau, je n’ai pas encore fait mon choix, ça me permettra de mettre en place une nouvelle redondance de sauvegarde.</p> <p>En guise de conclusion et pour en revenir à mes données perdues, je n’ai plus qu’à reconstituer ma collection de films, en partie en récupérant les fichiers enregistrés sur ma box. Pour ce qui concerne mes vidéos perso, fort heureusement une grande partie sont encore sur des bandes miniDV et sur des cassettes VHS, il ne me reste plus qu'à renumériser tout ça.</p> <p>Je suis preneur de toute remarque sur l'amélioration de ce dispositif.</p> <div><a href="https://linuxfr.org/users/funix/journaux/sauvegarde-de-donnees.epub">Télécharger ce contenu au format EPUB</a></div> <p> <strong>Commentaires :</strong> <a href="//linuxfr.org/nodes/122171/comments.atom">voir le flux Atom</a> <a href="https://linuxfr.org/users/funix/journaux/sauvegarde-de-donnees#comments">ouvrir dans le navigateur</a> </p>