Backblaze B2 Storage Driver Documentation

Backblaze is an online backup tool that allows Windows and Mac OS X users to back up their data to an offsite data center.

Backblaze B2 is their cloud object storage offering similar to Amazon S3 and other object storage services.

../../_images/backblaze.png

Instantiating a driver

To instantiate the driver you need to pass your key id and application key to the driver constructor as shown below.

To access the credentials, you can login to https://secure.backblaze.com/user_signin.htm, then click “App Keys” or go to https://secure.backblaze.com/app_keys.htm directly.

keyID serves as the first and applicationKey as the second argument to the driver constructor.

from libcloud.storage.types import Provider
from libcloud.storage.providers import get_driver

key_id = "XXXXXX"
application_key = "YYYYYY"

cls = get_driver(Provider.BACKBLAZE_B2)
driver = cls(key_id, application_key)

API Docs

class libcloud.storage.drivers.backblaze_b2.BackblazeB2StorageDriver(key, secret=None, secure=True, host=None, port=None, api_version=None, region=None, **kwargs)[source]
Parameters:
  • key (str) – API key or username to be used (required)

  • secret (str) – Secret password to be used (required)

  • secure (bool) – Whether to use HTTPS or HTTP. Note: Some providers only support HTTPS, and it is on by default.

  • host (str) – Override hostname used for connections.

  • port (int) – Override port used for connections.

  • api_version (str) – Optional API version. Only used by drivers which support multiple API versions.

  • region (str) – Optional driver region. Only used by drivers which support multiple regions.

Return type:

None

connectionCls

alias of BackblazeB2Connection

create_container(container_name, ex_type='allPrivate')[source]

Create a new container.

Parameters:

container_name (str) – Container name.

Returns:

Container instance on success.

Return type:

libcloud.storage.base.Container

delete_container(container)[source]

Delete a container.

Parameters:

container (libcloud.storage.base.Container) – Container instance

Returns:

True on success, False otherwise.

Return type:

bool

delete_object(obj)[source]

Delete an object.

Parameters:

obj (libcloud.storage.base.Object) – Object instance.

Returns:

bool True on success.

Return type:

bool

download_object(obj, destination_path, overwrite_existing=False, delete_on_failure=True)[source]

Download an object to the specified destination path.

Parameters:
  • obj (libcloud.storage.base.Object) – Object instance.

  • destination_path (str) – Full path to a file or a directory where the incoming file will be saved.

  • overwrite_existing (bool) – True to overwrite an existing file, defaults to False.

  • delete_on_failure (bool) – True to delete a partially downloaded file if the download was not successful (hash mismatch / file size).

Returns:

True if an object has been successfully downloaded, False otherwise.

Return type:

bool

download_object_as_stream(obj, chunk_size=None)[source]

Return a iterator which yields object data.

Parameters:
Return type:

iterator of bytes

download_object_range(obj: Object, destination_path: str, start_bytes: int, end_bytes: int | None = None, overwrite_existing: bool = False, delete_on_failure: bool = True) bool

Download part of an object.

Parameters:
  • obj (libcloud.storage.base.Object) – Object instance.

  • destination_path (str) – Full path to a file or a directory where the incoming file will be saved.

  • start_bytes (int) – Start byte offset (inclusive) for the range download. Offset is 0 index based so the first byte in file file is “0”.

  • end_bytes (int) – End byte offset (non-inclusive) for the range download. If not provided, it will default to the end of the file.

  • overwrite_existing (bool) – True to overwrite an existing file, defaults to False.

  • delete_on_failure (bool) – True to delete a partially downloaded file if the download was not successful (hash mismatch / file size).

Returns:

True if an object has been successfully downloaded, False otherwise.

Return type:

bool

download_object_range_as_stream(obj: Object, start_bytes: int, end_bytes: int | None = None, chunk_size: int | None = None) Iterator[bytes]

Return a iterator which yields range / part of the object data.

Parameters:
  • obj (libcloud.storage.base.Object) – Object instance

  • start_bytes (int) – Start byte offset (inclusive) for the range download. Offset is 0 index based so the first byte in file file is “0”.

  • end_bytes (int) – End byte offset (non-inclusive) for the range download. If not provided, it will default to the end of the file.

  • chunk_size (int) – Optional chunk size (in bytes).

Return type:

iterator of bytes

enable_container_cdn(container: Container) bool

Enable container CDN.

Parameters:

container (libcloud.storage.base.Container) – Container instance

Return type:

bool

enable_object_cdn(obj: Object) bool

Enable object CDN.

Parameters:

obj (libcloud.storage.base.Object) – Object instance

Return type:

bool

ex_get_upload_data(container_id)[source]

Retrieve information used for uploading files (upload url, auth token, etc).

Rype:

dict

ex_get_upload_url(container_id)[source]

Retrieve URL used for file uploads.

Return type:

str

get_container(container_name)[source]

Return a container instance.

Parameters:

container_name (str) – Container name.

Returns:

Container instance.

Return type:

libcloud.storage.base.Container

get_container_cdn_url(container: Container) str

Return a container CDN URL.

Parameters:

container (libcloud.storage.base.Container) – Container instance

Returns:

A CDN URL for this container.

Return type:

str

get_object(container_name, object_name)[source]

Return an object instance.

Parameters:
  • container_name (str) – Container name.

  • object_name (str) – Object name.

Returns:

Object instance.

Return type:

libcloud.storage.base.Object

get_object_cdn_url(obj: Object) str

Return an object CDN URL.

Parameters:

obj (libcloud.storage.base.Object) – Object instance

Returns:

A CDN URL for this object.

Return type:

str

iterate_container_objects(container, prefix=None, ex_prefix=None)[source]

Return a generator of objects for the given container.

Parameters:
  • container (Container) – Container instance

  • prefix (str) – Filter objects starting with a prefix. Filtering is performed client-side.

  • ex_prefix (str) – (Deprecated.) Filter objects starting with a prefix. Filtering is performed client-side.

Returns:

A generator of Object instances.

Return type:

generator of Object

iterate_containers()[source]

Return a iterator of containers for the given account

Returns:

A iterator of Container instances.

Return type:

iterator of libcloud.storage.base.Container

list_container_objects(container: Container, prefix: str | None = None, ex_prefix: str | None = None) List[Object]

Return a list of objects for the given container.

Parameters:
  • container (libcloud.storage.base.Container) – Container instance.

  • prefix (str) – Filter objects starting with a prefix.

  • ex_prefix (str) – (Deprecated.) Filter objects starting with a prefix.

Returns:

A list of Object instances.

Return type:

list of libcloud.storage.base.Object

list_containers() List[Container]

Return a list of containers.

Returns:

A list of Container instances.

Return type:

list of Container

upload_object(file_path, container, object_name, extra=None, verify_hash=True, headers=None)[source]

Upload an object.

Note: This will override file with a same name if it already exists.

upload_object_via_stream(iterator, container, object_name, extra=None, headers=None)[source]

Upload an object.

Note: Backblaze does not yet support uploading via stream, so this calls upload_object internally requiring the object data to be loaded into memory at once