Skip to content

A powerful backup plugin for MCDR, an advanced backup solution for your Minecraft world

License

Notifications You must be signed in to change notification settings

TISUnion/PrimeBackup

Repository files navigation

Prime Backup

English | 中文

A powerful backup plugin for MCDR, an advanced backup solution for your Minecraft world

Document: https://tisunion.github.io/PrimeBackup/

Features

  • Only stores files with changes with the hash-based file pool. Supports unlimited number of backup
  • Comprehensive backup operations, including backup/restore, listing/delete, import/export, etc
  • Smooth in-game interaction, with most operations achievable through mouse clicks
  • Highly customizable backup pruning strategies, similar to the strategy use by PBS
  • Crontab jobs, including automatic backup, automatic pruning, etc.
  • Supports use as a command-line tool. Manage the backups without MCDR

!!pb command

Requirements

MCDReforged requirement: >=2.12.0

Python package requirements: See requirements.txt

Usages

See the document: https://tisunion.github.io/PrimeBackup/

How it works

Prime Backup maintains a custom file pool to store the backup files. Every file in the pool is identified with the hash value of its content. With that, Prime Backup can deduplicate files with same content, and only stores 1 copy of them, greatly reduced the burden on disk usage.

Besides that, Prime Backup also supports compression on the stored files, which reduces the disk usage further more

PrimeBackup is capable of storing various of common file types, including regular files, directories, and symbolic links. For these 3 types:

  • Regular file: Prime Backup calculates its hash values first. If the hash does not exist in the file pool, Prime backup will (compress and) store its content into a new blob in the file pool. The file status, including mode, uid, mtime etc., will be stored in the database
  • Directory: Prime Backup will store its information in the database
  • Symlink: Prime Backup will store the symlink itself, instead of the linked target

Thanks

The idea for the hash-based file pool is inspired by https://github.com/z0z0r4/better_backup