# Pack Backup : sauvegardes ZIP horodatées, restauration et rotation

> Backup Manager compresse votre projet en ZIP horodaté, liste, restaure et fait tourner les archives avec quatre commandes slash. Installation, cinq exemples, exclusions, limites.

Canonical: https://bmad-plus.rochetta.fr/fr/docs/packs/backup/
Language: fr
BMAD+ version: 0.23.1
Documentation reviewed: 2026-10-19
Author: Laurent Rochetta
License: MIT

Documentation BMAD+ › [Packs](https://bmad-plus.rochetta.fr/fr/docs/packs/) › Pack Backup : sauvegardes ZIP horodatées, restauration et rotation

Le pack Backup installe Backup Manager, un agent qui fait une copie ZIP de votre projet en une commande, la nomme avec la date et l’heure, liste les copies, en restaure une à la demande et élague les anciennes. Il sert juste avant un changement risqué, une grosse refonte ou une migration, quand vous voulez un retour en arrière rapide qui ne dépend pas du contrôle de version. Il est volontairement simple : il utilise les outils de compression de votre système et range les archives dans un dossier `backups/` du projet.

<a id="when-to-use"></a>
## Quand l’utiliser

- Avant une grosse refonte, une montée de version de dépendances, une migration de données ou une exécution autopilot.
- Pour les projets qui ne sont pas sous contrôle de version, ou dont l’état non commité compte.
- Il ne remplace pas de vraies sauvegardes : voir les limites plus bas.

<a id="installed"></a>
## Ce qui est installé

Un pack empaqueté dans `.agents/skills/pack-backup/` : le fichier d’agent `backup-agent.md` et un modèle de workflow `templates/backup-workflow.md`. Aucune compétence, aucun fichier de données et aucun script n’est livré : l’agent écrit lui-même les commandes, en PowerShell sous Windows ou en Bash sous Linux et macOS, et remplace l’espace réservé `%PROJECT_ROOT%` par le vrai chemin de votre projet.

**Menu de Backup Manager**

| Commande | Ce qu’elle fait |
| --- | --- |
| `/backup` | Sauvegarde complète : un ZIP horodaté de tout le projet, avec les exclusions ci-dessous |
| `/backup-list` | Liste les fichiers ZIP de `backups/`, du plus récent au plus ancien, avec taille et date |
| `/backup-restore` | Extrait un ZIP choisi dans un nouveau dossier `restore_<timestamp>/` à la racine du projet |
| `/backup-clean` | Rotation : garde les N dernières archives (5 sauf indication contraire) et supprime les autres, après vous avoir demandé |

<a id="quick-start"></a>
## Démarrage rapide

1. **Installer le pack** Core est ajouté automatiquement. Seul Node.js 20 est nécessaire pour l’installateur.

   ```sh
   npx bmad-plus install --packs backup
   ```
2. **Faire une première sauvegarde** L’agent trouve la racine du projet, détecte votre système, crée `backups/` si besoin, construit l’archive et indique son nom et sa taille.

   ```sh
   /backup
   ```
3. **Ignorer le dossier dans le contrôle de version** Les archives sont de simples données du projet : gardez-les hors des commits (ligne à ajouter à `.gitignore`).

   ```sh
   backups/
   ```

<a id="examples"></a>
## Exemples à copier

<a id="example-backup-create"></a>
### Faire une sauvegarde horodatée

À lancer avant tout ce que vous pourriez vouloir annuler.

**Dans votre assistant IA**

```text
/backup, puis liste ce que tu as laissé hors de l’archive pour que je vérifie qu’il ne manque rien d’utile.
```

**Ce que vous devriez obtenir** Un fichier `backups/<project>_backup_<yyyyMMdd_HHmmss>.zip` est créé, et l’agent indique son nom et sa taille en mégaoctets. À la racine du projet, il exclut `node_modules`, `.git`, `vendor`, `backups/`, `__pycache__` et les fichiers correspondant à `*.backup_*` : c’est la liste que l’agent peut vous relire.

<a id="example-backup-before-refactor"></a>
### Sauvegarder en langage courant avant un changement risqué

Vous pouvez appeler l’agent par son nom et demander en langage courant plutôt que de taper la commande slash.

**Dans votre assistant IA**

```text
Backup Manager, fais une sauvegarde de ce projet avant que je renomme les modules de src/, et dis-moi la taille de l’archive.
```

**Ce que vous devriez obtenir** La même archive que `/backup`, avec la taille du fichier affichée. Afficher la taille fait partie des règles de l’agent ; sous Linux et macOS, la commande de référence n’imprime que le nom de l’archive : l’agent doit donc ajouter lui-même la taille.

<a id="example-backup-list"></a>
### Lister les sauvegardes existantes

À utiliser pour choisir quelle archive restaurer ou élaguer.

**Dans votre assistant IA**

```text
/backup-list
```

**Ce que vous devriez obtenir** Un tableau des fichiers `*.zip` de `backups/`, triés par date de dernière écriture (le plus récent d’abord), avec nom, taille en mégaoctets et date.

<a id="example-backup-restore"></a>
### Restaurer sans écraser votre travail

La restauration va dans un dossier séparé : vous pouvez comparer avant de recopier quoi que ce soit.

**Dans votre assistant IA**

```text
/backup-restore l’archive la plus récente
```

**Ce que vous devriez obtenir** Le ZIP est extrait dans `restore_<yyyyMMdd_HHmmss>/` à la racine du projet et l’agent affiche ce chemin. Vos fichiers actuels ne sont pas touchés ; recopiez ce dont vous avez besoin.

<a id="example-backup-clean"></a>
### Ne garder que les dernières sauvegardes

La rotation supprime des fichiers : l’agent demande donc toujours confirmation d’abord.

**Dans votre assistant IA**

```text
/backup-clean garde les 3 dernières.
```

**Ce que vous devriez obtenir** Après votre confirmation, les archives plus anciennes que les trois plus récentes sont supprimées de `backups/` et l’agent indique combien ont été conservées. Sans nombre, la valeur par défaut est 5.

<a id="outputs"></a>
## Ce qu’il écrit et où

**Fichiers et dossiers créés par le pack**

| Chemin | Créé par | Contenu |
| --- | --- | --- |
| `backups/` | `/backup` | Les archives, nommées `<project>_backup_<yyyyMMdd_HHmmss>.zip` |
| `restore_<yyyyMMdd_HHmmss>/` | `/backup-restore` | La copie extraite d’une archive |

<a id="data-and-prerequisites"></a>
## Flux de données et prérequis

- Windows : PowerShell avec `Compress-Archive` et `Expand-Archive`. Linux et macOS : Bash et le programme `zip`, qui doit être installé.
- Votre outil hôte doit autoriser l’agent à exécuter des commandes shell. Rien ne quitte votre machine : ni envoi, ni appel réseau, ni clé.

<a id="limits"></a>
## Limites et pièges

> **Attention · Ce n’est pas une sauvegarde de reprise après sinistre** Les archives se trouvent dans le projet, sur le même disque. Un disque perdu perd les deux. Le pack ne planifie pas les sauvegardes, ne les chiffre pas et ne les copie pas ailleurs. Copiez vous-même les archives importantes vers un autre emplacement.

> **Attention · L’historique Git n’est pas dans l’archive** `.git` est exclu : une restauration rend les fichiers, pas les commits ni les branches. Les dépendances de `node_modules` et `vendor` sont exclues aussi : réinstallez-les après une restauration.

> **Remarque · Les exclusions nomment des dossiers de premier niveau** La commande PowerShell ne filtre que les entrées à la racine du projet, et les motifs Bash sont écrits pour des dossiers à la racine : les exclusions ne s’appliquent donc qu’à la racine du projet. Un `node_modules` imbriqué (par exemple dans `packages/app/`) peut donc se retrouver dans l’archive. Surveillez la taille indiquée par l’agent et demandez-lui d’exclure davantage si besoin.

> **Remarque · Noms de commande à utiliser** Le menu comprend `/backup`, `/backup-list`, `/backup-restore` et `/backup-clean`. Il n’y a pas de sous-commande `create` : `/backup` seul fait l’archive.

> **Remarque · Provenance** Le pack Universal Backup a été écrit par Laurent Rochetta chez Oveanet, sa société, puis intégré à BMAD+.

**Voir aussi**

- [Les dix packs côte à côte](https://bmad-plus.rochetta.fr/fr/docs/packs/packs-overview/)
- [Installer, mettre à jour, désinstaller](https://bmad-plus.rochetta.fr/fr/docs/guides/install-lifecycle/)
- [Commande update (ses propres reçus et restauration)](https://bmad-plus.rochetta.fr/fr/docs/reference/cli-update/)

[Documentation BMAD+](https://bmad-plus.rochetta.fr/fr/docs/) · [Packs](https://bmad-plus.rochetta.fr/fr/docs/packs/)

[Code sur GitHub](https://github.com/lrochetta/BMAD-PLUS)
