Skip to content

J-Bentley/mc-backup.sh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 

Repository files navigation

What is it?

A bash script to gracefully stop/restart and perform local backups of a Minecraft server running in Screen on Ubuntu. Back up full server files, just worlds or just plugins with in-game warnings to tell players the server is restarting. Easily automated with crontab.

Setup

  1. Open the script in a text editor and change these variables at the top:
  • serverDir = Your root server directory. (dont include closing "/")
  • backupDir = The location to backup the compressed files to. The folder must exist already. (dont include closing "/")
  • startScript = The command to restart the server.
  • gracePeriod = Time to wait between warning in-game players and stopping server. M for minutes, s for seconds.
  • serverWorlds = A list of the world folder names. Includes defaults, add any of your custom worlds here.
  1. Manually start a screen session with screen -S <screen-id> and start your Minecraft server within the screen session. Ensure there is only 1 running screen session with screen -ls. (or see below for how to automate)

  2. Deattach from the screen session with ctrl + a + d and run the mc-backup.sh script from a SSH/terminal session outside of screen when you're ready to initiate a backup. Re-attach to the screen session with screen -r <screen-id> if needed. (or see below for how to automate)

(Optional) Auto-start minecraft server and screen at system boot:

  • crontab -e
  • add @reboot sleep 60 && bash /path/to/server/start.sh to end of crontab file
  • in your Minecraft server start.sh:
cd /path/to/server  
screen -dmS <screen-id>
screen -p 0 -X stuff 'java -Xms<RAM>G -Xmx<RAM>G -jar paper*\n'  

(Optional) Automate mc-backup.sh with Crontab (examples below):

  • crontab -e
  • Restart server every day at noon: 00 12 * * * bash /home/J-Bentley/mc-backup.sh -r
  • Backup world files every day at midnight: 00 24 * * * bash /home/J-Bentley/mc-backup.sh -w
  • Full server backup every monday at 1 AM: 00 1 * * 1 bash /home/J-Bentley/mc-backup.sh

Usage

bash mc-backup.sh [-h , -r , -w , -p, -pc]

  • No args: Gracefully stops the server if its running, compresses entire server directory to backup location and restarts server.

  • -h | --help: Shows modes available.

  • -r | --restart: Saves & restarts server with no backup made.

  • -w | --worlds: Gracefully stops the server, compresses world directories and restarts server.

  • -p | --plugins: Gracefully stops the server, compresses entire plugin directory and restarts server.

  • -pc | --pluginconfig: Gracefully stops the server, compresses plugin config directories and restarts server. Ignores plugin .jars.

Caveats

  • Only 1 or no arg can be called at a time.
  • Only 1 screen session can be running on the system.
  • If the server is offline when mc-backup is run, won't restart it after a backup unless in restartonly mode (-r). (submit an issue if you think this should be changed)

About

A local backup script for Minecraft servers

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages