PluralBackupJava

PluralBackupJava

PluralBackup is an automatic hot backup plugin for Minecraft Java Edition servers

115 downloads 0 followers

Features

  • Scheduled Automatic Backup: Configurable backup interval, default 60 minutes
  • Time-Based Backup Mode: Trigger backups at specific times in a specified timezone (supports 24/12-hour format)
  • Manual Backup Trigger: Execute backup immediately via command
  • Startup Backup: Auto-execute backup on server start (optional)
  • Hot Backup: Asynchronous execution, non-blocking main thread
  • World Save Control: Save worlds before backup, pause autosave during backup to prevent data inconsistency
  • Compressed Backup: Support compressing backups as zip format to save disk space
  • Backup File Management: Auto-clean old backups, keep specified count of recent backups (also cleans after manual GitHub upload)
  • Multi-Cloud Upload: Local directory, FTP/FTPS, WebDAV, Baidu Netdisk, 123 Cloud
  • GitHub Backup: Upload/download backups via GitHub Release API, supports auto-creation of private repository
  • Alert Notifications: Send alerts via Email, Lark bot, DingTalk bot on backup failure
  • Backup Restore: Restore world data from specified backup (will reload worlds)
  • Hot Config Reload: Reload config without server restart
  • Status Query: View plugin status and scheduler info

Installation

  1. Download the latest PluralBackupJava-1.0.0.jar
  2. Place the jar file in the server's plugins/ directory
  3. Start the server, the plugin will auto-generate default config at plugins/PluralBackup/config.yml
  4. Edit the config file as needed
  5. Execute /backup reload or restart the server to apply changes

Commands

All commands require pluralbackup.admin permission (default: OP).

Command Description
/backup now Execute a backup immediately
/backup list List all backups
/backup restore <backup-name> Restore specified backup
/backup clean Clean old backups
/backup reload Reload configuration file
/backup status View plugin status
/backup github-list List backup versions on GitHub
/backup github-download <version> Download specified version from GitHub
/backup github-upload Backup server and upload to GitHub

Aliases: /pbackup, /pluralbackup

Configuration

Config file located at plugins/PluralBackup/config.yml:

# Basic Backup Settings
backup:
  auto-backup: true              # Enable automatic backup (interval mode)
  interval-minutes: 60           # Backup interval in minutes (interval mode only)
  backup-on-start: false         # Execute backup on server start
  broadcast-message: true        # Broadcast backup messages
  # Scheduled backup (time-based trigger, independent from interval mode, can be enabled together)
  schedule:
    enabled: false               # Enable time-based mode
    timezone: "Asia/Shanghai"    # Trigger timezone, e.g. Asia/Shanghai, America/New_York, Europe/London
    use-24-hour-format: true     # Use 24-hour format (false for 12-hour format with AM/PM)
    times:                       # Trigger times list
      - "00:00"                  # 24-hour examples: ["00:00", "06:00", "12:00", "18:00"]
      - "12:00"                  # 12-hour examples: ["12:00 AM", "06:00 AM", "12:00 PM", "06:00 PM"]

backup-dir: "backups"            # Backup directory (relative to plugin data folder)
max-backups: 10                  # Maximum backup count (0 = unlimited)
compress: true                   # Compress as zip

exclude-dirs:                    # Excluded directories (relative to server root)
  - "plugins/PluralBackup/backups"

# Backup Behavior
save-world-before-backup: true   # Save all worlds before backup
pause-autosave-during-backup: true  # Pause autosave during backup
file-copy-retry-count: 3         # File copy retry count
file-copy-retry-delay-ms: 500    # Retry delay in milliseconds

# Cloud Upload
cloud:
  enabled: false
  type: "local"                  # local / ftp / webdav / baidu / pan123
  local:
    path: "cloud-backups"
  ftp:
    host: "127.0.0.1"
    port: 21
    username: "ftpuser"
    password: "ftppass"
    remote-dir: "/backups"
    use-ssl: false
  webdav:
    url: "https://dav.example.com/backups"
    username: "user"
    password: "pass"
  # Baidu Netdisk (https://pan.baidu.com/union/console)
  baidu:
    app-id: ""
    app-secret: ""
    app-folder: ""               # Product name, files stored at /我的应用数据/{app-folder}/
    access-token: ""             # Leave empty for auto-fetch and cache
  # 123 Cloud (https://www.123pan.cn/developer)
  pan123:
    client-id: ""
    client-secret: ""
    access-token: ""             # Leave empty for auto-fetch and cache
    parent-folder-id: 0          # Target folder ID, 0 for root

