Skip to content
Kyle Lexmond edited this page Dec 29, 2021 · 3 revisions

What is this?

This is a reverse engineered implementation of the Backblaze Downloader.

I used mitmproxy to capture the requests the downloader made, and used Python requests to call the same API, and interpret the responses.

I added a thin layer of functionality to make it more usable for my own purposes:

  • Download multiple restores
  • Prompts to set download location for each zip file
  • Actually function progress bars that update without knocking the window out!

Why?

Because I had to use the restore functionality to get some files over hotel wifi, and the official Downloader:

  • made me login for each restore
  • couldn't have multiple restores running without randomly deadlocking one restore
  • can't be queued to run overnight
  • UI perpetually went unresponsive

A lot of these are known issues which Backblaze says fixes are improvements are coming. At some point.

Also, there's no official restore client for Linux, this works on Linux (and is headless).

How do I use it?

Assuming you've got Python 3.8+ installed:

  1. Install Poetry
  2. Checkout this repo & switch to the directory
  3. Install dependencies with poetry install
  4. Run with poetry run bzdownloader/bzdownloader.py
  5. Answer the questions
  6. Profit Have backblaze restore files saved somewhere with less hassle.

If you don't have Python 3.8 installed, I can't help you.

Because it's not multi-threaded, it's slower than the official client. In my use, this was about 10% slower than the official client, but I let it run overnight with no issue.

Github management

This is a personal project, it-works-for-me is the default. If it doesn't work for you, it's on you to figure out why.

If you find a bug, the best thing would be to create a PR for it. Those I review periodically.

You can create an issue, but I reserve the right to close it with no action. (See: it-works-for-me)

I'm not accepting feature requests, you can fork this and go build your own variant off of this. (See: it-works-for-me)

If Backblaze asks, I'll take this down.

Other things

Did this solve a problem for you? That's awesome! I'm happy. Find me on Twitter and let me know :)

If it really helped, you can throw some money at my favourite charity: Washington Alaskan Malamute Adoption League, or, if you're not in the US, your local animal shelter.

If you want me to help you with something: No. You do not get to make demands on my time. I wrote this to save myself time, and because it was fun to figure out an annoying problem. Go and read this.

Clone this wiki locally