# 8.3 - Snapshots ZFS et réplication TrueNAS

Les snapshots ZFS protègent rapidement l'état d'un dataset. Ils ne remplacent pas un dump PostgreSQL logique ni une copie hors du pool.

## Snapshot manuel

Après un dump de base :

```bash
sudo zfs snapshot HDD_DATA_TRUENAS/IMMICH/data@manuel-$(date +%F-%H%M)
sudo zfs snapshot HDD_DATA_TRUENAS/IMMICH/pgData@manuel-$(date +%F-%H%M)
```

Adapter les noms ZFS réels obtenus avec :

```bash
sudo zfs list
```

## Tâche périodique TrueNAS

Dans `Data Protection > Periodic Snapshot Tasks` :

1. choisir le dataset parent ou les datasets enfants ;
2. activer la récursivité si nécessaire ;
3. définir l'horaire ;
4. définir la durée de conservation ;
5. éviter une rétention qui remplit le pool ;
6. vérifier les snapshots créés.

## Cohérence PostgreSQL

Un snapshot de `pgData` pendant que PostgreSQL écrit est généralement comparable à un arrêt brutal. PostgreSQL sait souvent récupérer, mais ce snapshot ne doit pas remplacer un dump logique.

Pour un snapshot applicatif cohérent :

1. activer la maintenance ;
2. créer un dump ;
3. arrêter Immich si un point strict est requis ;
4. prendre les snapshots ;
5. redémarrer ;
6. vérifier les services.

## Réplication

Dans `Data Protection > Replication Tasks` :

- source : datasets Immich ;
- destination : autre pool, autre TrueNAS ou serveur compatible ;
- transport : local ou SSH ;
- snapshots : tâche périodique correspondante ;
- rétention : cohérente avec la source et la capacité.

## Vérifier

```bash
sudo zfs list -t snapshot | grep -i immich
sudo zpool status
sudo zpool list
```

## Restauration d'un fichier

Préférer cloner ou parcourir un snapshot puis copier le fichier voulu. Éviter un rollback complet sans analyse, car il supprime les modifications plus récentes du dataset.

## Après réplication

Vérifier que la destination contient :

- les médias ;
- les dumps ;
- les profils ;
- les datasets séparés ;
- les bibliothèques externes si elles font partie du plan.