Desenvolvimento para o Arquivos do Azure com .NETDevelop for Azure Files with .NET

Este tutorial demonstra as noções básicas de usar o .NET para desenvolver aplicativos que usam os Arquivos do Azure para armazenar dados de arquivo.This tutorial demonstrates the basics of using .NET to develop applications that use Azure Files to store file data. Este tutorial cria um aplicativo de console simples para executar ações básicas com o .NET e os Arquivos do Azure:This tutorial creates a simple console application to perform basic actions with .NET and Azure Files:

  • Obter o conteúdo de um arquivoGet the contents of a file
  • Defina a cota (tamanho máximo) para o compartilhamento de arquivos.Set the quota (maximum size) for the file share.
  • Crie uma assinatura de acesso compartilhado (chave SAS) para um arquivo que usa uma política de acesso compartilhado definida no compartilhamento.Create a shared access signature (SAS key) for a file that uses a shared access policy defined on the share.
  • Copie um arquivo em outro arquivo na mesma conta de armazenamento.Copy a file to another file in the same storage account.
  • Copie um arquivo em um blob na mesma conta de armazenamento.Copy a file to a blob in the same storage account.
  • Usar métricas de armazenamento do Azure para solucionar problemasUse Azure Storage Metrics for troubleshooting

Para saber mais sobre os Arquivos do Azure, consulte Introdução aos Arquivos do Azure.To learn more about Azure Files, see Introduction to Azure Files.

Dica

Confira o repositório de exemplos de código do Armazenamento do AzureCheck out the Azure Storage code samples repository

Para exemplos de código fácil de usar ponta a ponta do Armazenamento do Azure que você pode baixar e executar, consulte nossa lista de Exemplos de Armazenamento do Azure.For easy-to-use end-to-end Azure Storage code samples that you can download and run, please check out our list of Azure Storage Samples.

Compreendendo as APIs do .NETUnderstanding the .NET APIs

Os Arquivos do Azure fornecem duas abordagens amplas para aplicativos clientes: SMB (Protocolo SMB) e REST.Azure Files provides two broad approaches to client applications: Server Message Block (SMB) and REST. No .NET, essas abordagens são abstraídas pelas APIs do System.IO e do WindowsAzure.Storage.Within .NET, these approaches are abstracted by the System.IO and WindowsAzure.Storage APIs.

APIAPI Quando usarWhen to use ObservaçõesNotes
System.IOSystem.IO Seu aplicativo:Your application:
  • Precisa ler/gravar arquivos por meio do SMBNeeds to read/write files via SMB
  • Está em execução em um dispositivo que tem acesso pela porta 445 à sua conta do Arquivos do AzureIs running on a device that has access over port 445 to your Azure Files account
  • Não precisa gerenciar nenhum das configurações administrativas do compartilhamento de arquivoDoesn't need to manage any of the administrative settings of the file share
Codificar a E/S de arquivo com os Arquivos do Azure no protocolo SMB geralmente é igual a codificar a E/S com qualquer dispositivo de compartilhamento de arquivos de rede ou de armazenamento local.Coding file I/O with Azure Files over SMB is generally the same as coding I/O with any network file share or local storage device. Consulte este tutorial para obter uma introdução a uma quantidade de recursos do .NET, incluindo de E/S de arquivo.See this tutorial for an introduction to a number of features in .NET, including file I/O.
Microsoft.Azure.Storage.FileMicrosoft.Azure.Storage.File Seu aplicativo:Your application:
  • Não consegue acessar os Arquivos do Azure via protocolo SMB na porta 445 devido a restrições de ISP ou firewallCan't access Azure Files via SMB on port 445 due to firewall or ISP constraints
  • Requer a funcionalidade administrativa, como a capacidade de definir uma cota de compartilhamento de arquivos ou criar uma assinatura de acesso compartilhadoRequires administrative functionality, such as the ability to set a file share's quota or create a shared access signature
Este artigo demonstra o uso de Microsoft.Azure.Storage.File para E/S de arquivo usando a REST (em vez do protocolo SMB) e o gerenciamento do compartilhamento de arquivos.This article demonstrates the usage of Microsoft.Azure.Storage.File for file I/O using REST (instead of SMB) and management of the file share.

Criar o aplicativo do console e obter o assemblyCreate the console application and obtain the assembly

