# 9.2 - Préparer et exporter le serveur source

## Première copie sans interruption

Créer une destination de préparation et copier les médias pendant que la source fonctionne :

```bash
rsync -aHn --numeric-ids --info=progress2 \
  CHEMIN_MEDIA_SOURCE/ \
  UTILISATEUR@DESTINATION:/chemin/immich-data/
```

Après vérification :

```bash
rsync -aH --numeric-ids --info=progress2 \
  CHEMIN_MEDIA_SOURCE/ \
  UTILISATEUR@DESTINATION:/chemin/immich-data/
```

Ne pas utiliser `--delete` pour cette première migration.

## Créer un dump de test

```bash
mkdir -p /srv/export-immich

docker exec -t immich_postgres \
  pg_dump --clean --if-exists --dbname=immich --username=postgres \
  | gzip > /srv/export-immich/immich-test.sql.gz

gzip -t /srv/export-immich/immich-test.sql.gz
```

## Fenêtre de bascule

1. annoncer l'interruption ;
2. terminer les uploads mobiles ;
3. attendre les tâches indispensables ;
4. activer la maintenance ou arrêter le serveur ;
5. créer le dump final ;
6. faire un rsync final ;
7. relever les sommes et tailles ;
8. garder la source intacte.

## Dump final

```bash
docker exec -it immich_server immich-admin enable-maintenance-mode

docker exec -t immich_postgres \
  pg_dump --clean --if-exists --dbname=immich --username=postgres \
  | gzip > /srv/export-immich/immich-final.sql.gz

gzip -t /srv/export-immich/immich-final.sql.gz
sha256sum /srv/export-immich/immich-final.sql.gz \
  > /srv/export-immich/immich-final.sql.gz.sha256
```

Si la maintenance n'est pas disponible sur la version source, arrêter le service serveur tout en gardant PostgreSQL disponible, ou planifier une courte interruption complète après le dump.

## Copie finale des médias

```bash
rsync -aH --numeric-ids --info=progress2 \
  CHEMIN_MEDIA_SOURCE/ \
  UTILISATEUR@DESTINATION:/chemin/immich-data/
```

Copier aussi le dump, les fichiers Compose et une version expurgée de l'inventaire. Conserver `.env` dans un canal sécurisé.

## Bibliothèques externes

Deux choix :

- conserver les fichiers au même emplacement réseau et monter le même chemin interne ;
- copier la bibliothèque vers TrueNAS et conserver le même chemin vu par le conteneur.

Le second choix nécessite une vérification des nombres de fichiers et de quelques sommes.