Restic and Backblaze Personal

Is it possible to use restic with Backblaze personal? I am planning on using restic to backup my linux server to repos stored on Windows server. Will there be any issues having the restic repos backed up to a Backblaze personal account?

I read in another post that restic sets filenames to be the sha256 for the file so any changes involve creating a new file. Does that mean that if Backblaze personal hasn’t completely uploaded the latest snapshots that there is no chance that any previous snapshot would be corrupted if I had to restore the repo from Backblaze?

Thanks!

Restic does not work with the Backblaze backup service, but it does work with Backblaze B2 (object storage). There is no such thing as a “personal” object storage account.

Pricing is $0.005 per GB-month of data stored and $0.01 per GB egress (data retrieved).

1 Like

Understood that restic can’t directly push data to the Backblaze backup service and can push directly to B2. However B2 is cost prohibitive for the amount of data I am looking to store (~7TB+ without any versioning).

I am not looking for restic to push data directly to Backblaze backup service though. this is my planned configuration:
Linux Server <---- restic via SSH -----> Windows Server <---- Backblaze client -----> Backblaze backup service

Restic will be used on the Linux server to send backups, manage snapshots etc to the restic repo on my Windows server. From there the Backblaze client can backup all of the restic raw repo files (config/data/index/keys/snapshot folders).

If my Linux server ever needs to be restored, then I can use restic to restore from the repository on the Windows server. If the Windows server dies, I can use restic to redo the backup.

Backblaze will only be used for disaster recovery in the case that both servers are lost at the same time. I know i won’t be able to directly restore the data using restic. I will have to use Backblaze to restore all of the
restic repo files to the Windows server first, and then I will be able to use restic to restore the actual files to the Linux server.

My only concern is how restic stores snapshot information. If a new snapshot has been created on the Windows server, but Backblaze hasn’t finished uploading all of the new repo files I want to make sure that the repo files stored in Backblaze are valid (in particular i’m worried about files in the index folder).

This will probably work since a restic repository is just a collection of files. Note that there are some caveats to this approach, in particular (from what I hear) you can’t just restore everything at once from a Backblaze Backup vault. I would definitely test the restore procedure before you commit to this path.

The only thing that can realistically go wrong is that the snapshot file is uploaded before the required data files, and then the connection fails for some reason. In that case you just have an unusable snapshot. Deleting the snapshot would “fix” the repository, and you could restore from any other snapshot without issue, even without deleting the bad one.

The index files are redundant and are only used to look things up quickly. They can be recreated with restic rebuild-index which does not depend on the presence of valid indexes.

1 Like

Thanks for the input! Definitely some testing planned before turning off my current cloud backup service (Crashplan). I did have Backblaze for quite a while a few years ago and never had any issues with the couple of restores that I had to do (although none were terribly large).

Right. I’m seeing some information that you can only restore 500MB at a time as a generated zip file. I don’t know how accurate this is (it’s several years old, and may have changed). If it is accurate, recovery from a disaster might take some time.

1 Like

Well it took me longer than it should have, but I finally got around to actually testing out a restore and boy am I glad I did!

My initial restore failed with the error “Fatal: Fatal: config cannot be loaded: ciphertext verification failed”.

I did an md5sum on the restored config file and the real config file and found they are different. Backblaze must be modifying the config file in some manner that corrupts it and makes it impossible to restore!

To work around this for all of my repositories I created a base64 encoded version of the config file that sits alongside the actual config file. When doing a restore, I decode the base64 file and overwrite the restored config file and everything works as expected. I did a test restore of a smaller repository with 141k files and every md5sum matched up exactly.

Moral of the story: If you backup your restic repository with Backblaze Personal be sure to have a base64 encoded version of your config file backed up as well. And as always, test your restore process before you actually need it!

Are you sure that backblaze modified anything?

That would be very strange.

I’m pretty sure it is. At first I thought it might be a problem with the initial upload of the file, so I did the following test:

  1. Copied a working repo to “test”
  2. Verified “test” repo was working
  3. Waited for Backblaze to finish uploading all files
  4. Downloaded a .zip restore of the “test” repo from Backblaze
  5. Unzipped to “test2”
  6. Tested “test2” repo which resulted in “Fatal: Fatal: config cannot be loaded: ciphertext verification failed”
  7. Checked md5sum of test/config and test2/config and verified they were different

I can’t think of any other explanation other than Backblaze is not handling the config file correctly which results in some change to the file.

Umm… That’s weird and concerning (as someone who has family on Backblaze, that is). Could you check the file itself and see what is different?

I can reach out to Backblaze and get another test account activated to try to reproduce if needed.