【问题标题】:Copy file from remote server using SFTP straight to Azure blob storage使用 SFTP 将文件从远程服务器直接复制到 Azure Blob 存储
【发布时间】:2015-01-16 05:38:45
【问题描述】:

我有一个带有一堆静态文件的远程服务器(在 Azure 之外)。我在 Azure 中创建了一个辅助角色,我想使用辅助角色使用 SFTP 将这些文件从我的远程服务器直接传输到我的 blob 存储帐户(无需在本地复制到辅助角色)。是否有关于如何做到这一点的既定工作流程/最佳实践?

我能找到的最接近的是这个问题: Copy file from URL to Azure BLOB

但是,要使用 StartCopyFromBlob,我需要有一个可公开访问的 URL,但事实并非如此。

其中一些文件可能 >100mb 或 >500mb,这是否会引发任何问题?

谢谢。

【问题讨论】:

标签: azure azure-worker-roles azure-blob-storage


【解决方案1】:

您可能希望以另一种方式解决此问题,方法是在 Azure 上设置一个 FTP 服务器,将文件直接保存到 Azure 存储。

可以在http://fabriccontroller.net/blog/posts/deploying-a-load-balanced-high-available-ftp-server-with-azure-files/ 上找到有关如何使用预览文件执行此操作的详细说明

【讨论】:

    【解决方案2】:

    最简单的方法是直接在远程服务器上安装 Azure CLI。然后可以使用 Azure CLI 将这些文件直接传输到 Azure Blob 存储。无需 SFTP(Azure Blob 存储不公开 SFTP 接口)或辅助角色(您的远程服务器不通过 Web 接口提供文件)。

    如果这不是一个选项,另一种方法是执行@Mark Volders 的建议,并在 Azure 上配置 SFTP 服务器。然后,您可以将文件从远程服务器推送到 SFTP 服务器。然后,SFTP 服务器将使用 Azure CLI 将文件推送到 Azure Blob 存储,并在成功后删除本地文件。

    对于 SFTP 服务器,一个障碍是确保在 SFTP 客户端完成文件传输后立即将文件复制到 Azure Blob 存储。一种常见的方法是使用Incron,这是一个侦听文件事件(在本例中为IN_CLOSE_WRITE 事件)的服务。 Azure Marketplace 上有一个产品SFTP Gateway 可以完成所有这些工作(披露:我是该产品的开发人员之一),因此您无需花时间从头开始实施。

    此外,>500mb 的文件大小对于 Azure CLI 或 SFTP 来说都不是问题。

    【讨论】:

      【解决方案3】:

      您可以使用托管在 ACI 上的 docker 映像上的 SFTP,它将文件推送到 Azure Blob 存储容器,然后在成功上传到 Blob 存储后将它们从本地存储中删除。

      也可以使用 Blobfuse 挂载 Azure Blob 存储,但这需要 docker 映像的一些额外权限,而 ACI 不提供这些权限。

      我在这里写了一篇文章来解决同样的问题: https://aws.plainenglish.io/sftp-as-caas-on-cloud-1171080aa5df

      【讨论】:

        猜你喜欢
        • 2022-01-18
        • 2019-03-21
        • 1970-01-01
        • 2020-08-03
        • 2019-11-25
        • 2021-06-07
        • 1970-01-01
        • 1970-01-01
        • 2019-11-07
        相关资源
        最近更新 更多