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 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 do basic actions with .NET and Azure Files:

  • Obter o conteúdo de um arquivo.Get the contents of a file.
  • Defina o tamanho máximo ou a cota para o compartilhamento de arquivos.Set the maximum size or quota 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.
  • Use as métricas de armazenamento do Azure para solução de problemas.Use Azure Storage Metrics for troubleshooting.

Para saber mais sobre os arquivos do Azure, confira o que são os arquivos do Azure?To learn more about Azure Files, see What is 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 arquivos do Azure fornecem duas abordagens amplas para aplicativos cliente: Protocolo SMB e REST.Azure Files provides two broad approaches to client applications: Server Message Block (SMB) and REST. No .NET, as APIs System.IO e WindowsAzure.Storage abstraim essas abordagens.Within .NET, the System.IO and WindowsAzure.Storage APIs abstract these approaches.

APIAPI Quando utilizarWhen to use NotasNotes
System.IOSystem.IO A sua aplicação:Your application:
  • Precisa ler/gravar arquivos usando SMBNeeds to read/write files by using 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
A e/s de arquivo implementada com os arquivos do Azure via SMB geralmente é a mesma de e/s com qualquer compartilhamento de arquivos de rede ou dispositivo de armazenamento local.File I/O implemented with Azure Files over SMB is generally the same as I/O with any network file share or local storage device. Para obter uma introdução a vários recursos no .NET, incluindo e/s de arquivo, consulte o tutorial aplicativo de console .For an introduction to a number of features in .NET, including file I/O, see the Console Application tutorial.
Microsoft.Azure.Storage.FileMicrosoft.Azure.Storage.File A sua aplicação:Your application:
  • Não é possível acessar os arquivos do Azure usando SMB na porta 445 devido a restrições de firewall ou ISPCan't access Azure Files by using SMB on port 445 because of 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 o uso de Microsoft.Azure.Storage.File para e/s de arquivo usando REST em vez de SMB e gerenciamento do compartilhamento de arquivos.This article demonstrates the use 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. As etapas a seguir mostram como criar um aplicativo de console no Visual Studio 2019.The following steps show you how to create a console application in Visual Studio 2019. Os passos são semelhantes aos de outras versões do Visual Studio.The steps are similar in other versions of Visual Studio.

  1. Inicie o Visual Studio e selecione criar um novo projeto.Start Visual Studio and select Create a new project.
  2. Em criar um novo projeto, escolha aplicativo de console (.NET Framework) para C#e, em seguida, selecione Avançar.In Create a new project, choose Console App (.NET Framework) for C#, and then select Next.
  3. Em configurar seu novo projeto, insira um nome para o aplicativo e selecione criar.In Configure your new project, enter a name for the app, and select Create.

Você pode adicionar todos os exemplos de código neste tutorial ao método Main() do arquivo Program.cs do seu aplicativo de console.You can add all the code examples in this tutorial 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.You can use the Azure Storage client library in any type of .NET application. Esses tipos incluem um serviço de nuvem do Azure ou aplicativo Web, e aplicativos móveis e de desktop.These types include 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

Consulte estes pacotes em seu projeto para concluir este tutorial:Refer to these packages 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. Em Gerenciador de soluções, clique com o botão direito do mouse em seu projeto e escolha gerenciar pacotes NuGet.In Solution Explorer, right-click your project and choose Manage NuGet Packages.

  2. No Gerenciador de pacotes NuGet, selecione procurar.In NuGet Package Manager, select Browse. Em seguida, pesquise e escolha Microsoft. Azure. Storage. blobe, em seguida, selecione instalar.Then search for and choose Microsoft.Azure.Storage.Blob, and then select Install.

    Esta etapa instala o pacote e suas dependências.This step installs the package and its dependencies.

  3. Pesquise e instale esses pacotes:Search for and install these packages:

    • Microsoft. Azure. Storage. CommonMicrosoft.Azure.Storage.Common
    • Microsoft.Azure.Storage.FileMicrosoft.Azure.Storage.File
    • Microsoft. Azure. ConfigurationManagerMicrosoft.Azure.ConfigurationManager

Salvar as 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 seu projeto.Next, save your credentials in your project's App.config file. No Gerenciador de soluções, clique duas vezes em App.config e edite o arquivo para que ele seja semelhante ao exemplo a seguir.In Solution Explorer, double-click App.config and edit the file so that it is similar to the following example. Substitua myaccount pelo nome da sua conta de armazenamento e mykey pela sua chave de conta de armazenamento.Replace 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

