将本地文件复制到 Azure Blob - 长文件名

Posted

技术标签:

【中文标题】将本地文件复制到 Azure Blob - 长文件名【英文标题】:Copy local files to Azure Blob - long file names 【发布时间】:2018-03-10 23:02:30 【问题描述】:

我需要将包含大量子文件夹和文件的文件夹从本地计算机 (Windows Server 2012) 复制/同步到我们的 Azure Blob 容器。一些路径超过 260 个字符。

我尝试使用 AzCopy (https://docs.microsoft.com/en-us/azure/storage/common/storage-use-azcopy),但遇到了一个带有长文件名的异常。

将文件从本地 PC 复制到具有很长文件夹/文件名的 Azure Blob 容器有哪些选项?像 RoboCopy 之类的东西,但是我需要将一个文件夹映射到我的 blob 存储,我不确定这是否可行。

【问题讨论】:

也许你可以看看这个类似的question。 感谢@Walter-MSFT - 问题是,这两种解决方案不太合适。减少文件夹名称长度不是一个选项,因为其他系统使用这些路径。并且使用 Azure 存储资源管理器是一个问题,因为我需要执行夜间同步(命令行)并且只更新更改的文件。 【参考方案1】:

Azure Blob 存储没有文件夹的概念。只有:container name + blob name(尽管 blob 的容器名称可以包含分隔符,例如 \,这使它看起来像一条路径)。

并且容器的名称不能超过 63 个字符(并且必须是小写)。没有办法解决这个问题。如果您尝试将本地服务器的路径存储为容器名称,并且该路径超过 63 个字符,则将无法正常工作。

Azure 文件共享(由 Azure 存储提供支持)没有此限制,因为它们支持标准文件 I/O 操作和目录结构。如果您采用这条路线,您应该能够按原样复制您的文件夹结构。有一些区别:

可以装载文件共享(作为 smb 共享),让您只需复制您的内容(例如 xcopy) 您可以调用 SDK/API 来复制文件(API 略有不同) 文件共享限制为 5TB,共享的总 IOPS 为 1000

【讨论】:

以上是关于将本地文件复制到 Azure Blob - 长文件名的主要内容,如果未能解决你的问题,请参考以下文章

Azure 函数 Blob 触发器将文件复制到文件共享

从 SFTP 服务器将文件上传到 Azure 存储 Blob

将文件从 Azure 文件共享复制到 Azure Blob 的 C# 代码

使用 node.js 将 Azure 文件共享复制到 Blob

使用 ADF 将 azure blob 文件复制到 azure synapse

将 Azure BLOB 存储同步到 Amazon S3