MineBackup
MineBackup - Automatically save and backup your server!
Features
- Numerous backup actions: Save (default); Copy and/or Compress. The copy action creates a copy of files in backup folder while the compress action creates a zip of files in backup folder. You do not need to enable both for compress to work.
- Numerous upload actions: Dropbox; FTP. These actions will upload the latest compressed version, so you will need to be using compression.
- Maintenance action: Cleanup. With this action enabled, old backups will only be deleted as scheduled (otherwise they will be deleted after a copy/compress action).
- Each action has a configurable interval. You can even set a specific time that an action should trigger (only once per day). Every action supports either method.
- You can either enable actions globally (default for all worlds) or enable/disable actions for specific worlds. Specific worlds can even have different time intervals for each action!
- Global or per world configurable amount of backups to be kept on disc. So a world that is rarely used can be compressed every few hours and set to have less copies retained.
- Global or per world configurable broadcast of backup status.
- Setting to enable an immediate backup on server restart/reload with configurable delay. With this disabled (default), scheduled actions will occur at their proper time, but if the server was stopped during that time, then it will run as soon as possible.
- Backup actions are staggered to try to prevent low-powered servers from getting overloaded. Instead of checking every world at one time and in order, a queue is checked once a minute to see if it needs to do a backup action.
- If no one has used the world since the last backup ("not dirty") then its actions are skipped.
- Able to backup plugins/other directories with a list of excluded paths (like dynmap's /tiles) and file types.
- Customizable messages. Everything sent to players is able to be translated or changed. Including broadcast groups.
- Configuration migration with a backup copy of the original configuration.
Caution
Does your server have a single-core processor or a low amount of memory (512mb and several plugins)?
Do NOT enable compression! Only enable copy.
Does your server operate over a typical home internet connection?
Do NOT enable dropbox or ftp!
Failure to understand this will almost certainly result in all of your players being disconnected.
Notes
[v0.5+] Due to changes to the old backup deletion code, the plugin will not automatically delete any v0.4 backups. You will need to manually delete them at an appropriate time.
[v5.9.2+] If you still have the old map format (world height 128) files in your world folders, it's going to yell at you on server startup. Once you have a backup of the world, delete level.dat_mcr and the *.mcr files in the region folder. They aren't needed after the conversion and double the size/time of the backup.
[v5.9.3+] Enable 'debug' in config.yml for a detailed list of the settings that are being used as each world/plugins is loaded. (Exact times are seconds from midnight, but stored as a negative number.)
Setup & Usage
Only save is enabled by default. You need to enable either 'copy' or 'compress'.
Download
MineBackup.jar (for auto-updaters)
Source
Default Config (created first start)
Default Strings (created first start)
Dropbox Linker (Google App Engine)
Credits
ThisIsAreku for the original MineBackup. This plugin has now been completely re-imagined and rewritten. The only thing untouched and unchanged is the name itself.
v0.5.4 is out. Chunks were not unloading on save. And it should continue copying plugins even if a file is in use (for real this time).
@deleted_8257995
If all you did was set 'compress: 3600' under default_settings, then you also need to set 'compress: true' under default_actions.
@ltguide
I realy dont like the update. I dont know how to set when minebackup will happen. I set compression to 3600 but when i do /minebackup status it says New actions will be scheduled once a minute. Then i do it again and it says Other: plugins (dirty: false) World: world (dirty: false) World: world_nether (dirty: false) World: world_the_end (dirty: false) New actions will be scheduled once a minute.
Its so complicated now. So now i have to manually back it up now.
@Munkyman587
If you turn on debug mode then it will output the time it takes to do actions. The "took over a minute" message is output when the queue thread is fired again but it's still doing something.
The newer builds of CB are pretty unstable reportedly, so it could be that as well. KJanar said he's had good luck with -62
Another issue here. My error message has gone away, but now I am getting "out of memory" errors after a few hours. I am running the machine on 64 bit java with 4GB+ of ram dedicated to this instance of java.
I have only recently updated this and essentials, so I thought I might toss this concern in (even if I cannot narrow it to you). Also, after restarting the server, I was getting some "x took over a minute to do x!?" error message (I forget the exact line). Anything I can do to help track down my issue? Thanks for the plugin =)
@Munkyman587
@Munkyman587 I wasn't being mad or angry it was just a friendly suggestion :D
v0.5.3 is up. Hopefully it fixes the ConcurrentModificationException. I have never had it happen to me in testing, so *fingers crossed*.
@Munkyman587 It could have been useful, you never know :)
I am not complaining, I figured any error log would be helpful in getting the plugin working. I can stop submitting error logs though... if thats more helpful
@Munkyman587
His fixing it, recoding threading system. Patience :D 0.4.8.4 works awesome :D use that :D
Still getting this with /minebackup now, version 0.5.2
09:08:42 [INFO] [MineBackup] All backup actions will start momentarily. (Munkyman587) 09:08:47 [INFO] [MineBackup] * saving noobtopia 09:08:47 [SEVERE] java.util.ConcurrentModificationException 09:08:47 [SEVERE] at java.util.HashMap$HashIterator.nextEntry(HashMap.java:806) 09:08:47 [SEVERE] at java.util.HashMap$KeyIterator.next(HashMap.java:841) 09:08:47 [SEVERE] at net.minecraft.server.World.a(World.java:2352) 09:08:47 [SEVERE] at net.minecraft.server.ChunkLoader.a(SourceFile:140) 09:08:47 [SEVERE] at net.minecraft.server.ChunkRegionLoader.a(SourceFile:84) 09:08:47 [SEVERE] at net.minecraft.server.ChunkProviderServer.saveChunk(ChunkProviderServer.java:163) 09:08:47 [SEVERE] at net.minecraft.server.ChunkProviderServer.saveChunks(ChunkProviderServer.java:212) 09:08:47 [SEVERE] at net.minecraft.server.World.save(World.java:273) 09:08:47 [SEVERE] at org.bukkit.craftbukkit.CraftWorld.save(CraftWorld.java:550) 09:08:47 [SEVERE] at ltguide.minebackup.TaskProcess.process(TaskProcess.java:170) 09:08:47 [SEVERE] at ltguide.minebackup.TaskProcess.runQuick(TaskProcess.java:141) 09:08:47 [SEVERE] at ltguide.minebackup.TaskProcess.run(TaskProcess.java:101) 09:08:47 [SEVERE] at org.bukkit.craftbukkit.scheduler.CraftWorker.run(CraftWorker.java:34) 09:08:47 [SEVERE] at java.lang.Thread.run(Thread.java:722)
@DonRedhorse updated, see OP I do like the idea of differential backups but not the headache with restoration though. The way the zips are now you can use worldedit to recover without shutting the server down.
so where is the update? :) I'd like to try it already, today I updated server for 1.1 so I want to keep my plugins up to date :)
@Wondrej
yeah probably somebody need to try or to know concerning the world stuff.. I think there was one plugin which was doeing something like this can't look though as the forum is down.
@DonRedhorse I don't know about this one... world files are a bit mess and then if you need to recover from backup, this could mess everything...
on the other hand, this could work for plugin backup, plugins are mostly still the same, they are changing only some databases.
@ltguide
if you need a tester let me know.
One more thing.. but I don't know if it is possible without seeing your code and the minecraft one.
Differential backups.. only store the changes between backups.. in theory a file with a timestamp per directory and a copy job which only copy files newer than that timestamp SHOULD work.. with a failback to a full if there is a problem and a configurable amount of differentials / full backups... so 5 diffs, one full etc..
@Chromana I haven't actually tried it myself, but it should work.
@Wondrej That sounds like a great idea and shouldn't be that much to implement.
@Wondrej I will as soon as (above) and I try out the broadcast code.
why don't you release at least dev version of this so we can test it out?
Hi, can a dive be specified for the backups? E.g. backup to D:\Client Backups\CHROMANA ?
@ltguide
everything looks great, Iam missing only one thing and that is timed backup option. I like the option to have backup every couple of hours but since you added option of dropbox backup it would be great to use it for example at 3 AM when noone is online once a day. So I would have regular backup every 3 or so hours and 1 dropbox backup once a day at given time.
Just take this as possible feature request :)
Anyway documentation and features of new version looks awesome
The progress really looks amazing ltguide
Thanks for keeping this plugin alive and progressing it even further!