No Gerenciador de soluções, abra o arquivo Program.cs e adicione o seguinte usando as diretivas na parte superior do arquivo.In Solution Explorer, open the Program.cs file, 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.The CloudConfigurationManager class parses configuration settings. Ele analisa as configurações para aplicativos cliente que são executados na área de trabalho, em um dispositivo móvel, em uma máquina virtual do Azure ou em um serviço de nuvem do Azure.It parses settings for client applications that run 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 as seguintes diretivas using:To reference the CloudConfigurationManager package, add the following using directives:

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. Você também pode usar uma API como a classe ConfigurationManagerdo .NET Framework.You can also use an API such as the .NET Framework's ConfigurationManager Class.

Aceder à partilha de ficheiros programaticamenteAccess the file share programmatically

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

// 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 cliente do armazenamento do Azure, você pode definir a cota (tamanho máximo) para um compartilhamento de arquivos.Beginning with version 5.x of the Azure Storage Client Library, you can set the quota (maximum size) for a file share. 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.

Definir a cota de um compartilhamento limita o tamanho total dos arquivos armazenados no compartilhamento.Setting the quota for a share limits the total size of the files stored on the share. Se o tamanho total dos arquivos no compartilhamento exceder a cota definida no compartilhamento, os clientes não poderão aumentar o tamanho dos arquivos existentes.If the total size of files on the share exceeds the quota set on the share, clients can't increase the size of existing files. Os clientes não podem criar novos arquivos, a menos que esses arquivos estejam vazios.Clients can't 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. É recomendável criar uma política de acesso compartilhado, pois ela permite revogar a SAS se ela for comprometida.We recommend creating a shared access policy because it lets you revoke the SAS if it becomes compromised.

O exemplo a seguir cria uma política de acesso compartilhado em um compartilhamento.The following example creates a shared access policy on a share. O exemplo usa essa política para fornecer as restrições para uma SAS em um arquivo no compartilhamento.The example 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 usar assinaturas de acesso compartilhado, consulte como funciona uma assinatura de acesso compartilhado.For more information about creating and using shared access signatures, see How a shared access signature works.

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 próximas seções, demonstraremos como fazer essas operações de cópia programaticamente.In the next sections, we demonstrate how to do these copy operations programmatically.

Você também pode usar AzCopy para copiar um arquivo para outro ou para copiar um blob para um arquivo ou o contrário.You can also use AzCopy to copy one file to another or to copy a blob to a file or the other way around. Consulte Introdução ao AzCopy.See Get started with AzCopy.

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 ficheiroCopy a file to another file

O exemplo seguinte copia um ficheiro para outro ficheiro na mesma partilha.The following example copies a file to another file in the same share. Como essa operação de cópia copia entre arquivos na mesma conta de armazenamento, você pode usar a autenticação de chave compartilhada para fazer a cópia.Because this copy operation copies between files in the same storage account, you can use Shared Key authentication to do 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 blobCopy a file to a blob

O exemplo seguinte cria um ficheiro e copia-o para um blob na mesma conta de armazenamento.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 compartilhamentoShare snapshots

A partir da versão 8,5 da biblioteca de cliente do armazenamento do 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, 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 compartilhamentoCreate 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 arquivos e diretórios em instantâneos de compartilhamentoBrowse 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 compartilhamentos e compartilhar instantâneos e restaurar compartilhamentos de arquivos ou arquivos de instantâneos de compartilhamentoList 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, você pode recuperar um arquivo que pertence a um instantâneo de compartilhamento específico.You can then retrieve a file that belongs to a particular share snapshot. Use essa versão para ler e comparar diretamente ou para restaurar o.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 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);

Solucionar problemas de arquivos do Azure usando métricasTroubleshoot Azure Files by 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.

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 as métricas programaticamente chamando a operação definir propriedades do serviço de arquivo com a API REST ou uma de suas analogias na biblioteca do cliente de armazenamento.You can also enable metrics programmatically by calling the Set File Service Properties operation with 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 arquivo Program.cs, juntamente com aquelas que você adicionou acima:First, add the following using directives to your Program.cs file, along with the ones you added above:

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

Embora os BLOBs do Azure, as tabelas do Azure e as filas do Azure usem o tipo ServiceProperties compartilhado no namespace Microsoft.Azure.Storage.Shared.Protocol, os arquivos do Azure usam seu próprio tipo, o tipo FileServiceProperties no namespace Microsoft.Azure.Storage.File.Protocol.Although Azure Blobs, Azure Tables, 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. Você deve referenciar ambos os namespaces do seu código, no entanto, para que o código a seguir seja compilado.You must reference both namespaces 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);

Se você encontrar algum problema, poderá consultar solucionar problemas de arquivos do Azure no Windows.If you encounter any problems, you can refer to Troubleshoot Azure Files problems in Windows.

Passos seguintesNext steps

Para obter mais informações sobre os arquivos do Azure, consulte os seguintes recursos:For more information about Azure Files, see the following resources:

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