Programar para os Ficheiros do Azure com .NETDevelop for Azure Files with .NET

Este tutorial demonstra noções básicas de utilização do .NET para programar aplicações que utilizam o serviço Ficheiros do Azure para armazenar dados de ficheiros.This tutorial demonstrates the basics of using .NET to develop applications that use Azure Files to store file data. Este tutorial cria uma aplicação de consola simples para executar ações básicas com o .NET e o serviço Ficheiros do Azure:This tutorial creates a simple console application to perform basic actions with .NET and Azure Files:

  • Obter os conteúdos de um ficheiroGet the contents of a file
  • Definir a quota (de tamanho máximo) para a partilha de ficheiros.Set the quota (maximum size) for the file share.
  • Criar uma assinatura de acesso partilhado (chave SAS) para um ficheiro que utiliza uma política de acesso partilhado definida na partilha.Create a shared access signature (SAS key) for a file that uses a shared access policy defined on the share.
  • Copiar um ficheiro para outro ficheiro na mesma conta de armazenamento.Copy a file to another file in the same storage account.
  • Copiar um ficheiro para um blob na mesma conta de armazenamento.Copy a file to a blob in the same storage account.
  • Utilizar as Métricas do Storage do Azure para a resolução de problemasUse Azure Storage Metrics for troubleshooting

Para saber mais sobre o serviço Ficheiros do Azure, veja Introdução ao serviço Ficheiros do Azure.To learn more about Azure Files, see Introduction to Azure Files.

Dica

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

Para obter exemplos de código de Armazenamento do Azure ponto a ponto fáceis de utilizar que pode transferir e executar, veja a 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.

Noções sobre as APIs de .NETUnderstanding the .NET APIs

Os ficheiros do Azure fornece duas abordagens amplas para aplicações de cliente: Server Message Block (SMB) e REST.Azure Files provides two broad approaches to client applications: Server Message Block (SMB) and REST. No âmbito do .NET, estas abordagens são resumidas pelas APIs System.IO e WindowsAzure.Storage.Within .NET, these approaches are abstracted by the System.IO and WindowsAzure.Storage APIs.

APIAPI Quando utilizarWhen to use NotasNotes
System.IOSystem.IO A sua aplicação:Your application:
  • Precisa de ler/escrever ficheiros através de SMBNeeds to read/write files via SMB
  • Está em execução num dispositivo que tem acesso à sua conta do serviço Ficheiros do Azure através da porta 445Is running on a device that has access over port 445 to your Azure Files account
  • Não precisa de gerir qualquer definição administrativa da partilha de ficheirosDoesn't need to manage any of the administrative settings of the file share
Codificar a E/S de ficheiros com o serviço Ficheiros do Azure via SMB é, de um modo geral, igual a codificar a E/S com qualquer partilha de ficheiros de rede ou dispositivo 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. Veja este tutorial para obter uma introdução às inúmeras funcionalidades do .NET, incluindo a E/S de ficheiros.See this tutorial for an introduction to a number of features in .NET, including file I/O.
Microsoft.Azure.Storage.FileMicrosoft.Azure.Storage.File A sua aplicação:Your application:
  • Não consegue aceder ao serviço Ficheiros do Azure através de SMB na porta 445 devido a restrições de ISP ou a uma firewallCan't access Azure Files via SMB on port 445 due to firewall or ISP constraints
  • Precisa de funcionalidade administrativa, como a capacidade de definir a quota de uma partilha de ficheiros ou criar uma assinatura de acesso partilhadoRequires administrative functionality, such as the ability to set a file share's quota or create a shared access signature
Este artigo demonstra a utilização de Microsoft.Azure.Storage.File para a E/S de ficheiros através de REST (em vez de SMB) e a gestão da partilha de ficheiros.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 a aplicação de consola e obter a assemblagemCreate the console application and obtain the assembly

No Visual Studio, crie uma nova aplicação de consola do Windows.In Visual Studio, create a new Windows console application. Os passos seguintes mostram como criar uma aplicação de consola no Visual Studio 2017, no entanto, os passos 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 Ficheiro > Novo > ProjetoSelect File > New > Project
  2. Selecione Instalado > Modelos > Visual C# > Ambiente de Trabalho Clássico do WindowsSelect Installed > Templates > Visual C# > Windows Classic Desktop
  3. Selecione Aplicação da Consola (.NET Framework)Select Console App (.NET Framework)
  4. Introduza um nome para a sua aplicação no campo Nome:Enter a name for your application in the Name: field
  5. Selecione OKSelect OK

Todos os exemplos de código deste tutorial podem ser adicionados ao método Main() do ficheiro Program.cs da aplicação da consola.All code examples in this tutorial can be added to the Main() method of your console application's Program.cs file.

Pode usar a biblioteca de cliente de armazenamento do Azure em qualquer tipo de aplicações de .NET, incluindo uma aplicação de web ou serviço de cloud do Azure e aplicações de dispositivos móveis e computadores.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, utilizamos uma aplicação de consola pela simplicidade.In this guide, we use a console application for simplicity.

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

