Справочная информация: я совершенно новичок в c # и вообще программирую (но я был рядом и решил научить себя тому, что мне нужно для этой работы).
Для моего парка из 14 критических серверову каждого сервера есть резервная папка для одного другого сервера на другом сайте.Потребление дискового пространства - это то, что может привести к остановке сервера и иметь очень плохие последствия для многих людей.
Я включаю ежемесячный тренд, чтобы улучшить обнаружение не только проблем с использованием диска, но и для определения конкретных папок.неожиданно растет в течение любого месяца.Я сузил список папок до определенных папок ОС и приложений, чтобы записать данные о размере для моего анализа тенденций, и я нахожусь на начальных этапах создания небольшого исполняемого файла, который будет записывать только нужные мне данные и записывать их в текстовый файл.что моя таблица VBA будет загружаться раз в месяц.
Я получил приложение, работающее со встроенным статическим списком папок, но у каждого сервера есть одно имя папки, отличающееся от следующего, что означает, что мне нужно будет сделатьспецифичный для сервера исполняемый файл, поскольку часть имени папки связана с конкретным другим сервером, с которого ежедневно копируются файлы резервных копий.Я предпочел бы иметь только одно приложение, которое можно использовать на любом из этих серверов, и выяснить, каково его имя папки резервного копирования на партнерских серверах, с помощью части поиска по шаблону в строке имени папки.
Моя текущая версияКод, который создает текстовый файл с необходимой информацией, приведен ниже.Конкретная строка, которую я хотел бы заменить, чтобы использовать поиск по шаблону для определения замещенного значения: DirectoryInfo dInfo5 = new DirectoryInfo(@"C:/_Backup_server02");
Если бы это было легко, то что-то вроде: DirectoryInfo dInfo5 = new DirectoryInfo(@"C:/_Backup_server*");
сработало бы, но это не сработало, поэтому я готов пойти на более сложнуюroute.
Любые идеи будут оценены.Код:
using System;
using System.Linq;
using System.IO;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
string server = System.Environment.MachineName;
DriveInfo CDrive = new DriveInfo("C");
if (CDrive.IsReady)
{
double freeSpacePerc = (CDrive.TotalFreeSpace / (float)CDrive.TotalSize) * 100;
StreamWriter sw = new StreamWriter("C:\\"+server+" Diskdata.txt");
DirectoryInfo dInfo = new DirectoryInfo(@"C:/inetpub/logs/LogFiles");
long sizeOfDir = DirectorySize(dInfo, true);
DirectoryInfo dInfo1 = new DirectoryInfo(@"C:\SQLServerData");
long sizeOfDir1 = DirectorySize(dInfo1, true);
DirectoryInfo dInfo2 = new DirectoryInfo(@"C:/temp");
long sizeOfDir2 = DirectorySize(dInfo2, true);
DirectoryInfo dInfo3 = new DirectoryInfo(@"C:/NTDahsHome");
long sizeOfDir3 = DirectorySize(dInfo3, true);
DirectoryInfo dInfo4 = new DirectoryInfo(@"C:/windows/winsxs");
long sizeOfDir4 = DirectorySize(dInfo4, true);
DirectoryInfo dInfo5 = new DirectoryInfo(@"C:/_Backup_server02");
long sizeOfDir5 = DirectorySize(dInfo5, true);
DirectoryInfo dInfo6 = new DirectoryInfo(@"C:/Backup");
long sizeOfDir6 = DirectorySize(dInfo6, true);
DirectoryInfo dInfo7 = new DirectoryInfo(@"C:/mindata");
long sizeOfDir7 = DirectorySize(dInfo7, true);
try
{
sw.WriteLine(server);
sw.WriteLine("DrivePercentFree: {0:0.00}", freeSpacePerc);
sw.WriteLine ("TotalFreeSpace: {0}", CDrive.TotalFreeSpace);
sw.WriteLine ("inetpublogfiles: " + "{0:N0}", sizeOfDir);
sw.WriteLine ("SQLServerData : " + sizeOfDir1);
sw.WriteLine ("temp: " + sizeOfDir2);
sw.WriteLine ("NTDahsHome: " + sizeOfDir3);
sw.WriteLine ("winsxs: " + sizeOfDir4);
sw.WriteLine ("_backup_jeacemssj02: " + sizeOfDir5);
sw.WriteLine ("backup: " + sizeOfDir6);
sw.WriteLine ("mindata: " + sizeOfDir7);
sw.Close();
}
catch (Exception e)
{
Console.WriteLine("Exception: " + e.Message);
}
finally
{
Console.WriteLine("Executing finally block.");
}
}
}
static long DirectorySize(DirectoryInfo dInfo, bool includeSubDir)
{
long totalSize = dInfo.EnumerateFiles()
.Sum(file => file.Length);
if (includeSubDir)
{
totalSize += dInfo.EnumerateDirectories()
.Sum(dir => DirectorySize(dir, true));
}
return totalSize;
}
static long DirectorySize1(DirectoryInfo dInfo1, bool includeSubDir)
{
long totalSize1 = dInfo1.EnumerateFiles()
.Sum(file => file.Length);
if (includeSubDir)
{
totalSize1 += dInfo1.EnumerateDirectories()
.Sum(dir => DirectorySize(dir, true));
}
return totalSize1;
}
static long DirectorySize2(DirectoryInfo dInfo2, bool includeSubDir)
{
long totalSize2 = dInfo2.EnumerateFiles()
.Sum(file => file.Length);
if (includeSubDir)
{
totalSize2 += dInfo2.EnumerateDirectories()
.Sum(dir => DirectorySize(dir, true));
}
return totalSize2;
}
static long DirectorySize3(DirectoryInfo dInfo3, bool includeSubDir)
{
long totalSize3 = dInfo3.EnumerateFiles()
.Sum(file => file.Length);
if (includeSubDir)
{
totalSize3 += dInfo3.EnumerateDirectories()
.Sum(dir => DirectorySize(dir, true));
}
return totalSize3;
}
static long DirectorySize4(DirectoryInfo dInfo4, bool includeSubDir)
{
long totalSize4 = dInfo4.EnumerateFiles()
.Sum(file => file.Length);
if (includeSubDir)
{
totalSize4 += dInfo4.EnumerateDirectories()
.Sum(dir => DirectorySize(dir, true));
}
return totalSize4;
}
static long DirectorySize5(DirectoryInfo dInfo5, bool includeSubDir)
{
long totalSize5 = dInfo5.EnumerateFiles()
.Sum(file => file.Length);
if (includeSubDir)
{
totalSize5 += dInfo5.EnumerateDirectories()
.Sum(dir => DirectorySize(dir, true));
}
return totalSize5;
}
static long DirectorySize6(DirectoryInfo dInfo6, bool includeSubDir)
{
long totalSize6 = dInfo6.EnumerateFiles()
.Sum(file => file.Length);
if (includeSubDir)
{
totalSize6 += dInfo6.EnumerateDirectories()
.Sum(dir => DirectorySize(dir, true));
}
return totalSize6;
}
static long DirectorySize7(DirectoryInfo dInfo7, bool includeSubDir)
{
long totalSize7 = dInfo7.EnumerateFiles()
.Sum(file => file.Length);
if (includeSubDir)
{
totalSize7 += dInfo7.EnumerateDirectories()
.Sum(dir => DirectorySize(dir, true));
}
return totalSize7;
}
}
}