No Visual Studio, crie um novo aplicativo de console do Windows.In Visual Studio, create a new Windows console application. As etapas a seguir mostram como criar um aplicativo de console no Visual Studio 2017. No entanto, as etapas são semelhantes em outras versões do Visual Studio.The following steps show you how to create a console application in Visual Studio 2017, however, the steps are similar in other versions of Visual Studio.

  1. Selecione Arquivo > Novo > ProjetoSelect File > New > Project
  2. Selecione Instalado > Modelos > Visual C# > Área de trabalho clássica do WindowsSelect Installed > Templates > Visual C# > Windows Classic Desktop
  3. Selecione Aplicativo do Console (.NET Framework)Select Console App (.NET Framework)
  4. Insira um nome para seu aplicativo no campo Nome:Enter a name for your application in the Name: field
  5. Selecione OKSelect OK

Todos os exemplos de código neste tutorial podem ser adicionados ao método Main() no arquivoProgram.cs do aplicativo de console.All code examples in this tutorial can be added to the Main() method of your console application's Program.cs file.

Você pode usar a biblioteca de cliente de armazenamento do Azure em qualquer tipo de aplicativo .NET, incluindo um serviço de nuvem do Azure ou aplicativo Web, e aplicativos móveis e de desktop.You can use the Azure Storage client library in any type of .NET application, including an Azure cloud service or web app, and desktop and mobile applications. Neste guia, usamos um aplicativo de console para simplificar.In this guide, we use a console application for simplicity.

Use o NuGet para instalar os pacotes necessáriosUse NuGet to install the required packages

Estes são os pacotes que você precisa referenciar em seu projeto para concluir este tutorial:These are packages you need to reference in your project to complete this tutorial:

Você pode usar NuGet para obter os dois pacotes.You can use NuGet to obtain both packages. Siga estas etapas:Follow these steps:

  1. Clique com o botão direito do mouse no seu projeto no Gerenciador de Soluções e escolha Gerenciar Pacotes NuGet.Right-click your project in Solution Explorer and choose Manage NuGet Packages.
  2. Pesquise online por "Windowsazure.Storage" e clique em Instalar para instalar a Biblioteca de Cliente de Armazenamento e suas dependências.Search online for "WindowsAzure.Storage" and click Install to install the Storage Client Library and its dependencies.
  3. Pesquise online por "WindowsAzure.ConfigurationManager" e clique em Instalar para instalar o Gerenciador de Configuração do Azure.Search online for "WindowsAzure.ConfigurationManager" and click Install to install the Azure Configuration Manager.

Salvar suas credenciais da conta de armazenamento no arquivo app.configSave your storage account credentials to the app.config file

Em seguida, salve suas credenciais no arquivo app.config do projeto.Next, save your credentials in your project's app.config file. Edite o arquivo app.config para que ele se pareça com o exemplo a seguir, substituindo myaccount pelo nome da conta de armazenamento e mykey pela chave da conta de armazenamento.Edit the app.config file so that it appears similar to the following example, replacing myaccount with your storage account name, and mykey with your storage account key.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
    <appSettings>
        <add key="StorageConnectionString" value="DefaultEndpointsProtocol=https;AccountName=myaccount;AccountKey=StorageAccountKeyEndingIn==" />
    </appSettings>
</configuration>

Observação

A versão mais recente do emulador de armazenamento do Azure não dá suporte aos Arquivos do Azure. Sua cadeia de conexão deve ter como destino uma Conta de Armazenamento do Azure na nuvem para funcionar com os Arquivos do Azure.Your connection string must target an Azure Storage Account in the cloud to work with Azure Files.

Adicionar diretivas usingAdd using directives

Abra o arquivo Program.cs no Gerenciador de Soluções e adicione as diretivas using a seguir à parte superior do arquivo.Open the Program.cs file from Solution Explorer, and add the following using directives to the top of the file.

using Microsoft.Azure; // Namespace for Azure Configuration Manager
using Microsoft.Azure.Storage; // Namespace for Storage Client Library
using Microsoft.Azure.Storage.Blob; // Namespace for Azure Blobs
using Microsoft.Azure.Storage.File; // Namespace for Azure Files

