We use Microsoft’s AzCopy to move large amounts of data from external sources into Microsoft Azure Storage.
The typical scenario for us is a customer who is moving onto an Azure Virtual Machine, and wants their data stored on that machine.
AzCopy is a versatile command line utility that allows you to move files from another PC or Server into Azure Storage, and then into your Azure virtual machine.
When migrating data to an Azure VM, the solution looks like this:
To get started, you need to install AzCopy from here.
Next, create an Azure Storage Account. You can do this in either the old portal or the new portal.
Once you’ve created a storage account, you’ll need to create a storage container. Here is a quick guide for the old portal and the new portal.
Now that you’ve installed AzCopy, created a storage account and a container, you can put together your AzCopy commands. Typically you’ll create two commands, one that uploads your data into Azure Storage, and the other downloads your data from Azure Storage into your Azure Virtual Machine.
Here’s an example that will move local data from E:\NAS into Azure Storage, and then download it to E:\NAS on the destination virtual machine:
To Azure Blob Storage
AzCopy /Source:E:\NAS /Dest:https://<storageaccountname>.blob.core.windows.net/<containername> /DestKey:<LongStorageAccountKey> /S /V:C:\temp\NASDrive.log
From Azure Blob Storage
AzCopy /Source:https://<storageaccountname>.blob.core.windows.net/<containername> /Dest:E:\NAS /SourceKey:<LongStorageAccountKey> /S /V:C:\temp\NASDrive.log
These commands will also create a log file under C:\temp\NASDrive.log
Running the AzCopy commands
Open Command Prompt and navigate to the location where AzCopy was installed. Typically this is under “C:\Program Files (x86)\Microsoft SDKs\Azure\AzCopy”
Paste in your first command and run it to start the upload. In the meantime, you can install AzCopy on the destination server.
Once the upload is complete, go to the destination server and run the second command to download the data from Azure Blob Storage.
If you experience errors
Occasionally you may experience errors in the AzCopy transfer (usually the upload), where certain files will fail. The solution for this is usually to append the /NC: parameter and run the command again. The /NC: parameter limits the number of concurrent connections to Azure storage. I usually set it to /NC:5, where 5 is the maximum number of concurrent files that will be uploaded. The upper limit of concurrent connections is 512.
Updated command for uploading to Azure Blob Storage
AzCopy /Source:E:\NAS /Dest:https://<storageaccountname>.blob.core.windows.net/<containername> /DestKey:<LongStorageAccountKey> /S /V:C:\temp\NASDrive.log /NC:5
If you’re rerunning the command, you will be asked whether you want to skip files that already exist. Choose to skip All.
Here’s the results of the second transfer. You may notice that the number of files transferred in this image is different to the number of files that failed in the previous image. In this case, we removed some unnecessary files before restarting the upload.
For more information on AzCopy, see the documentation here.