Ancient-Backup
A all-in-one backup system for your minecraft server!
Ancient-Backup
🛡️ Ancient-Backup
The most advanced backup solution for Minecraft servers
---
✨ Features
🚀 High-Performance Compression
- Streaming Mode: 3-5x faster than traditional ZIP with better compression ratios - Streaming Mode: Balance between speed and file size (0-9) - Streaming Mode: Compress and upload simultaneously with zero local disk usage
📤 Multiple Upload Destinations
- Google Drive - Secure FTP with SSH encryption (recommended) - Google Drive - FTP over TLS/SSL - Google Drive - Microsoft Graph API integration - Google Drive - Direct cloud upload support
🔄 Smart Upload Management
- Upload Retry: Upload to multiple destinations simultaneously - Upload Retry: Automatically resume interrupted uploads (SFTP/FTPS) - Upload Retry: Reduces backup speed if server TPS drops to prevent lag - Upload Retry: Manual `/abackup uploadlast` command to retry failed uploads
📊 Real-Time Progress Tracking
- Speed Monitoring: See compression and upload progress every 5 seconds - Speed Monitoring: Beautiful embeds with progress bars and statistics - Speed Monitoring: Real-time MB/s tracking for uploads and compression
🎯 Advanced Features
- Staff Notifications: Skip large folders like dynmap tiles or BlueMap renders using glob patterns - Staff Notifications: Keep only the last N backups on remote servers - Staff Notifications: Run backups every X minutes or at specific times daily - Staff Notifications: Automatically disables auto-save during backups to prevent corruption - Staff Notifications: Automatic RAM cleanup after backups complete - Staff Notifications: In-game notifications for players with permission
🔒 Security & Reliability
- Cancellable Backups: Verify SFTP server fingerprints to prevent MITM attacks - Cancellable Backups: Use private keys instead of passwords - Cancellable Backups: Encrypted connections for FTPS - Cancellable Backups: Stop backups mid-process with `/abackup cancel`
---
📋 Requirements
- Permissions: Paper/Spigot/Bukkit 1.20.6+ - Permissions: 21 or higher - Permissions: `ancientbackup.admin` for commands, `ancientbackup.notify` for notifications
---
🚀 Quick Start
Installation
1. Download the latest version from Modrinth 2. Place the JAR file in your `plugins/` folder 3. Restart your server 4. Configure `plugins/Ancient-Backup/config.yml`
Basic Configuration
```yaml backup: use-zstd: true # Enable ZSTD compression (recommended) zip-level: 1 # 1 = fast, 9 = smallest file
schedule: enabled: true # Enable automatic backups every-minutes: 360 # Backup every 6 hours
upload: sftp: enabled: true host: "your-server.com" port: 22 username: "backup-user" password: "your-password" remote-folder: "/backups/minecraft" ```
First Backup
Run your first backup with: ``` /abackup start ```
Check status with: ``` /abackup status ```
---
📦 Commands
| Command | Permission | Description | |---------|-----------|-------------| | `/abackup start` | `ancientbackup.admin` | Start a new backup | | `/abackup cancel` | `ancientbackup.admin` | Cancel the running backup | | `/abackup status` | `ancientbackup.admin` | Check backup progress | | `/abackup uploadlast` | `ancientbackup.admin` | Retry uploading the last backup | | `/abackup reload` | `ancientbackup.admin` | Reload configuration |
---
🎨 Discord Integration
Get beautiful real-time updates in Discord:
```yaml discord: enabled: true webhook-url: "https://discord.com/api/webhooks/..." notifications: on-backup-start: true on-zip-complete: true on-upload-start: true on-upload-complete: true on-backup-complete: true ```
Features: - 📊 Color-coded embeds for different phases - 📈 Visual progress bars - ⚡ Real-time speed and ETA - 🎯 Step-by-step progress tracking (1/5, 2/5, etc.)
---
⚙️ Advanced Configuration
File Exclusions
Exclude large folders to reduce backup size:
```yaml backup: exclude: - "logs/*.gz" - "logs/*.log.*" - "plugins/dynmap/web/tiles//cache/" - "/cache/" ```
Streaming Mode
Compress and upload simultaneously (no local file):
```yaml upload: streaming-compression: true # Requires SFTP or FTPS ```
Benefits: - ⚡ Faster overall backup time - 💾 No local disk space usage - 🔄 Real-time progress updates
Limitations: - ⚠️ Retention policies not supported in streaming mode - 📍 Requires SFTP or FTPS destination
Performance Tuning
Optimize for your server:
```yaml performance: max-memory-mb: 512 # Maximum RAM usage max-buffer-kb: 8192 # Buffer size for compression gc-after-zip: true # Free memory after compression cleanup-after-backup: true # Full memory cleanup tps-threshold: 18.0 # Slow down if TPS drops below this ```
Retention Policies
Automatically delete old backups:
```yaml retention: enabled: true keep-last: 7 # Keep only the last 7 backups filename-prefix: "backup-" # Filter files by prefix filename-suffix: ".tar.zst" # Filter files by extension ```
---
🔐 SSH Key Authentication
For enhanced security, use SSH keys instead of passwords:
1. Generate an SSH key: ```bash ssh-keygen -t ed25519 -f ~/.ssh/minecraft_backup ```
2. Add the public key to your server: ```bash ssh-copy-id -i ~/.ssh/minecraft_backup.pub user@your-server.com ```
3. Configure Ancient-Backup: ```yaml sftp: private-key-path: "plugins/Ancient-Backup/minecraft_backup" password: "" # Leave empty when using key auth ```
---
📊 Performance
Benchmark Results
Tested on a 10GB Minecraft server with Paper 1.21.10:
| Method | Time | CPU Usage | Disk I/O | |--------|------|-----------|----------| | ZIP Level 9 | 2m 15s | Low | Minimal | | ZIP Level 9 | 6m 30s | Medium | Medium | | ZIP Level 9 | 12m 45s | High | High |
Streaming Mode: Reduces total backup time by 30-40% compared to traditional mode.
---
🐛 Troubleshooting
No progress output?
- Ensure you're using the latest version - Check that your upload destination is properly configured - Look for error messages in the console
Upload fails?
- Use `/abackup uploadlast` to retry - Check network connectivity and credentials - Enable debug logging in config.yml
Server lags during backup?
- Lower `performance.max-buffer-kb` to reduce memory usage - Reduce `backup.zip-level` to use less CPU - Set `performance.tps-threshold` higher to trigger throttling sooner
Discord notifications not working?
- Verify webhook URL is correct - Test webhook manually using curl or online tools - Check that `discord.enabled: true`
---
🤝 Support
- Documentation: Documentation - Documentation: Join our %%MD1%% - Documentation: %%MD2%%
---
📝 License
This plugin is released under the MIT License. See LICENSE for details.
---
⭐ Support the Project
If you find Ancient-Backup useful, please consider: - ⭐ Starring the project on GitHub - 📢 Sharing it with other server owners - 💬 Leaving a review on Modrinth - ☕ Supporting development
---
Made with ❤️ for the Minecraft community