A Biblioteca do Gerenciador de Configuração do Microsoft Azure para .NET fornece uma classe para analisar uma cadeia de conexão de um arquivo de configuração.The Microsoft Azure Configuration Manager Library for .NET provides a class for parsing a connection string from a configuration file. A classe CloudConfigurationManager analisa as definições de configuração independentemente do aplicativo cliente estar em execução na área de trabalho, em um dispositivo móvel, uma máquina virtual do Azure ou um serviço de nuvem do Azure.The CloudConfigurationManager class parses configuration settings regardless of whether the client application is running on the desktop, on a mobile device, in an Azure virtual machine, or in an Azure cloud service.

Para fazer referência ao pacote CloudConfigurationManager, adicione a seguinte diretiva using:To reference the CloudConfigurationManager package, add the following using directive:

using Microsoft.Azure; //Namespace for CloudConfigurationManager
using Microsoft.Azure.Storage;

Aqui está um exemplo que mostra como recuperar uma cadeia de conexão de um arquivo de configuração:Here's an example that shows how to retrieve a connection string from a configuration file:

// Parse the connection string and return a reference to the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    CloudConfigurationManager.GetSetting("StorageConnectionString"));

O uso do Gerenciador de Configurações do Azure é opcional.Using the Azure Configuration Manager is optional. Você também pode usar uma API como a classe ConfigurationManagerdo .NET Framework.You can also use an API like the .NET Framework's ConfigurationManager class.

Acessar o compartilhamento de arquivos programaticamenteAccess the file share programmatically

Em seguida, adicione o código a seguir ao método Main() (após o código mostrado acima) para recuperar a cadeia de conexão.Next, add the following code to the Main() method (after the code shown above) to retrieve the connection string. Esse código obtém uma referência para o arquivo que criamos anteriormente e exporta seu conteúdo para a janela do console.This code gets a reference to the file we created earlier and outputs its contents to the console window.

// Create a CloudFileClient object for credentialed access to Azure Files.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

// Get a reference to the file share we created previously.
CloudFileShare share = fileClient.GetShareReference("logs");

// Ensure that the share exists.
if (share.Exists())
{
    // Get a reference to the root directory for the share.
    CloudFileDirectory rootDir = share.GetRootDirectoryReference();

    // Get a reference to the directory we created previously.
    CloudFileDirectory sampleDir = rootDir.GetDirectoryReference("CustomLogs");

    // Ensure that the directory exists.
    if (sampleDir.Exists())
    {
        // Get a reference to the file we created previously.
        CloudFile file = sampleDir.GetFileReference("Log1.txt");

        // Ensure that the file exists.
        if (file.Exists())
        {
            // Write the contents of the file to the console window.
            Console.WriteLine(file.DownloadTextAsync().Result);
        }
    }
}

Execute o aplicativo de console para ver a saída.Run the console application to see the output.

Definir o tamanho máximo de um compartilhamento de arquivosSet the maximum size for a file share

A partir da versão 5.x da Biblioteca de Cliente do Armazenamento do Azure, você pode definir a cota (ou o tamanho máximo) de um compartilhamento de arquivos em gigabytes.Beginning with version 5.x of the Azure Storage Client Library, you can set the quota (or maximum size) for a file share, in gigabytes. Você também pode verificar a quantidade de dados atualmente armazenada no compartilhamento.You can also check to see how much data is currently stored on the share.

Ao definir a cota para um compartilhamento, você pode limitar o tamanho total dos arquivos armazenados no compartilhamento.By setting the quota for a share, you can limit the total size of the files stored on the share. Se o tamanho total dos arquivos no compartilhamento ultrapassar a cota definida no compartilhamento, os clientes não poderão aumentar o tamanho dos arquivos existentes ou criar novos arquivos, a menos que eles estejam vazios.If the total size of files on the share exceeds the quota set on the share, then clients will be unable to increase the size of existing files or create new files, unless those files are empty.

O exemplo a seguir mostra como verificar o uso atual de um compartilhamento e como definir a cota para o compartilhamento.The example below shows how to check the current usage for a share and how to set the quota for the share.

// Parse the connection string for the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    Microsoft.Azure.CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create a CloudFileClient object for credentialed access to Azure Files.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

// Get a reference to the file share we created previously.
CloudFileShare share = fileClient.GetShareReference("logs");

