Backblaze Configuration Failed (Rocky, VM7.1)

SYSTEM INFORMATION
OS type and version Rocky Linux 8.6
Webmin version 1.994
Virtualmin version 7.1 Pro
Related packages B2 Command package (pip)

Using pip B2 install and Virtualmin > Backup and Restore > Cloud Service Providers > Backblaze threw this lovely error:

Login to Backblaze failed : Traceback (most recent call last): File "/usr/local/bin/b2", line 11, in <module> load_entry_point('b2==3.4.0', 'console_scripts', 'b2')() File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 476, in load_entry_point return get_distribution(dist).load_entry_point(group, name) File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2700, in load_entry_point return ep.load() File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2318, in load return self.resolve() File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2324, in resolve module = __import__(self.module_name, fromlist=['__name__'], level=0) File "/usr/local/lib/python3.6/site-packages/b2/console_tool.py", line 28, in <module> from b2sdk.v2 import ( File "/usr/local/lib/python3.6/site-packages/b2sdk/v2/__init__.py", line 11, in <module> from b2sdk._v3 import * # noqa File "/usr/local/lib/python3.6/site-packages/b2sdk/_v3/__init__.py", line 16, in <module> from b2sdk.api import B2Api File "/usr/local/lib/python3.6/site-packages/b2sdk/api.py", line 13, in <module> from .account_info.abstract import AbstractAccountInfo File "/usr/local/lib/python3.6/site-packages/b2sdk/account_info/__init__.py", line 11, in <module> from .in_memory import InMemoryAccountInfo File "/usr/local/lib/python3.6/site-packages/b2sdk/account_info/in_memory.py", line 14, in <module> from .upload_url_pool import UrlPoolAccountInfo File "/usr/local/lib/python3.6/site-packages/b2sdk/account_info/upload_url_pool.py", line 15, in <module> from .abstract import AbstractAccountInfo File "/usr/local/lib/python3.6/site-packages/b2sdk/account_info/abstract.py", line 14, in <module> from b2sdk.raw_api import ALL_CAPABILITIES File "/usr/local/lib/python3.6/site-packages/b2sdk/raw_api.py", line 20, in <module> from .replication.setting import ReplicationConfiguration File "/usr/local/lib/python3.6/site-packages/b2sdk/replication/setting.py", line 14, in <module> from dataclasses import dataclass, field ModuleNotFoundError: No module named 'dataclasses'

I’m not even going to bother trying to troubleshoot it because it took me less time to install and configure rclone, which I’ve been using without incident for years, than to drill down into the error.

So consider this for informational / debugging purposes only. I don’t need a fix. rclone works just fine for me.

Richard

That’s pretty clearly a broken installation of b2. We can’t do anything if b2 can’t even start due to missing modules.

Oh, yeah. That much I knew. And that’s as far as I went. It wasn’t worth the bother to even google a fix when I had a perfectly-functional alternative at my disposal. It would be like trying to splice a broken shoelace together.

Would it be worth wrapping a GUI around rclone to make all of its cloud destinations available to the shell-shy? I’ve never had any problems using it to send or retrieve anything to or from anywhere, on any platform.

It probably would be worth a look. It seems to be in our supported distro repos, and it’d hide a lot of implementation details from us (and we don’t care about implementation details, we just want to reliably dump files into various cloud storage options).

@Jamie rclone (https://rclone.org/) looks like a promising alternative to directly using all the various cloud storage APIs. Seems to support just about everything.

1 Like

Yeah, it’s a handy tool. Once it’s configured (about 45 seconds in the shell for Backblaze), the backup command (assuming the remote is named backblaze) is something like

rclone sync -v /backup backblaze:the-bucket-name --transfers 8

with minor variations depending on use case. It’s worked flawlessly for years. I usually just tack it on to the backup routine. It can also run in cron.

I use sync on some servers and copy on others, depending on the server’s use case. The number of transfers is dependent on how much I/O you want to use. I’ve found that 8 works well on a typical VPS. More starts generating complaints about excessive disk I/O. Less is too slow.

It’s one of those tools that just quietly does its thing with no drama.