1.0.4 • Published 8 months ago
nestjs-backup-tool v1.0.4
nestjs-backup-tool
A comprehensive backup solution for NestJS applications supporting multiple databases and storage methods.
Features
🗄️ Multiple Database Support
- MySQL
- PostgreSQL
📦 Multiple Storage Options
- Local File System
- FTP Server
- Amazon S3
⚙️ Advanced Features
- Scheduled backups using cron expressions
- Configurable retention policy
- Optional web UI for backup management
- Email notifications
- Async configuration support
Prerequisites
Before using this package, make sure you have the following installed:
For MySQL Backups
# For Debian/Ubuntu
sudo apt-get update
sudo apt-get install mysql-client or sudo apt-get install mariadb-client
# For macOS
brew install mysql-client
# For Windows
# Install MySQL Workbench or MySQL Command Line Client
For PostgreSQL Backups
# For Debian/Ubuntu
sudo apt-get update
sudo apt-get install postgresql-client
# For macOS
brew install postgresql
# For Windows
# Install PostgreSQL client tools
Installation
npm install nestjs-backup-tool
Usage
Basic Configuration
import { Module } from '@nestjs/common';
import { BackupModule } from 'nestjs-backup-tool';
@Module({
imports: [
BackupModule.register({
database: {
type: 'mysql',
host: 'localhost',
user: 'root',
password: 'password',
database: 'mydb'
},
storage: [
{ type: 'local', path: './backups' },
{
type: 's3',
bucketName: 'my-backups',
region: 'us-east-1',
accessKeyId: 'YOUR_ACCESS_KEY',
secretAccessKey: 'YOUR_SECRET_KEY',
}
],
schedule: '0 2 * * *', // Daily at 2 AM
retentionDays: 30,
enableUI: true,
notifications: {
enabled: true,
email: {
from: 'backup@example.com',
to: ['admin@example.com'],
smtp: {
host: 'smtp.example.com',
port: 587,
auth: {
user: 'smtp-user',
pass: 'smtp-password'
}
}
}
}
}),
],
})
export class AppModule {}
Configuration Options
Database Configuration
type
: 'mysql' or 'postgres'host
: Database hostuser
: Database usernamepassword
: Database passworddatabase
: Database name
Storage Options
- Local Storage
type: 'local'
path
: Local directory path
- FTP Storage
type: 'ftp'
host
,user
,password
,port
- S3 Storage
type: 's3'
bucketName
,region
,accessKeyId
,secretAccessKey
Scheduling
schedule
: Cron expression for backup timing
Retention
retentionDays
: Number of days to keep backups
UI and Notifications
enableUI
: Enable backup management UInotifications
: Configure email notifications
API Endpoints (when UI is enabled)
POST /backup-ui/create
: Create a new backupGET /backup-ui/list
: List all backupsPOST /backup-ui/restore
: Restore a backupDELETE /backup-ui/clean
: Clean old backups
System Requirements
- Node.js >= 14.x
- NestJS >= 8.x
Database CLI Tools
- For MySQL backups:
mysqldump
CLI tool must be installed - For PostgreSQL backups:
pg_dump
CLI tool must be installed
Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Author
Created and maintained by Mohamed Farraj
Support
If you have any questions, issues, or feature requests, please:
- Check the GitHub Issues
- Open a new issue if your problem or suggestion is not already reported
Acknowledgments
- Thanks to all contributors who have helped shape this project
- Built with NestJS