Passer au contenu principal

Sauvegarde et Restauration

Une stratégie de sauvegarde 3-2-1 est recommandée pour protéger vos données. Vous devriez conserver des copies de vos photos/vidéos téléchargées ainsi que de la base de données Immich pour une solution de sauvegarde complète. Cette page propose un aperçu sur comment sauvegarder la base de données et l'emplacement des photos et vidéos téléchargées par l'utilisateur. Un script bash modèle pouvant être exécuté comme une tâche cron est fourni ici

danger

Les instructions sur cette page expliquent comment préparer votre instance Immich à être sauvegardée et quels fichiers sauvegarder. Vous devez cependant utiliser un outil de sauvegarde réel pour créer les sauvegardes vous-même.

Base de Données

prudence

Immich enregistre les chemins de fichiers dans la base de données, il ne scanne pas le dossier de la bibliothèque pour mettre à jour la base de données, donc les sauvegardes sont cruciales.

info

Consultez la documentation officielle de Postgres pour des détails sur la sauvegarde et la restauration d'une base de données Postgres.

prudence

Il n'est pas recommandé de sauvegarder directement le dossier DB_DATA_LOCATION. Le faire pendant que la base de données est en cours d'exécution peut entraîner une sauvegarde corrompue qui ne peut pas être restaurée.

Sauvegardes Automatiques de la Base de Données

avertissement

Les sauvegardes automatiques de la base de données peuvent être utilisées pour restaurer la base de données en cas de dommage aux fichiers de la base de données Postgres. Il n'y a pas de surveillance pour ces sauvegardes et vous ne serez pas informé en cas d'échec.

prudence

Les sauvegardes de la base de données ne contiennent PAS de photos ou vidéos, uniquement des métadonnées. Elles ne sont utilisables qu'avec une copie des autres fichiers dans UPLOAD_LOCATION comme décrit ci-dessous.

À des fins de récupération en cas de sinistre, Immich crée automatiquement des sauvegardes de la base de données. Les sauvegardes sont stockées dans UPLOAD_LOCATION/backups. Assurez-vous de faire votre propre sauvegarde indépendante de la base de données avec les dossiers de ressources mentionnés ci-dessous. Vous pouvez ajuster le calendrier et la quantité de sauvegardes conservées dans les paramètres administrateurs. Par défaut, Immich conserve les 14 dernières sauvegardes de la base de données et crée une nouvelle sauvegarde chaque jour à 2 h du matin.

Déclencher une Sauvegarde

Vous pouvez déclencher une sauvegarde de la base de données depuis la page d'état des tâches administratives. Visitez cette page, ouvrez le modal "Créer une tâche" en haut à droite, sélectionnez "Créer une sauvegarde de la base de données" et cliquez sur "Confirmer". Une tâche sera exécutée et déclenchera une sauvegarde, vous pouvez vérifier que cela a fonctionné correctement en consultant les journaux ou le dossier backups/. Ces sauvegardes sont prises en compte dans les X dernières sauvegardes conservées selon vos paramètres.

Restauration

Nous espérons simplifier la restauration dans les futures versions, pour l'instant vous pouvez trouver les sauvegardes de la base de données dans le dossier UPLOAD_LOCATION/backups sur votre hôte. Veuillez ensuite suivre les étapes de la section suivante pour restaurer la base de données.

Sauvegarde et Restauration Manuelles

Sauvegarde
docker exec -t immich_postgres pg_dumpall --clean --if-exists --username=<DB_USERNAME> | gzip > "/chemin/vers/sauvegarde/dump.sql.gz"
Restauration
docker compose down -v  # ATTENTION! Supprime toutes les données Immich pour repartir de zéro
## Décommentez la ligne suivante et remplacez DB_DATA_LOCATION par votre chemin Postgres pour réinitialiser définitivement la base de données Postgres
# rm -rf DB_DATA_LOCATION # ATTENTION! Supprime toutes les données Immich pour repartir de zéro
docker compose pull # Mise à jour à la dernière version d'Immich (si souhaitée)
docker compose create # Crée des conteneurs Docker pour les applications Immich sans les exécuter
docker start immich_postgres # Démarre le serveur Postgres
sleep 10 # Attendez que le serveur Postgres démarre
# Vérifiez l'utilisateur de la base de données si vous vous êtes éloigné du paramètre par défaut
gunzip --stdout "/chemin/vers/sauvegarde/dump.sql.gz" \
| sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" \
| docker exec -i immich_postgres psql --dbname=postgres --username=<DB_USERNAME> # Restaure la sauvegarde
docker compose up -d # Démarre le reste des applications Immich

Notez que pour que la restauration de la base de données se déroule correctement, elle nécessite une installation complètement neuve (c'est-à-dire, le serveur Immich n'a jamais été exécuté depuis la création des conteneurs Docker). Si l'application Immich a été lancée, des conflits Postgres peuvent survenir lors de la restauration de la base de données (relation déjà existante, contraintes de clé étrangère non respectées, plusieurs clés primaires, etc.), auquel cas vous devez supprimer le dossier DB_DATA_LOCATION pour réinitialiser la base de données.