// Ensure that the share exists.
if (share.Exists())
{
    // Check current usage stats for the share.
    // Note that the ShareStats object is part of the protocol layer for the File service.
    Microsoft.Azure.Storage.File.Protocol.ShareStats stats = share.GetStats();
    Console.WriteLine("Current share usage: {0} GB", stats.Usage.ToString());

    // Specify the maximum size of the share, in GB.
    // This line sets the quota to be 10 GB greater than the current usage of the share.
    share.Properties.Quota = 10 + stats.Usage;
    share.SetProperties();

    // Now check the quota for the share. Call FetchAttributes() to populate the share's properties.
    share.FetchAttributes();
    Console.WriteLine("Current share quota: {0} GB", share.Properties.Quota);
}

Gerar uma assinatura de acesso compartilhado para um arquivo ou compartilhamento de arquivosGenerate a shared access signature for a file or file share

A partir da versão 5.x da Biblioteca de Cliente do Armazenamento do Azure, você pode gerar uma SAS (assinatura de acesso compartilhado) para um compartilhamento de arquivos ou para um arquivo individual.Beginning with version 5.x of the Azure Storage Client Library, you can generate a shared access signature (SAS) for a file share or for an individual file. Você também pode criar uma política de acesso compartilhado em um compartilhamento de arquivos para gerenciar assinaturas de acesso compartilhado.You can also create a shared access policy on a file share to manage shared access signatures. Recomendamos a criação de uma política de acesso compartilhado, pois ela fornece um meio de revogar o SAS se ele for comprometido.Creating a shared access policy is recommended, as it provides a means of revoking the SAS if it should be compromised.

O exemplo a seguir cria uma política de acesso compartilhado em um compartilhamento e, em seguida, usa essa política para fornecer as restrições a um SAS em um arquivo no compartilhamento.The following example creates a shared access policy on a share, and then uses that policy to provide the constraints for a SAS on a file in the share.

// Parse the connection string for the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    Microsoft.Azure.CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create a CloudFileClient object for credentialed access to Azure Files.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

// Get a reference to the file share we created previously.
CloudFileShare share = fileClient.GetShareReference("logs");

// Ensure that the share exists.
if (share.Exists())
{
    string policyName = "sampleSharePolicy" + DateTime.UtcNow.Ticks;

    // Create a new shared access policy and define its constraints.
    SharedAccessFilePolicy sharedPolicy = new SharedAccessFilePolicy()
        {
            SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24),
            Permissions = SharedAccessFilePermissions.Read | SharedAccessFilePermissions.Write
        };

    // Get existing permissions for the share.
    FileSharePermissions permissions = share.GetPermissions();

    // Add the shared access policy to the share's policies. Note that each policy must have a unique name.
    permissions.SharedAccessPolicies.Add(policyName, sharedPolicy);
    share.SetPermissions(permissions);

    // Generate a SAS for a file in the share and associate this access policy with it.
    CloudFileDirectory rootDir = share.GetRootDirectoryReference();
    CloudFileDirectory sampleDir = rootDir.GetDirectoryReference("CustomLogs");
    CloudFile file = sampleDir.GetFileReference("Log1.txt");
    string sasToken = file.GetSharedAccessSignature(null, policyName);
    Uri fileSasUri = new Uri(file.StorageUri.PrimaryUri.ToString() + sasToken);

    // Create a new CloudFile object from the SAS, and write some text to the file.
    CloudFile fileSas = new CloudFile(fileSasUri);
    fileSas.UploadText("This write operation is authorized via SAS.");
    Console.WriteLine(fileSas.DownloadText());
}

Para saber mais sobre como criar e usar assinaturas de acesso compartilhado, veja Uso de SAS (Assinaturas de Acesso Compartilhado).For more information about creating and using shared access signatures, see Using Shared Access Signatures (SAS).

Copiar arquivosCopy files

A partir da versão 5.x da Biblioteca de Cliente do Armazenamento do Azure, você pode copiar um arquivo em outro arquivo, um arquivo em um blob ou um blob em um arquivo.Beginning with version 5.x of the Azure Storage Client Library, you can copy a file to another file, a file to a blob, or a blob to a file. Nas próximas seções, demonstramos como executar essas operações de cópia de modo programático.In the next sections, we demonstrate how to perform these copy operations programmatically.

Você também pode usar o AzCopy para copiar um arquivo para outro, ou para copiar um blob em um arquivo ou vice-versa.You can also use AzCopy to copy one file to another or to copy a blob to a file or vice versa. Veja Transferir dados com o Utilitário da Linha de Comando AzCopy.See Transfer data with the AzCopy Command-Line Utility.

