2017-07-03 11 views
1

現在、AzureでホストされるマルチテナントWeb Appを構築しています。Azureファイルサービスを使用して各クライアントデータを格納します。各クライアントは分離を提供します。Azureファイル/共有またはサービスのサイズを取得または計算する方法

私の質問です - どのように特定のファイル共有内のすべてのファイルのサイズを検出できますか? (請求のため)。

私はBlobストレージのサイズを計算するためにPowerShellスクリプトなどがありますが、File Storageは何もありません。これが可能なのか、できればC#アプリケーションからどうやったらできるのか誰にも分かりますか?

+0

は、あなたがこの問題を解決した、あなたがさらに支援が必要なのでしょうか? –

答えて

0

私はBlobストレージのサイズを計算するためにPowerShellスクリプトなどがありますが、ファイルストレージはありません。これが可能なのか、できればC#アプリケーションからどうやったらできるのか誰にも分かりますか?

あなたはMicrosoft Azure Configuration Manager Library for .NETを活用して、次のように特定のファイル共有のためのラフな使用状況を取得できます。詳細については、あなたがDevelop with File storageを参照してください可能性があり

CloudFileShare share = fileClient.GetShareReference("{your-share-name}"); 
ShareStats stats = share.GetStats(); 
Console.WriteLine("Current file share usage: {0} GB, maximum size: {1} GB", stats.Usage.ToString(), share.Properties.Quota); 

結果:

enter image description here

をまた、正確な使用状況を取得するために:

Current file share usage: 1 GB, maximum size: 5120 GB 

あなたは次のようにあなたのファイル共有の使用法とクォータをチェックするMicrosoft Azure Storage Explorerを活用でき私はあなたがファイル共有の下でファイルとディレクトリを反復し、ファイルのバイトサイズを累積する必要があると仮定しました。私はあなたがそれを参照してください可能性があり、この目的を達成するためのコードスニペットを書いた:

static void FileShareByteCount(CloudFileDirectory dir,ref long bytesCount) 
{ 
    FileContinuationToken continuationToken = null; 
    FileResultSegment resultSegment = null; 
    do 
    { 
     resultSegment = dir.ListFilesAndDirectoriesSegmented(100, continuationToken, null, null); 
     if (resultSegment.Results.Count() > 0) 
     { 
      foreach (var item in resultSegment.Results) 
      { 
       if (item.GetType() == typeof(CloudFileDirectory)) 
       { 
        var CloudFileDirectory = item as CloudFileDirectory; 
        Console.WriteLine($" List sub CloudFileDirectory with name:[{CloudFileDirectory.Name}]"); 
        FileShareByteCount(CloudFileDirectory,ref bytesCount); 
       } 
       else if (item.GetType() == typeof(CloudFile)) 
       { 
        var CloudFile = item as CloudFile; 
        Console.WriteLine($"file name:[{CloudFile.Name}],size:{CloudFile.Properties.Length}B"); 
        bytesCount += CloudFile.Properties.Length; 
       } 
      } 
     } 
    } while (continuationToken != null); 
} 

用途:

CloudFileShare share = fileClient.GetShareReference("logs"); 
CloudFileDirectory rootDir = share.GetRootDirectoryReference(); 
long bytesCount = 0; 
FileShareByteCount(rootDir, ref bytesCount); 
Console.WriteLine("Current file share usage: {0:f3} MB", bytesCount/(1024.0 * 1024.0)); 

enter image description here

+0

私は私の答えを更新し、あなたのためのいくつかのチュートリアルを追加しました、あなたはそれらを参照することができます、任意の懸念は、私に知らせてください。 –

関連する問題