# Sauvegarde et restauration

Rediacc peut sauvegarder des dépôts chiffrés vers des fournisseurs de stockage externes et les restaurer sur la même machine ou sur une machine différente. Les sauvegardes sont chiffrées, l'identifiant LUKS du dépôt est nécessaire pour la restauration.

## Configurer le stockage

Avant d'envoyer des sauvegardes, enregistrez un fournisseur de stockage. Rediacc prend en charge tout stockage compatible rclone : S3, B2, Google Drive et bien d'autres.

### Importer depuis rclone

Si vous avez déjà un remote rclone configuré :

```bash
rdc config storage import --file rclone.conf
```

Ceci importe des configurations de stockage depuis un fichier de configuration rclone dans la configuration actuelle. Types pris en charge : S3, B2, Google Drive, OneDrive, Mega, Dropbox, Box, Azure Blob et Swift.

### Afficher les stockages

```bash
rdc config storage list
```

## Envoyer une sauvegarde

Envoyez une sauvegarde de dépôt vers un stockage externe :

```bash
rdc repo push --name my-app -m server-1 --to my-storage
```

| Option | Description |
|--------|-------------|
| `--to <storage>` | Emplacement de stockage cible |
| `--to-machine <machine>` | Machine cible pour la sauvegarde de machine à machine |
| `--dest <filename>` | Nom de fichier de destination personnalisé |
| `--checkpoint` | Créer un checkpoint CRIU avant l'envoi (pour les conteneurs avec le label `rediacc.checkpoint=true`). La cible se restaure automatiquement lors du `repo up` |
| `--force` | Écraser une sauvegarde existante |
| `--tag <tag>` | Étiqueter la sauvegarde |
| `-w, --watch` | Suivre la progression de l'opération |
| `--debug` | Activer la sortie détaillée |
| `--skip-router-restart` | Skip restarting the route server after the operation |

## Récupérer / Restaurer une sauvegarde

Récupérez une sauvegarde de dépôt depuis un stockage externe :

```bash
rdc repo pull --name my-app -m server-1 --from my-storage
```

| Option | Description |
|--------|-------------|
| `--from <storage>` | Emplacement de stockage source |
| `--from-machine <machine>` | Machine source pour la restauration de machine à machine |
| `--force` | Écraser la sauvegarde locale existante |
| `-w, --watch` | Suivre la progression de l'opération |
| `--debug` | Activer la sortie détaillée |
| `--skip-router-restart` | Skip restarting the route server after the operation |

## Lister les sauvegardes

Affichez les sauvegardes disponibles dans un emplacement de stockage :

```bash
rdc repo backup list --from my-storage -m server-1
```

## Synchronisation en masse

Envoyez ou récupérez tous les dépôts en une seule fois :

### Envoyer tout vers le stockage

```bash
rdc repo push --to my-storage -m server-1
```

### Récupérer tout depuis le stockage

```bash
rdc repo pull --from my-storage -m server-1
```

| Option | Description |
|--------|-------------|
| `--to <storage>` | Stockage cible (direction envoi) |
| `--from <storage>` | Stockage source (direction récupération) |
| `--repo <name>` | Synchroniser des dépôts spécifiques (répétable) |
| `--override` | Écraser les sauvegardes existantes |
| `--debug` | Activer la sortie détaillée |
| `--skip-router-restart` | Skip restarting the route server after the operation |

## Sauvegardes planifiées

Automatisez les sauvegardes avec une planification cron qui s'exécute comme un timer systemd sur la machine distante.

### Définir la planification

```bash
rdc config backup-strategy set --destination my-storage --cron "0 2 * * *" --enable
```

Vous pouvez configurer plusieurs destinations avec des planifications différentes :

```bash
rdc config backup-strategy set --destination my-s3 --cron "0 2 * * *" --enable
rdc config backup-strategy set --destination azure-backup --cron "0 6 * * *" --enable
```

| Option | Description |
|--------|-------------|
| `--destination <storage>` | Destination de sauvegarde (configurable par destination) |
| `--cron <expression>` | Expression cron (par ex., `"0 2 * * *"` pour tous les jours à 2h du matin) |
| `--enable` | Activer la planification |
| `--disable` | Désactiver la planification |

### Déployer la planification sur une machine

Déployez la configuration de planification sur une machine en tant que timer systemd :

```bash
rdc machine backup schedule -m server-1
```

### Afficher la planification

```bash
rdc config backup-strategy show
```

## Parcourir le stockage

Parcourez le contenu d'un emplacement de stockage :

```bash
rdc storage browse --name my-storage
```

## Bonnes pratiques

- **Planifiez des sauvegardes quotidiennes** vers au moins un fournisseur de stockage
- **Testez les restaurations** périodiquement pour vérifier l'intégrité des sauvegardes
- **Utilisez plusieurs fournisseurs de stockage** pour les données critiques (par ex., S3 + B2)
- **Gardez les identifiants en sécurité**, les sauvegardes sont chiffrées mais l'identifiant LUKS est nécessaire pour la restauration