- Nathan, Solutions Engineer at Backblaze, created a batch file for backing up a GitHub repository from Windows. The batch file assumes that B2 command-line tool, Python, and 7ZIP are installed. The batch file requires that some variables (B2 account, etc) are filled in. The script can be found at BackupGHRepoToBackblaze.bat.
- A small coding endeavor I embarked on during my senior year of high school was a file uploading service for ShareX.ShareX is a great screenshotting tool and I decided to make a server in Node.js for uploading files with ShareX.
# BackBlaze B2 is an object storage service that is much less expensive than using Amazon S3 for the same purpose, with similar versioning and lifecycle management features. # Uploads are free, and storage costs only $0.005/GB/month compared to S3's $0.022/GB/month.
- METHODS
- METHODS
Backblaze::B2 - interface to the Backblaze B2 API
Backblaze::B2->new %options
Allows you to specify the API version. The current default is v1
, which corresponds to the Backblaze B2 API version 1 as documented at https://www.backblaze.com/b2/docs/.
B2.credentials
This file should live in your home directory with the application key and the account key:
Backblaze::B2::v1 - Backblaze B2 API account
->new %options
Creates a new instance. Depending on whether you pass in <Backblaze::B2::v1::Synchronous
> or <Backblaze::B2::v1::AnyEvent
>, you will get a synchronous or asynchronous API.
The synchronous API is what is documented here, as this is the most likely use case.
The asynchronous API is identical to the synchronous API in spirit, but will return Promises . These condvars usually return two or more parameters upon completion:
The asynchronous API puts the burden of error handling into your code.
->buckets
Returns a list of Backblaze::B2::Bucket objects associated with the B2 account.
->bucket_from_id
Returns a Backblaze::B2::Bucket object that has the given ID. It does not make an HTTP request to fetch the name and status of that bucket.
->create_bucket
Creates a new bucket and returns it.
->api
Returns the underlying API object
->files( %options )
Lists the files contained in this bucket
By default it returns only the first 1000 files, but see the allFiles
parameter.
allFiles
Passing in a true value for this parameter will make as many API calls as necessary to fetch all files.
->upload_file( %options )
Backblaze Github Tutorial
Uploads a file into this bucket, potentially creating a new file version.
file
Local name of the source file. This file will be loaded into memory in one go.
target_file
Name of the file on the B2 API. Defaults to the local name.
The target file name will have backslashes replaced by forward slashes to comply with the B2 API.
mime_type
Content-type of the stored file. Defaults to autodetection by the B2 API.
content
If you don't have the local content in a file on disk, you can pass the content in as a string.
mtime
Time in miliseconds since the epoch to when the content was created. Defaults to the current time.
sha1
Hexdigest of the SHA1 of the content. If this is missing, the SHA1 will be calculated upon upload.
->download_file_by_name( %options )
Downloads a file from this bucket by name:
This saves you searching through the list of existing files if you already know the filename.
->get_download_authorization( %options )
Downloads a file from this bucket by name:
This returns an authorization token that can download files with the given prefix.
->api
Returns the underlying API object
->files( %options )
Lists the files contained in this bucket
By default it returns only the first 1000 files, but see the allFiles
parameter.
allFiles
Passing in a true value for this parameter will make as many API calls as necessary to fetch all files.
->upload_file( %options )
Uploads a file into this bucket, potentially creating a new file version.
file
Local name of the source file. This file will be loaded into memory in one go.
target_file
Name of the file on the B2 API. Defaults to the local name.
The target file name will have backslashes replaced by forward slashes to comply with the B2 API.
mime_type
Content-type of the stored file. Defaults to autodetection by the B2 API.
content
If you don't have the local content in a file on disk, you can pass the content in as a string.
mtime

Time in miliseconds since the epoch to when the content was created. Defaults to the current time.
sha1
Hexdigest of the SHA1 of the content. If this is missing, the SHA1 will be calculated upon upload.
->download_file_by_name( %options )
Downloads a file from this bucket by name:
This saves you searching through the list of existing files if you already know the filename.
->api
Returns the underlying API object
To install Backblaze::B2, copy and paste the appropriate command in to your terminal.
Backblaze Github
For more information on module installation, please visit the detailed CPAN module installation guide.