Há dois pacotes que tem de fazer referência no seu projeto para concluir este tutorial:There are two packages you need to reference in your project to complete this tutorial:

Pode utilizar o NuGet para obter ambos os pacotes.You can use NuGet to obtain both packages. Siga estes passos.Follow these steps:

  1. Clique com o botão direito do rato no projeto no Explorador de Soluções e escolha Gerir Pacotes NuGet.Right-click your project in Solution Explorer and choose Manage NuGet Packages.
  2. Procure online “WindowsAzure.Storage” e clique em Instalar para instalar a Biblioteca de Clientes de Armazenamento e as respetivas dependências.Search online for "WindowsAzure.Storage" and click Install to install the Storage Client Library and its dependencies.
  3. Procure online “WindowsAzure.ConfigurationManager” e clique em Instalar para instalar o Gestor de Configuração do Azure.Search online for "WindowsAzure.ConfigurationManager" and click Install to install the Azure Configuration Manager.

Guardar as suas credenciais da conta de armazenamento no ficheiro app.configSave your storage account credentials to the app.config file

Em seguida, guarde as suas credenciais no ficheiro app.config do seu projeto.Next, save your credentials in your project's app.config file. Edite o ficheiro app.config para que seja apresentado de forma semelhante ao seguinte exemplo, substituindo myaccount pelo seu nome da sua conta de armazenamento e mykey pela chave da mesma.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>

Nota

A versão mais recente do emulador de armazenamento do Azure não suporta os Ficheiros do Azure. A sua cadeia de ligação tem de visar uma Conta de Armazenamento do Azure na cloud, para funcionar com os Ficheiros do Azure.Your connection string must target an Azure Storage Account in the cloud to work with Azure Files.

Adicionar com diretivasAdd using directives

Abra o ficheiro Program.cs a partir do Explorador de Soluções e adicione as seguintes diretivas de utilização à parte superior do ficheiro.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 Gestor de Configuração do Microsoft Azure para .NET fornece uma classe para analisar uma cadeia de ligação a partir de um ficheiro 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 de a aplicação cliente estar ou não em execução no ambiente de trabalho, num dispositivo móvel, numa máquina virtual do Azure ou num serviço cloud 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 mencionar o 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;

Eis um exemplo que mostra como obter uma cadeia de ligação a partir de um ficheiro 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"));

A utilização do Gestor de Configuração do Azure é opcional.Using the Azure Configuration Manager is optional. De igual modo, pode utilizar uma API, tal como a classe ConfigurationManager do .NET Framework.You can also use an API like the .NET Framework's ConfigurationManager class.

Aceder à partilha de ficheiros programaticamenteAccess the file share programmatically

Em seguida, adicione o seguinte código ao método Main() (depois do código mostrado acima) para obter a cadeia de ligação.Next, add the following code to the Main() method (after the code shown above) to retrieve the connection string. Este código obtém uma referência para o ficheiro que criámos anteriormente e produz o respetivo conteúdo para a janela da consola.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 a aplicação de consola para ver o resultado.Run the console application to see the output.

Definir o tamanho máximo para uma partilha de ficheirosSet the maximum size for a file share

A partir da versão 5.x da Biblioteca de Clientes do Armazenamento do Azure, pode definir a quota (ou o tamanho máximo) para uma partilha de ficheiros, 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. De igual modo, pode verificar a quantidade de dados atualmente armazenada na partilha.You can also check to see how much data is currently stored on the share.

Ao definir a quota para uma partilha, pode limitar o tamanho total dos ficheiros armazenados na partilha.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 ficheiros na partilha exceder a quota definida na partilha, os clientes não poderão aumentar o tamanho dos ficheiros existentes ou criar novos ficheiros, a menos que esses ficheiros 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 abaixo mostra como verificar a utilização atual para uma partilha e como configurar a quota para a partilha.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 partilhado para um ficheiro ou partilha de ficheirosGenerate a shared access signature for a file or file share

A partir da versão 5. x da Biblioteca de Clientes do Storage do Azure, pode gerar uma assinatura de acesso partilhado (SAS) para uma partilha de ficheiros ou para um ficheiro 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. De igual modo, pode criar uma política de acesso partilhado numa partilha de ficheiros para gerir assinaturas de acesso partilhado.You can also create a shared access policy on a file share to manage shared access signatures. Recomenda-se a criação de uma política de acesso partilhado, uma vez que fornece um meio de revogação do SAS se este estiver comprometido.Creating a shared access policy is recommended, as it provides a means of revoking the SAS if it should be compromised.

O exemplo seguinte cria uma política de acesso partilhado numa partilha e, em seguida, utiliza essa política para fornecer as restrições para um SAS num ficheiro dentro da partilha.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 obter mais informações sobre como criar e utilizar assinaturas de acesso partilhado, consulte usando partilhado assinaturas de acesso (SAS).For more information about creating and using shared access signatures, see Using Shared Access Signatures (SAS).

Copiar ficheirosCopy files

A partir da versão 5. x da Biblioteca de Clientes do Storage do Azure, pode copiar um ficheiro para outro ficheiro, um ficheiro para um blob ou um blob para um ficheiro.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 secções seguintes, iremos demonstrar como realizar estas operações de cópia programaticamente.In the next sections, we demonstrate how to perform these copy operations programmatically.