# Alert Notifications
notification:
  enabled: false                 # Enable backup failure notifications
  # Email notification
  email:
    enabled: false
    smtp-host: ""                # e.g. smtp.qq.com
    smtp-port: 465
    use-ssl: true
    username: ""                 # Sender login account
    password: ""                 # Authorization code (QQ Mail requires auth code)
    from: ""                     # Sender email
    to: ""                       # Recipient email
    subject: "PluralBackup Backup Alert"
  # Lark bot
  feishu:
    enabled: false
    webhook: ""                  # Custom bot Webhook
    secret: ""                   # Signing secret (leave empty if not using signature)
  # DingTalk bot
  dingtalk:
    enabled: false
    webhook: ""                  # Custom bot Webhook
    secret: ""                   # Signing secret (leave empty if not using signature)

# GitHub Backup
github:
  enabled: false
  token: "your-github-token"     # PAT with repo permission
  owner: "your-username"
  repo: "PluralGamneBackup"
  auto-create-repo: true         # Auto-create private repo if not exists

# Message Settings
backup-start-message: "§e[Backup] §bServer is performing automatic backup..."
backup-done-message: "§e[Backup] §aBackup complete! Time: {time}s"
backup-fail-message: "§e[Backup] §cBackup failed: {error}"

GitHub Backup Instructions

  1. Create GitHub Personal Access Token with repo permission, recommend no expiration
  2. Configure token, owner, repo in config file
  3. Enable github.enabled: true
  4. Private repo auto-created if not exists (requires auto-create-repo: true)
  5. Empty repo auto-initialized (README.md written), otherwise Release creation fails
  6. Backup files uploaded as Release Assets, single file limit 2GB
  7. GitHub scheduled backup shares interval-minutes with local backup
  8. All network operations (upload/download) execute asynchronously, non-blocking main thread
  9. Manual /backup github-upload will auto-clean local old backups (subject to max-backups limit)

Dual-Mode Scheduled Backup

The plugin supports two independent trigger modes that can be enabled simultaneously:

1. Interval Mode (backup.auto-backup: true + backup.interval-minutes: 60)

  • Execute backup every N minutes
  • Suitable for high-frequency backup scenarios

2. Time-Based Mode (backup.schedule.enabled: true)

  • Execute backup at specific times in a specified timezone
  • Supports custom timezone (e.g. Asia/Shanghai, America/New_York, Europe/London)
  • Supports 24-hour format (HH:mm, e.g. 00:00, 12:00, 18:30)
  • Supports 12-hour format (hh:mm a, e.g. 12:00 AM, 06:00 PM)
  • Multiple trigger times configurable

Both modes can be enabled together without conflict. Example: interval mode backs up every hour, time-based mode adds extra backups at 00:00 and 12:00 daily.

Permissions

Permission Default Description
pluralbackup.admin OP Use all backup management commands

Build

mvn clean package

Generated jar file at target/PluralBackupJava-1.0.0.jar.

License

Copyright © PluralTeam

No gallery available for this project.

Version Minecraft Loader Download

PluralBackupJava 1.0.0

1.0.4

1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 26.1, 26.1.1, 26.1.2, 26.2
bukkit, paper, spigot
Download

PluralBackupJava 1.0.0

1.0.3

1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 26.1, 26.1.1, 26.1.2, 26.2
bukkit, paper, spigot
Download

PluralBackupJava 1.0.0

1.0.2

1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 26.1, 26.1.1, 26.1.2, 26.2
bukkit, paper, spigot
Download

PluralBackupJava 1.0.0

1.0.1

1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 26.1, 26.1.1, 26.1.2, 26.2
bukkit, paper, spigot
Download

PluralBackupJava 1.0.0

1.0.0

1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 26.1, 26.1.1, 26.1.2, 26.2
bukkit, paper, spigot
Download