astuce

Certaines méthodes de déploiement rendent difficile le démarrage de la base de données sans également démarrer le serveur. Dans ces cas, vous pouvez définir la variable d'environnement DB_SKIP_MIGRATIONS=true avant de démarrer les services. Cela empêchera le serveur d'exécuter des migrations qui interfèrent avec le processus de restauration. Veillez à supprimer cette variable et à redémarrer les services après la restauration de la base de données.

Système de Fichiers

Immich stocke deux types de contenu dans le système de fichiers : (a) des ressources originales non modifiées (photos et vidéos), et (b) du contenu généré. Nous recommandons de sauvegarder le contenu complet de UPLOAD_LOCATION, mais uniquement le contenu original est crucial, qui est stocké dans les dossiers suivants :

  1. UPLOAD_LOCATION/library
  2. UPLOAD_LOCATION/upload
  3. UPLOAD_LOCATION/profile

Si vous choisissez de sauvegarder uniquement ces dossiers, vous devrez relancer les tâches de transcodage et de génération de vignettes pour toutes les ressources après une restauration à partir d'une sauvegarde.

prudence

Si vous avez déplacé certains de ces dossiers sur un autre appareil de stockage, comme profile/, assurez-vous d'ajuster le chemin de sauvegarde pour correspondre à votre configuration

Types de Ressources et Emplacements de Stockage

Certains emplacements de stockage sont affectés par le Modèle de Stockage. Voir ci-dessous pour plus de détails.

note

Le dossier UPLOAD_LOCATION/library n'est pas utilisé par défaut sur les nouvelles machines exécutant la version 1.92.0. Il est utilisé uniquement si l'administrateur système a activé le moteur du modèle de stockage, pour plus d'infos, lisez les notes de publication.

1. Dossiers Spécifiques à l'Utilisateur:

  • Chaque utilisateur possède une chaîne unique le représentant.
  • Vous pouvez trouver votre ID utilisateur dans Compte Paramètres du compte -> Compte -> ID utilisateur.

2. Types de Ressources et Emplacements de Stockage:

  • Ressources Originales:

    • Ressources originales téléchargées via l'interface du navigateur, mobile et CLI.
    • Stockées dans UPLOAD_LOCATION/upload/<userID>.
  • Images d'avatar:

    • Images de profil des utilisateurs.
    • Stockées dans UPLOAD_LOCATION/profile/<userID>.
  • Images Miniatures:

    • Images de prévisualisation (petites vignettes et grandes prévisualisations) pour chaque ressource et vignettes pour les visages reconnus.
    • Stockées dans UPLOAD_LOCATION/thumbs/<userID>.
  • Ressources Encodées:

    • Vidéos ré-encodées à partir de l'original pour une compatibilité accrue. L'original n'est pas supprimé.
    • Stockées dans UPLOAD_LOCATION/encoded-video/<userID>.
  • Postgres

    • La base de données Immich contenant toutes les informations permettant au système de fonctionner correctement.
      Note: Ce dossier n'apparaîtra qu'aux utilisateurs ayant apporté les modifications mentionnées dans v1.102.0 (changement facultatif, non obligatoire) ou ayant commencé avec cette version.
    • Stocké dans DB_DATA_LOCATION.
    danger

    Une sauvegarde de ce dossier ne constitue pas une sauvegarde de votre base de données ! Suivez les instructions listées ici pour savoir comment effectuer une sauvegarde correcte.

danger

Ne touchez en aucun cas aux fichiers dans ces dossiers, sauf pour effectuer une sauvegarde. Modifier ou supprimer une ressource peut entraîner des fichiers non suivis et manquants. Vous pouvez le considérer comme une application-qui-ne-doit-pas-être-nommée, le seul accès pour visualiser, modifier ou supprimer des ressources est uniquement via l'interface mobile ou navigateur.

Ordre de sauvegarde

Une sauvegarde d'Immich devrait contenir à la fois la base de données et les fichiers des ressources. Lorsque vous effectuez ces sauvegardes, il est possible qu'elles soient désynchronisées, ce qui pourrait entraîner des ressources cassées après une restauration. La meilleure manière de gérer cela est d'arrêter le conteneur immich-server pendant que vous effectuez une sauvegarde. Si rien ne change, la sauvegarde sera toujours synchronisée.

Si arrêter le conteneur n'est pas une option, alors l'ordre recommandé est de sauvegarder d'abord la base de données, puis le système de fichiers. Ainsi, le pire scénario est qu'il y ait des fichiers dans le système de fichiers que la base de données ne connaît pas. Si nécessaire, ces fichiers peuvent être (re)téléchargés manuellement après une restauration. Si la sauvegarde est effectuée dans l'ordre inverse, avec le système de fichiers en premier et la base de données en second, il est possible que la base de données restaurée fasse référence à des fichiers qui ne sont pas dans la sauvegarde du système de fichiers, entraînant ainsi des ressources cassées.