Free, Secure Cloud Backup - B2MC [1.0] [Spigot + Sponge]

We all know that we should back our servers up. Sometimes, however, it’s just not as easy as we’d like it to be.

Presenting B2MC…
Based on my public JB2 API, this plugin will create a zip file containing your entire server and upload it to the Backblaze cloud. I don’t host this, it’s a huge US company which stores petabytes of data, and that you can rely on.

It’s free?
My plugin is entirely free of charge, and B2 offers 10GB of free storage, including unlimited bandwidth. If you plan on using my plugin for several servers, I recommend you check out the pricing page. You’ll never get charged if you don’t enter your details, you’ll just be capped.

Is it hard to setup?
Nope! Just install the plugin, and restart your server to generate the necessary configs. Sign up here, and then enable B2:

https://proxy.spigotmc.org/ff20ef089bff572fdfc7cf9db296072b057e6bf0?url=https%3A%2F%2Fwww.backblaze.com%2Fb2%2Fdocs%2Fimages%2Fenable_b2.png

Once you’ve done that, click buckets on the sidebar and generate your account ID and application key. Add this to the config, and you’re ready to go. Make sure you’ve changed the bucket name to something nobody else will have and that only contains letters and numbers.

What now?
Restart your server one last time. Every day at midnight, your server will be backed up automatically. If you’d like to test out backup, just type the /runbackup command in the console or chat.

Upcoming features:

  • Keep more than one backup

  • Advanced scheduling configuration to choose when backups should take place

  • Automatic backup restores

Source:

That’s it!
All feedback is appreciated, and feel free to PM me if you’d like any support. I hope you make good use of B2MC, as it was great fun to make.

Downloads:

(Jar works on Sponge and Spigot)

Please note, that while a fix will be coming soon, backups of over 10GB will be created as a local zip file but not uploaded to Backblaze due to upload restrictions.

4 Likes

How hard would it be to introduce throttling to the bandwidth? or some sort of RSync so only modified chunks are uploaded? I could see some servers lagging whilst uploading the backup.

Hi Ryan,

Currently everything is simply zipped up and therefore I don’t have the ability to decide which chunks should be sent. Doing something like you suggest may be possible but seems overly complex.

As for bandwidth throttling, this seems like a good idea. I’ll need to investigate it and will update the plugin if it is possible. While I know you are referring to network lag, precautions have been taken where necessary to ensure the server runs well such as everything being completed asynchronously.

Yeah anything professionally hosted shouldn’t have a problem with bandwidth, It’s more the home users I was worried about.

Just to let you know, you call the plugin ‘B2MC’ in the title but ‘MCB2’ in the body of the post:

Fixed, thanks for letting me know :slight_smile:

How do I, “sign up here”? I am going to install this, but I am a bit confused.

Never mind, I figured it out. Thanks for the plugin! In future releases, can you make it also a local backup plugin? It would help me out a bit as well.

Was there supposed to be a link there? There’s no link.

I went to backblaze website and found their new B2 thing so I think I know what to do… but they require my phone number! I don’t have a phone number! :tired_face:

Nevermind, I used some fake phone number service to get the SMS message :stuck_out_tongue:

I don’t quite understand this… does the name of the bucket have to be unique? And if so, why, and how do I know if the name I choose has not been used before? :confused:

The backup doesn’t work :hushed:

[21:55:35 INFO] [b2mc]: Running backup... [21:55:35 ERROR] [Sponge]: The Scheduler tried to run the task b2mc-A-2 owned by Plugin{id=b2mc, name=B2MC, version=1.0, source=mods/B2MC.jar}, but an error occured. java.lang.NoClassDefFoundError: org/json/JSONObject at com.oliverdunk.jb2.api.B2API.authorizeAccount(B2API.java:167) ~[B2API.class:?] at com.oliverdunk.b2mc.api.AbstractConfig.createSession(AbstractConfig.java:24) ~[AbstractConfig.class:?] at com.oliverdunk.b2mc.runnables.BackupRunner.run(BackupRunner.java:27) ~[BackupRunner.class:?] at org.spongepowered.api.scheduler.Task$Builder.lambda$execute$9(Task.java:138) ~[Task$Builder.class:1.8.9-3.1.0-BETA-219] at org.spongepowered.common.scheduler.SchedulerBase.lambda$startTask$217(SchedulerBase.java:177) ~[SchedulerBase.class:1.8.9-3.1.0-BETA-219] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_71] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_71] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_71] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_71] at java.lang.Thread.run(Thread.java:745) [?:1.8.0_71] Caused by: java.lang.ClassNotFoundException: org.json.JSONObject at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191) ~[launchwrapper-1.12.jar:?] at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_71] at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_71] ... 10 more Caused by: java.lang.NullPointerException

Yeah, I searched for BackBlaze on Google as well.

And fake phone service? I need that, like, a LOT.

Interesting. I might not use it because it sounds a bit sketchy, but if I need to, I’ll go there. BTW, I may not use this plugin as I need a local backup, which I am going to program.

I’d use it if it worked :anguished:

Let’s take this to another thread, I’ll make and program it.

Hi Guys,

Glad to see some activity on this thread!
I haven’t been checking forums much lately as I’m in the midst of some exams and I’m also pretty busy with my personal life too. I’ll make sure to get an update out shortly that fixes these issues, but you’re free to make your own version if you wish.

I hope you understand and don’t mind the fact that I can’t work as quickly as I’d like too :frowning:

Sorry for the revive on this topic as well but I was hoping this could be worked on that would be cool if not welp time for me to learn coding