- Add centralized configuration system with backup.env - Move configuration files to proper structure (config/ directory) - Remove hardcoded paths and make system portable - Fix security issue: remove password exposure in gen-conf.sh - Add comprehensive documentation (README.md, CLAUDE.md) - Create configuration template (backup.env.sample) - Add .gitignore to protect sensitive files - Update all scripts to use environment variables - Implement systemd template variable substitution 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
3.2 KiB
3.2 KiB
QuantumRick Backup System
Système de sauvegarde automatisé basé sur Restic avec intégration systemd pour services containerisés.
Structure du Projet
quantumrick/
├── backup.env # Configuration centralisée
├── config/
│ └── restic.conf # Configuration Restic (générée)
└── backup/
├── manage # Interface principale de gestion
├── gen-conf.sh # Génération de configuration Restic
├── init-restic.sh # Initialisation repository
├── install-service # Installation timers systemd
├── list-snapshots # Liste des snapshots
├── restore # Restauration
├── service-backup@.service # Template service systemd
└── service-backup@.timer # Template timer systemd
Prérequis
IMPORTANT: Tous les scripts doivent être exécutés dans un environnement ayant sourcé la configuration :
# Toujours commencer par sourcer la configuration
source backup.env
# Puis exécuter les scripts
./backup/manage list
./backup/gen-conf.sh
./backup/init-restic.sh
Installation
-
Configuration initiale
# Copier et adapter la configuration cp backup.env.sample backup.env # Éditer backup.env selon votre environnement # Puis générer la configuration Restic source backup.env ./backup/gen-conf.sh
-
Initialisation du repository
source backup.env ./backup/init-restic.sh
-
Installation d'un service
source backup.env sudo ./backup/install-service <nom_service>
Configuration
Variables principales (backup.env)
BACKUP_USER
: Utilisateur système (défaut: citadel)PROJECT_ROOT
: Racine du projetSERVICES_BASE_DIR
: Répertoire des services à sauvegarderBACKUP_REPOSITORY
: Chemin du repository ResticDEFAULT_BACKUP_SCHEDULE
: Planning par défaut (défaut: --* 03:00:00)
Personnalisation
# Exemple pour un autre utilisateur
export BACKUP_USER="myuser"
export BACKUP_HOME="/home/myuser"
source backup.env
# Puis utiliser normalement
./backup/manage list
Utilisation
Gestion des sauvegardes
source backup.env
# Lister les timers
./backup/manage list
# Statut d'un service
./backup/manage status paperless
# Lancer une sauvegarde manuelle
./backup/manage run paperless
# Voir les logs
./backup/manage logs paperless
Restauration
source backup.env
# Lister les snapshots
./backup/list-snapshots paperless
# Restaurer en mode test
./backup/restore paperless --test
# Restaurer en production
./backup/restore paperless --production
Développement
Pour contribuer au projet, respectez la convention de sourcer backup.env
dans tous vos scripts :
#!/bin/bash
# Source configuration (scripts doivent être dans backup/)
source "$(dirname "$(dirname "$0")")/backup.env"
Architecture
- Configuration centralisée :
backup.env
contient toutes les variables - Scripts modulaires : Chaque script a une responsabilité spécifique
- Templates systemd : Variables substituées à l'installation
- Sécurité : Mots de passe générés automatiquement