Shuttle: PostgreSQL Backup Tool with Automated SSH Transfers
Shuttle: PostgreSQL Backup Tool with Automated SSH Transfers
In modern database management, reliable backup strategies are essential. Shuttle is a PostgreSQL backup tool that exports your databases and automatically transfers them to a remote server via SSH. Designed for simplicity and flexibility, it supports scheduled backups, automatic retention management, and seamless Docker integration.
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/