Observação

Se você estiver copiando um blob em um arquivo, ou um arquivo em um blob, use uma assinatura de acesso compartilhado (SAS) para autorizar o acesso ao objeto de origem, mesmo se estiver copiando dentro da mesma conta de armazenamento.If you are copying a blob to a file, or a file to a blob, you must use a shared access signature (SAS) to authorize access to the source object, even if you are copying within the same storage account.

Copiar um arquivo para outro arquivo O exemplo a seguir copia um arquivo em outro arquivo no mesmo compartilhamento.Copy a file to another file The following example copies a file to another file in the same share. Como essa operação de cópia realiza a cópia entre arquivos na mesma conta de armazenamento, você pode usar a autenticação de Chave compartilhada para executar a cópia.Because this copy operation copies between files in the same storage account, you can use Shared Key authentication to perform the copy.

// Parse the connection string for the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    Microsoft.Azure.CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create a CloudFileClient object for credentialed access to Azure Files.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

// Get a reference to the file share we created previously.
CloudFileShare share = fileClient.GetShareReference("logs");

// Ensure that the share exists.
if (share.Exists())
{
    // Get a reference to the root directory for the share.
    CloudFileDirectory rootDir = share.GetRootDirectoryReference();

    // Get a reference to the directory we created previously.
    CloudFileDirectory sampleDir = rootDir.GetDirectoryReference("CustomLogs");

    // Ensure that the directory exists.
    if (sampleDir.Exists())
    {
        // Get a reference to the file we created previously.
        CloudFile sourceFile = sampleDir.GetFileReference("Log1.txt");

        // Ensure that the source file exists.
        if (sourceFile.Exists())
        {
            // Get a reference to the destination file.
            CloudFile destFile = sampleDir.GetFileReference("Log1Copy.txt");

            // Start the copy operation.
            destFile.StartCopy(sourceFile);

            // Write the contents of the destination file to the console window.
            Console.WriteLine(destFile.DownloadText());
        }
    }
}

Copiar um arquivo para um blob O exemplo a seguir cria um arquivo e o copia em um blob dentro da mesma conta de armazenamento.Copy a file to a blob The following example creates a file and copies it to a blob within the same storage account. O exemplo cria uma SAS para o arquivo de origem, que o serviço usa para autorizar o acesso ao arquivo de origem durante a operação de cópia.The example creates a SAS for the source file, which the service uses to authorize access to the source file during the copy operation.

// Parse the connection string for the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    Microsoft.Azure.CloudConfigurationManager.GetSetting("StorageConnectionString"));

// Create a CloudFileClient object for credentialed access to Azure Files.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

// Create a new file share, if it does not already exist.
CloudFileShare share = fileClient.GetShareReference("sample-share");
share.CreateIfNotExists();

// Create a new file in the root directory.
CloudFile sourceFile = share.GetRootDirectoryReference().GetFileReference("sample-file.txt");
sourceFile.UploadText("A sample file in the root directory.");

// Get a reference to the blob to which the file will be copied.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("sample-container");
container.CreateIfNotExists();
CloudBlockBlob destBlob = container.GetBlockBlobReference("sample-blob.txt");

// Create a SAS for the file that's valid for 24 hours.
// Note that when you are copying a file to a blob, or a blob to a file, you must use a SAS
// to authorize access to the source object, even if you are copying within the same
// storage account.
string fileSas = sourceFile.GetSharedAccessSignature(new SharedAccessFilePolicy()
{
    // Only read permissions are required for the source file.
    Permissions = SharedAccessFilePermissions.Read,
    SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24)
});

// Construct the URI to the source file, including the SAS token.
Uri fileSasUri = new Uri(sourceFile.StorageUri.PrimaryUri.ToString() + fileSas);

// Copy the file to the blob.
destBlob.StartCopy(fileSasUri);

// Write the contents of the file to the console window.
Console.WriteLine("Source file contents: {0}", sourceFile.DownloadText());
Console.WriteLine("Destination blob contents: {0}", destBlob.DownloadText());

Você pode copiar um blob em um arquivo da mesma maneira.You can copy a blob to a file in the same way. Se o objeto de origem for um blob, crie uma SAS para autorizar o acesso ao blob durante a operação de cópia.If the source object is a blob, then create a SAS to authorize access to that blob during the copy operation.

