我目前正在構建一個多租戶Web應用程序以在Azure中託管,這將使用Azure文件服務來存儲每個客戶端數據 - 將使用不同的文件共享每個客戶端提供隔離。如何獲取或計算Azure文件/共享或服務的大小
我的問題是 - 如何發現特定文件共享中所有文件的大小? (用於計費目的)。
我有PowerShell腳本等來計算Blob存儲的大小,但沒有文件存儲。有誰知道這是可能的,以及如何完成,最好從我的C#應用程序?
我目前正在構建一個多租戶Web應用程序以在Azure中託管,這將使用Azure文件服務來存儲每個客戶端數據 - 將使用不同的文件共享每個客戶端提供隔離。如何獲取或計算Azure文件/共享或服務的大小
我的問題是 - 如何發現特定文件共享中所有文件的大小? (用於計費目的)。
我有PowerShell腳本等來計算Blob存儲的大小,但沒有文件存儲。有誰知道這是可能的,以及如何完成,最好從我的C#應用程序?
我有PowerShell腳本等來計算Blob存儲的大小,但沒有文件存儲。有誰知道這是可能的,以及如何完成,最好從我的C#應用程序?
你可以利用Microsoft Azure Configuration Manager Library for .NET和檢索粗糙使用一個特定的文件共享,如下所示:
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);
有關詳細信息,你可以參考Develop with File storage。
結果:
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));
我已經更新了我的答案,併爲你添加了一些教程,你可以參考他們,任何疑慮,隨時讓我知道。 –
你有沒有解決這個問題,你需要更多的幫助? –