Pode também utilizar o AzCopy para copiar um ficheiro para outro, copiar um blob para um ficheiro 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 de Linha de Comandos AzCopy.See Transfer data with the AzCopy Command-Line Utility.

Nota

Se estiver a copiar um blob para um ficheiro ou um ficheiro para um blob, tem de utilizar uma assinatura de acesso partilhado (SAS) para autorizar o acesso ao objeto de origem, mesmo se estiver a copiar 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 ficheiro para outro ficheiro: o exemplo seguinte copia um ficheiro para outro ficheiro na mesma partilha.Copy a file to another file The following example copies a file to another file in the same share. Uma vez que esta operação de cópia copia entre ficheiros na mesma conta de armazenamento, pode utilizar a autenticação de Chave Partilhada para efetuar 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 ficheiro para um blob: o exemplo seguinte cria um ficheiro e copia-o para um blob na 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 um SAS para o ficheiro de origem, que o serviço utiliza para autorizar o acesso ao ficheiro 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());

Pode copiar um blob para um ficheiro da mesma forma.You can copy a blob to a file in the same way. Se o objeto de origem for um blob, crie um SAS para autorizar o acesso a esse 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 partilhaShare snapshots

A partir da versão 8.5 da biblioteca de cliente de armazenamento do Azure, pode criar um instantâneo de partilha.Beginning with version 8.5 of the Azure Storage Client Library, you can create a share snapshot. Também pode listar, procurar ou eliminar instantâneos de partilha.You can also list or browse share snapshots and delete share snapshots. Os instantâneos de partilha são só de leitura, pelo que não são permitidas operações de escrita nos mesmos.Share snapshots are read-only so no write operations are allowed on share snapshots.

Criar instantâneos de partilhaCreate share snapshots

O exemplo seguinte cria um instantâneo de partilha de ficheiros.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 partilhaList share snapshots

O exemplo seguinte lista os instantâneos de partilha numa partilha.The following example lists the share snapshots on a share.

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

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

O exemplo seguinte procura ficheiros e diretórios nos instantâneos de partilha.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 partilhas e instantâneos de partilha e restaurar partilhas de ficheiros ou ficheiros de instantâneos de partilhaList shares and share snapshots and restore file shares or files from share snapshots

Um instantâneo de uma partilha de ficheiros permite-lhe recuperar ficheiros individuais ou toda a partilha de ficheiros no futuro.Taking a snapshot of a file share enables you to recover individual files or the entire the file share in the future.

Pode restaurar um ficheiro de um instantâneo de partilha de ficheiros através da consulta dos instantâneos de partilha de uma partilha de ficheiros.You can restore a file from a file share snapshot by querying the share snapshots of a file share. Em seguida, pode obter um ficheiro que pertence a um instantâneo de partilha específico e utilizar essa versão para ler e comparar diretamente ou 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));

Eliminar instantâneos de partilhaDelete share snapshots

O exemplo seguinte elimina um instantâneo de partilha de ficheiros.The following example deletes a file share snapshot.

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

Utilizar métricas para resolver problemas de Ficheiros do AzureTroubleshooting Azure Files using metrics

Agora, a Análise de Armazenamento do Azure suporta métricas para os Ficheiros do Azure.Azure Storage Analytics now supports metrics for Azure Files. Com os dados de métricas, pode rastrear pedidos e diagnosticar problemas.With metrics data, you can trace requests and diagnose issues.

Pode ativar métricas para ficheiros do Azure a partir da portal do Azure.You can enable metrics for Azure Files from the Azure portal. Pode também ativar métricas programaticamente ao chamar a operação Definir Propriedades do Serviço do Ficheiro através da API REST ou de um dos respetivos análogos na Biblioteca de Clientes do 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 seguinte mostra como utilizar a Biblioteca de Clientes de Armazenamento para .NET, para ativar as métricas para os Ficheiros 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 ficheiro Program.cs, para além das que adicionou 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;

Tenha em atenção que, ao passo que os Blobs do Azure, a Tabela do Azure e as Filas do Azure utilizam o tipo ServiceProperties partilhado no espaço de nomes Microsoft.Azure.Storage.Shared.Protocol, os Ficheiros do Azure utilizam o seu próprio tipo, FileServiceProperties, no espaço de nomes 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. Contudo, ambos os espaços de nomes têm de ser referenciados a partir do seu código para o seguinte código compilar.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, pode consultar o Azure Files Troubleshooting Article (Artigo de Resolução de Problemas de Ficheiros do Azure) para obter documentação de orientação de resolução de problemas de ponto a ponto.Also, you can refer to Azure Files Troubleshooting Article for end-to-end troubleshooting guidance.

Passos SeguintesNext steps

Veja estas ligações para obter mais informações sobre os Ficheiros do Azure.See these links for more information about Azure Files.

Artigos e vídeos concetuaisConceptual articles and videos

Suporte de ferramentas para o Armazenamento de ficheirosTooling support for File storage

ReferênciaReference

Publicações no blogueBlog posts