Created
December 19, 2017 16:43
-
-
Save esell/bb755f75e12c21378ec2d9a4d66892cb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#r "Microsoft.WindowsAzure.Storage" | |
using System; | |
using Microsoft.WindowsAzure.Storage; | |
using Microsoft.WindowsAzure.Storage.Blob; | |
using Microsoft.WindowsAzure.Storage.Blob.Protocol; | |
using Microsoft.WindowsAzure.Storage.Auth; | |
using System.IO; | |
using System.Threading.Tasks; | |
public static void Run(TimerInfo myTimer, ICollector<BlobBackup> outputTable, TraceWriter log) | |
{ | |
log.Info($"C# Timer trigger function executed at: {DateTime.Now}"); | |
// Source blob stuff | |
string blobName = "testSQL-data1.vhd"; | |
log.Info(GetEnvironmentVariable("sourceStorageconnectionstring")); | |
CloudStorageAccount sourceStorageAccount = new CloudStorageAccount(new StorageCredentials("stgAcctName", "stgAcctKey"), true); | |
log.Info($"creating blob client"); | |
CloudBlobClient sourceCloudBlobClient = sourceStorageAccount.CreateCloudBlobClient(); | |
log.Info($"creating blob container"); | |
CloudBlobContainer sourceContainer = sourceCloudBlobClient.GetContainerReference("vhds"); | |
log.Info($"creating block blob"); | |
CloudPageBlob sourceBlob = (CloudPageBlob)sourceContainer.GetBlobReferenceFromServer(blobName); | |
// Destination blob stuff | |
CloudStorageAccount destStorageAccount = new CloudStorageAccount(new StorageCredentials("dstStgAcctName", "dstStgAcctKey"), true); | |
log.Info($"creating blob client2"); | |
CloudBlobClient destCloudBlobClient = destStorageAccount.CreateCloudBlobClient(); | |
log.Info($"creating blob container2"); | |
CloudBlobContainer destContainer = destCloudBlobClient.GetContainerReference("sqlcopy"); | |
destContainer.CreateIfNotExists(); | |
log.Info($"creating block blob2"); | |
//CloudPageBlob destBlob = (CloudPageBlob)destContainer.GetBlobReferenceFromServer(blobName); | |
CloudPageBlob destBlob = (CloudPageBlob)destContainer.GetPageBlobReference(blobName); | |
// Copy blob | |
destBlob.StartCopy(sourceBlob); | |
log.Info($"Adding BlobBackup entity"); | |
outputTable.Add( | |
new BlobBackup() { | |
PartitionKey = "Test", | |
// set to date + blobname | |
RowKey = blobName, | |
Name = "Name" + blobName } | |
); | |
log.Info($"C# Timer trigger function completed at: {DateTime.Now}"); | |
} | |
public static string GetEnvironmentVariable(string name) | |
{ | |
return name + ": " + | |
System.Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process); | |
} | |
public class BlobBackup | |
{ | |
public string PartitionKey { get; set; } | |
public string RowKey { get; set; } | |
public string Name { get; set; } | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment