Shuttle: PostgreSQL Backup Tool with Automated SSH Transfers
Brief
Shuttle est un outil de sauvegarde PostgreSQL qui exécute des dumps, applique une politique de rétention et transfère automatiquement les archives vers un serveur distant via SSH/SFTP.
Sommaire
Dans la gestion moderne des bases de données, des stratégies de sauvegarde fiables sont indispensables. Shuttle est conçu pour rester simple à configurer tout en couvrant les besoins de production.
Technologies principales
- Node.js : Shuttle est construit sur Node.js, garantissant compatibilité multiplateforme et performance.
- TypeScript : développé en TypeScript pour la sûreté de typage et une meilleure expérience développeur.
- PostgreSQL : intégration native avec PostgreSQL via
pg_dumppour des exports fiables. - Docker : déploiement conteneurisé pour simplifier la mise en production et l’isolation.
Fonctionnalités clés ✅
- Configuration simple : un unique fichier YAML avec support de l’URL PostgreSQL et substitution de variables d’environnement.
- Planification flexible : utilisation d’expressions cron pour programmer les sauvegardes avec précision.
- Rétention automatique : gestion automatique de la rétention en local et à distance.
- Plusieurs types de dump : support des dumps complets ou des sauvegardes table par table.
- Compression : compression gzip optionnelle pour réduire la taille et le temps de transfert.
- Transfert SSH/SFTP : transferts automatisés et sécurisés vers des serveurs distants.
- Support Docker : fonctionnement fluide avec des bases conteneurisées et des environnements de production.
- CLI complète : commandes
init,validate,run,daemonetlist.
Développement et défis
Le développement de Shuttle a impliqué la création d’un système robuste de planification des sauvegardes avec node-cron, l’implémentation de transferts SSH/SFTP sécurisés et une gestion fiable de la rétention en local comme à distance. Le défi principal était d’équilibrer la simplicité de configuration avec la flexibilité nécessaire à différents scénarios de production, tout en respectant les bonnes pratiques de sécurité pour la gestion des identifiants.
Accès au projet et captures 📸
🔗 GitHub Repository https://github.com/claquettes/shuttle
📦 NPM Package https://www.npmjs.com/package/@claquettes/shuttle
🐳 Docker Image https://hub.docker.com/r/claquettes/shuttle
🌐 Documentation Website https://shuttle.apogee-consult.com/
English version
Brief
Shuttle is a PostgreSQL backup tool that creates dumps and automatically transfers them to remote storage over SSH/SFTP with retention policies.
Table of contents
In modern database management, reliable backup strategies are essential. Shuttle is designed to keep configuration lightweight while still supporting production-grade backup workflows.
Main Technologies Used
- Node.js: Shuttle is built on Node.js, ensuring cross-platform compatibility and performance.
- TypeScript: Developed in TypeScript for type safety and enhanced developer experience.
- PostgreSQL: Native integration with PostgreSQL using pg_dump for reliable database exports.
- Docker: Containerized deployment for easy production setup and isolation.
Key Features ✅
- Simple Configuration: Single YAML file with PostgreSQL URL support and environment variable substitution.
- Flexible Scheduling: Uses cron expressions to schedule backups with precise timing control.
- Automatic Retention: Manages backup retention automatically for both local and remote storage.
- Multiple Dump Types: Supports full database dumps or specific table-level backups.
- Compression: Optional gzip compression to reduce backup size and transfer time.
- SSH/SFTP Transfer: Secure automated transfers to remote backup servers.
- Docker Support: Works seamlessly with containerized databases and production environments.
- Complete CLI: Commands for init, validate, run, daemon, and list operations.
Development & Challenges
Developing Shuttle involved creating a robust backup scheduling system using node-cron, implementing secure SSH/SFTP transfers, and ensuring reliable retention management across local and remote storage. The challenge was balancing simplicity of configuration with flexibility for various production scenarios, while maintaining security best practices for credential management.
Project Access & Screenshots 📸
🔗 GitHub Repository https://github.com/claquettes/shuttle
📦 NPM Package https://www.npmjs.com/package/@claquettes/shuttle
🐳 Docker Image https://hub.docker.com/r/claquettes/shuttle
🌐 Documentation Website https://shuttle.apogee-consult.com/