Instantâneos de compartilhamentoShare snapshots

A partir da versão 8.5 da Biblioteca de Cliente do Armazenamento do Microsoft Azure, você pode criar um instantâneo de compartilhamento.Beginning with version 8.5 of the Azure Storage Client Library, you can create a share snapshot. Também pode listar ou procurar os instantâneos de compartilhamento e excluir os instantâneos de compartilhamento.You can also list or browse share snapshots and delete share snapshots. Instantâneos de compartilhamentos são somente leitura, portanto, nenhuma operação de gravação é permitida em instantâneos de compartilhamento.Share snapshots are read-only so no write operations are allowed on share snapshots.

Criar instantâneos de compartilhamentoCreate share snapshots

O exemplo a seguir cria um instantâneo de compartilhamento de arquivos.The following example creates a file share snapshot.

storageAccount = CloudStorageAccount.Parse(ConnectionString); 
fClient = storageAccount.CreateCloudFileClient(); 
string baseShareName = "myazurefileshare"; 
CloudFileShare myShare = fClient.GetShareReference(baseShareName); 
var snapshotShare = myShare.Snapshot();

Listar instantâneos de compartilhamentoList share snapshots

O exemplo a seguir lista os instantâneos de compartilhamento em um compartilhamento.The following example lists the share snapshots on a share.

var shares = fClient.ListShares(baseShareName, ShareListingDetails.All);

Procurar arquivos e diretórios nos instantâneos de compartilhamentoBrowse files and directories within share snapshots

O exemplo a seguir procura arquivos e diretórios nos instantâneos de compartilhamento.The following example browses files and directory within share snapshots.

CloudFileShare mySnapshot = fClient.GetShareReference(baseShareName, snapshotTime); 
var rootDirectory = mySnapshot.GetRootDirectoryReference(); 
var items = rootDirectory.ListFilesAndDirectories();

Listar compartilhamentos e instantâneos de compartilhamento e restaurar arquivos ou compartilhamentos de arquivos dos instantâneos de compartilhamentoList shares and share snapshots and restore file shares or files from share snapshots

Tirar um instantâneo de um compartilhamento de arquivos permite a recuperação de arquivos individuais ou de todo o compartilhamento de arquivo no futuro.Taking a snapshot of a file share enables you to recover individual files or the entire the file share in the future.

Você pode restaurar um arquivo de um instantâneo de compartilhamento de arquivo consultando os instantâneos de compartilhamento de um compartilhamento de arquivos.You can restore a file from a file share snapshot by querying the share snapshots of a file share. Em seguida, pode recuperar um arquivo que pertence a um determinado instantâneo de compartilhamento e usar essa versão para ler e comparar diretamente ou para restaurar.You can then retrieve a file that belongs to a particular share snapshot and use that version to either directly read and compare or to restore.

CloudFileShare liveShare = fClient.GetShareReference(baseShareName);
var rootDirOfliveShare = liveShare.GetRootDirectoryReference();

       var dirInliveShare = rootDirOfliveShare.GetDirectoryReference(dirName);
var fileInliveShare = dirInliveShare.GetFileReference(fileName);

           
CloudFileShare snapshot = fClient.GetShareReference(baseShareName, snapshotTime);
var rootDirOfSnapshot = snapshot.GetRootDirectoryReference();

       var dirInSnapshot = rootDirOfSnapshot.GetDirectoryReference(dirName);
var fileInSnapshot = dir1InSnapshot.GetFileReference(fileName);

string sasContainerToken = string.Empty;
       SharedAccessFilePolicy sasConstraints = new SharedAccessFilePolicy();
       sasConstraints.SharedAccessExpiryTime = DateTime.UtcNow.AddHours(24);
       sasConstraints.Permissions = SharedAccessFilePermissions.Read;
       //Generate the shared access signature on the container, setting the constraints directly on the signature.
sasContainerToken = fileInSnapshot.GetSharedAccessSignature(sasConstraints);

string sourceUri = (fileInSnapshot.Uri.ToString() + sasContainerToken + "&" + fileInSnapshot.SnapshotTime.ToString()); ;
fileInliveShare.StartCopyAsync(new Uri(sourceUri));

Excluir instantâneos de compartilhamentoDelete share snapshots

O exemplo a seguir exclui um instantâneo de compartilhamento de arquivos.The following example deletes a file share snapshot.

