我有一个文件服务器,它包含大约2 TB的数据,并且每周增加50 000个文件/ 40 gb。
大多数文件只使用一周或最多一个月,然后才能访问它们。
文件服务器为几个Web服务器提供文件共享。并且网页通过共享来处理文件的上传和删除。
我们不想继续扩展我们的on premis文件服务器。并且正在寻找基于云的混合存储。
我们真的不想重建任何c#应用程序或购买像商店简单的硬件。
我们正在寻找的解决方案是将本地驱动器上的所有新文件复制到云端。删除本地未访问一个月的文件。如果用户想要一个在本地删除的文件,它首先从云下载,然后我们就可以使用它。这应该自动发生。
我更喜欢在Azure中使用blob存储,因为我们已经有了一些服务。
关于如何做到这一点的任何提示?
答案 0 :(得分:1)
Azure blob存储可以解决问题。 Blob存储适用于文本,二进制文件,文档,媒体文件等。This tutorial on blobs应该从Azure端为您提供所需的一切。在当前文件服务器上,您只需要使用教程中的代码创建一个上传所有新文件的服务或作业。这是一个可以优化的快速方法,另外你需要编写逻辑来获取新文件(我假设这不是你的问题):
// retreive all the new files
List<System.IO.File> files = GetAllNewFiles();
// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// Retrieve reference to a previously created container.
CloudBlobContainer container = blobClient.GetContainerReference("mycontainer");
// Retrieve reference to a blob named "myblob".
CloudBlockBlob blockBlob = container.GetBlockBlobReference("myblob");
foreach (System.IO.File file in files)
{
// Create or overwrite the "myblob" blob with contents from a local file.
using (var fileStream = file.OpenRead(@"path\myfile"))
{
blockBlob.UploadFromStream(fileStream);
}
}
此外,如果您不想永久保存云端的文件,可以使用Azure Scheduler每天/每周/每月/每天运行并删除所有尚未删除的文件已在X天内从本地文件服务器请求。