Cheap and Secure Cloud Backups
I’ve wanted to find a good provider of cheap and secure cloud backups for a while.
I’ve compared some cloud drive providers, but didn’t quite like those. They
usually have very limited free plans, somewhat pricey paid plans (e.g. 50GB for
about 24$ a year for OneDrive), or like in the case of Google no information
available at all. By the way, “Google one is coming soon” isn’t an announcement
that I want to look at for more than a few days when looking for pricing info.
Then, I’ve looked at pricing of cloud storage providers, such as AWS, Azure and
Google Cloud. Those offer storage around 1 cent ($0.01) per GB per month. That’s
a quarter of the OneDrive cost! It’s even less if you consider their archive
offerings (AWS Glacier, Archive in Azure, Coldline Storage for Google). The
cheapest offering here is from Microsoft at 0.2 cents ($0.002) per GB per month,
but with some usage caveats. Since the point of backups is to keep them for a
long time, this quickly adds up though. Now I’ve written a line or two of code
before, so I figured I could as well write my own tool for this. So here is
bart
, the backup and restore tool. Note
that at this point I do not offer bart
as a ready-to-use executable, but only as
MIT-licensed source code. In addition, bart
currently works only with Azure
Blob Storage - or with storage mounted into the machine’s file system. However,
adding other cloud providers/archive destinations should be relatively easy,
given the interfaces used in the tool.
Security
In terms of security, bart
encrypts every file before storing it in the archive
destination. A user-provided password is used together with a randomly generated
salt to derive a key for encryption with AES. On first use of any archive
destination, bart
generates a random salt, and each archive has its own password
and salt. To avoid anybody with access to the archive destination from even
snooping the names of your files, the names are hashed (SHA1) and the hashes
used to store the encrypted files. This has the disadvantage that renaming/moving
a file results in another file in the destination archive, though.
Usage
Once you compiled bart
, you can use it as follows.
./bart [-name string] [-path string] [-m noop|restore|delete] -acct string -key string
-name string
The name of the backup archive. (default "backup")
-path string
The path to the directory to backup and/or restore. (default ".")
-m string
A behavior for files missing locally: 'noop' to do nothing, 'restore' to
restore them from the backup, 'delete' to delete them in the backup
archive. (default "noop")
-acct string
The Azure Storage Account name.
-key string
The Azure Storage Account Key.
Sources
The sources are on GitHub @ https://github.com/rokeller/bart.
Conclusion
I’ve used bart
for backup of some photos/videos for a while now. For the about
42GB I have uploaded so far my monthly bill from Microsoft is about 42 cents
($0.42). Those months where I upload new files the cost is a little higher (a
few cents usually) because of the extra transactions. My backed up files are
encrypted. If this isn’t cheap and secure cloud backups, what is?