我有一个带有一堆静态文件的远程服务器(在Azure之外)。我在Azure中创建了一个辅助角色,我希望使用辅助角色将SFTP从我的远程服务器直接传输到我的blob存储帐户(不需要本地复制到辅助角色)。是否有关于如何做到这一点的既定工作流程/最佳实践?
我能找到的最接近的是这个问题: Copy file from URL to Azure BLOB
但是,要使用StartCopyFromBlob,我需要一个可公开访问的URL,但事实并非如此。
这些文件中的一些可能是> 100mb或者> 500mb,是否会引起任何问题?
感谢。
答案 0 :(得分:3)
您可能希望通过在Azure上设置FTP服务器来直接将文件保存到Azure存储,从而解决这个问题。
有关如何使用预览文件执行此操作的详细说明,请参阅http://fabriccontroller.net/blog/posts/deploying-a-load-balanced-high-available-ftp-server-with-azure-files/
答案 1 :(得分:1)
最简单的方法是直接在远程服务器上安装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,这是一种监听文件事件(在这种情况下为php -f myscript -- <my_param_as_a_nested_array> foobar
事件)的服务。在Azure Marketplace上有一种产品SFTP Gateway可以完成所有这些工作(公开:我是该产品的开发人员之一),因此您无需花费时间从头开始实现。
对于Azure CLI或SFTP,> 500mb的文件大小也不应该是问题。