CloudFileShare mySnapshot = fClient.GetShareReference(baseShareName, snapshotTime); mySnapshot.Delete(null, null, null);

Solução de problemas dos Arquivos do Azure usando métricasTroubleshooting Azure Files using metrics

A Análise de Armazenamento do Azure agora dá suporte a métricas para os Arquivos do Azure.Azure Storage Analytics now supports metrics for Azure Files. Com dados de métricas, você pode rastrear solicitações e diagnosticar problemas.With metrics data, you can trace requests and diagnose issues.

Você pode habilitar as métricas para arquivos do Azure do portal do Azure.You can enable metrics for Azure Files from the Azure portal. Você também pode habilitar métricas programaticamente ao chamar a operação Definir Propriedades de Serviço do Arquivo pela API REST ou uma operação semelhante na Biblioteca do Cliente de Armazenamento.You can also enable metrics programmatically by calling the Set File Service Properties operation via the REST API, or one of its analogs in the Storage Client Library.

O exemplo de código a seguir mostra como usar a Biblioteca de Cliente de Armazenamento para .NET para habilitar as métricas para os Arquivos do Azure.The following code example shows how to use the Storage Client Library for .NET to enable metrics for Azure Files.

Primeiro, adicione as seguintes diretivas using ao arquivo Program.cs além daquelas adicionadas acima:First, add the following using directives to your Program.cs file, in addition to those you added above:

using Microsoft.Azure.Storage.File.Protocol;
using Microsoft.Azure.Storage.Shared.Protocol;

Observe que, enquanto os Blobs do Azure, a Tabela do Azure e as Filas do Azure usam o tipo ServiceProperties compartilhado no namespace Microsoft.Azure.Storage.Shared.Protocol, os Arquivos do Azure usa seu próprio tipo, o FileServiceProperties, no namespace Microsoft.Azure.Storage.File.Protocol.Note that while Azure Blobs, Azure Table, and Azure Queues use the shared ServiceProperties type in the Microsoft.Azure.Storage.Shared.Protocol namespace, Azure Files uses its own type, the FileServiceProperties type in the Microsoft.Azure.Storage.File.Protocol namespace. Os namespaces devem ser referenciados no seu código, no entanto, para que o código a seguir seja compilado.Both namespaces must be referenced from your code, however, for the following code to compile.

// Parse your storage connection string from your application's configuration file.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
        Microsoft.Azure.CloudConfigurationManager.GetSetting("StorageConnectionString"));
// Create the File service client.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

// Set metrics properties for File service.
// Note that the File service currently uses its own service properties type,
// available in the Microsoft.Azure.Storage.File.Protocol namespace.
fileClient.SetServiceProperties(new FileServiceProperties()
{
    // Set hour metrics
    HourMetrics = new MetricsProperties()
    {
        MetricsLevel = MetricsLevel.ServiceAndApi,
        RetentionDays = 14,
        Version = "1.0"
    },
    // Set minute metrics
    MinuteMetrics = new MetricsProperties()
    {
        MetricsLevel = MetricsLevel.ServiceAndApi,
        RetentionDays = 7,
        Version = "1.0"
    }
});

// Read the metrics properties we just set.
FileServiceProperties serviceProperties = fileClient.GetServiceProperties();
Console.WriteLine("Hour metrics:");
Console.WriteLine(serviceProperties.HourMetrics.MetricsLevel);
Console.WriteLine(serviceProperties.HourMetrics.RetentionDays);
Console.WriteLine(serviceProperties.HourMetrics.Version);
Console.WriteLine();
Console.WriteLine("Minute metrics:");
Console.WriteLine(serviceProperties.MinuteMetrics.MetricsLevel);
Console.WriteLine(serviceProperties.MinuteMetrics.RetentionDays);
Console.WriteLine(serviceProperties.MinuteMetrics.Version);

Além disso, você pode consultar o artigo de Solução de problemas de arquivos do Azure para obter diretrizes completas de solução de problemas.Also, you can refer to Azure Files Troubleshooting Article for end-to-end troubleshooting guidance.

Próximas etapasNext steps

Veja estes links para obter mais informações sobre o Arquivos do Azure.See these links for more information about Azure Files.

Artigos e vídeos conceituaisConceptual articles and videos

Suporte de ferramentas para o armazenamento de arquivosTooling support for File storage

ReferênciaReference

Postagens no blogBlog posts