Recently, I presented my “Back up and Restore your Database with Azure Blob Storage” session to the Bellingham PASS Chapter.
There are two components to the Azure Blob Storage Sync and Restore utility: Sync and Restore.
I wrote the Sync tool to work around difficulties I’d experienced with Azure Blob Storage’s Infinite Lease, and limitations in AzCopy. Lately these problems have been made mostly redundant, but the Restore tool remains extremely valuable, and I use it regularly for testing backups.
I’m happy to announce that new versions of both the sync and restore components have been released today, and they have a new name.
Both include some new features, which I’d like to highlight below, mostly to the Restore tool.
New Features
Point-In-Time Restore
During the Bellingham session, one of the questions asked was whether the Restore tool could perform a point-in-time restore using the RESTORE ... STOPAT
keyword.
You can now perform a point-in-time restore using the Restore tool, and it will only download the files from the latest backup that it needs, up to and including that point in time.
Note: This feature only works on the latest available backup. A feature enhancement will be included in a later release to perform a point-in-time restore for any backup, if the requisite files exist.
Download Indicator
It’s handy to know how fast a file is downloading, but there aren’t easy ways to do this on a command-line tool, and it can get confusing in a disaster recovery scenario if you don’t know if the download is stuck.
AzureBlobStorageRestore will now show your download progress, using a rotating cursor similar to one I first saw on the MS-DOS version of Doctor Solomon’s Antivirus.
Big shout-out to Daniel Wolf for his ProgressBar gist (available free under the MIT License).
Sort Order
Previously, the Restore tool would download files from smallest to largest, but this could be disconcerting in a disaster recovery scenario as it might look like files are missing.
Now files can be downloaded in alphabetical order, or the default of smallest to largest.
One More Thing
There’s a lot of emphasis on off-site storage these days, and not everyone uses Azure Blob Storage.
For example, one of my customers has a 5TB file share, mapped using UNC (in the format \\server\share
) and wants to copy files there.
What if you already keep tape backups, managed by a company that takes your tapes off-site in a fireproof lockbox, and all you need to do is get the files to a network share to be backed up to tape?
What if you just want to copy your database backup files to a local network share as well as Azure Blob Storage?
What if you know you should be moving your backup files to a network share but keep forgetting to do so?
More importantly, what if your backup files are already on a local network share and you have a disaster recovery situation. Downloading from Azure Blob Storage will take too long, and you just want to restore the latest backup from a local network share.
Introducing File Storage Sync and Restore.
FileStorageSync
Like its older sibling, FileStorageSync synchronises the contents of a local directory with a network share using a UNC path (in the format \\server\share
). You can provide a username and password as well, which is convenient for creating scheduled tasks. All other features from AzureBlobStorageSync are included.
FileStorageRestore
Like its older sibling, FileStorageRestore parses all the files in a UNC share, and downloads only the the latest full, differential and transaction log backup files required to perform a restore of your database.
It also includes Point-In-Time Restore (for the latest backup) and Sort Order customisation.
A download indicator is not provided in this version because local network speeds are usually so quick that it would add unnecessary overhead.
All other features from AzureBlobStorageRestore are included.
Note: A future enhancement which restores the latest backup from the UNC network share, without copying the files first, is coming soon. You will be able to restore your database as fast as possible.
If you want to play with the new features, you can find them in the GitHub repository.
This project is released free under the MIT License (free for commercial and non-commercial use), and all you have to do is give me credit.
Find me on Twitter at @bornsql if you have any thoughts. Feature requests can be submitted on the GitHub repository itself.