Added documentation for new v3.0 features: 🔐 Encryption (AES-256-GCM): - Added encryption section with examples - Key generation, backup, and restore examples - Environment variable and passphrase support - PBKDF2 key derivation details - Automatic decryption on restore 📦 Incremental Backups (PostgreSQL & MySQL): - Added incremental backup section with examples - Full vs incremental backup workflows - Combined encrypted + incremental examples - Restore incremental backup instructions - Space savings details (70-95% typical) Version Updates: - Updated Key Features section - Version bump to 3.0.0 in main.go - Added v3.0 badges to new features Total: ~100 lines of new documentation Status: Ready for v3.0 release
66 lines
1.4 KiB
Go
Executable File
66 lines
1.4 KiB
Go
Executable File
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log/slog"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
|
|
"dbbackup/cmd"
|
|
"dbbackup/internal/config"
|
|
"dbbackup/internal/logger"
|
|
"dbbackup/internal/metrics"
|
|
)
|
|
|
|
// Build information (set by ldflags)
|
|
var (
|
|
version = "3.0.0"
|
|
buildTime = "unknown"
|
|
gitCommit = "unknown"
|
|
)
|
|
|
|
func main() {
|
|
// Create context that cancels on interrupt
|
|
ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
|
|
defer cancel()
|
|
|
|
// Initialize configuration
|
|
cfg := config.New()
|
|
|
|
// Set version information
|
|
cfg.Version = version
|
|
cfg.BuildTime = buildTime
|
|
cfg.GitCommit = gitCommit
|
|
|
|
// Optimize CPU settings if auto-detect is enabled
|
|
if cfg.AutoDetectCores {
|
|
if err := cfg.OptimizeForCPU(); err != nil {
|
|
slog.Warn("CPU optimization failed", "error", err)
|
|
}
|
|
}
|
|
|
|
// Initialize logger
|
|
log := logger.New(cfg.LogLevel, cfg.LogFormat)
|
|
|
|
// Initialize global metrics
|
|
metrics.InitGlobalMetrics(log)
|
|
|
|
// Show session summary on exit
|
|
defer func() {
|
|
if metrics.GlobalMetrics != nil {
|
|
avgs := metrics.GlobalMetrics.GetAverages()
|
|
if ops, ok := avgs["total_operations"].(int); ok && ops > 0 {
|
|
fmt.Printf("\n📊 Session Summary: %d operations, %.1f%% success rate\n",
|
|
ops, avgs["success_rate"])
|
|
}
|
|
}
|
|
}()
|
|
|
|
// Execute command
|
|
if err := cmd.Execute(ctx, cfg, log); err != nil {
|
|
log.Error("Application failed", "error", err)
|
|
os.Exit(1)
|
|
}
|
|
} |