Google cloud storage 以编程方式将文件从Azure Blob存储传输到Google云存储
我有许多文件通过Azure数据工厂传输到Azure Blob存储中。不幸的是,这个工具似乎没有为任何值设置Content-MD5值,所以当我从Blob存储API中提取该值时,它是空的 我的目标是将这些文件从Azure Blob存储转移到Google存储。我在上看到的Google的Storagetransfer服务文档表明,如果我提供一个文件列表,其中包含URL、字节长度和每个文件的MD5哈希,我就可以轻松启动这样的传输 嗯,我可以很容易地从Azure存储中提取前两个,但第三个似乎不会自动被Azure存储填充,我也找不到任何方法让它这样做 不幸的是,我的其他选择似乎有限。在目前的可能性方面:Google cloud storage 以编程方式将文件从Azure Blob存储传输到Google云存储,google-cloud-storage,azure-storage-blobs,azure-data-factory,Google Cloud Storage,Azure Storage Blobs,Azure Data Factory,我有许多文件通过Azure数据工厂传输到Azure Blob存储中。不幸的是,这个工具似乎没有为任何值设置Content-MD5值,所以当我从Blob存储API中提取该值时,它是空的 我的目标是将这些文件从Azure Blob存储转移到Google存储。我在上看到的Google的Storagetransfer服务文档表明,如果我提供一个文件列表,其中包含URL、字节长度和每个文件的MD5哈希,我就可以轻松启动这样的传输 嗯,我可以很容易地从Azure存储中提取前两个,但第三个似乎不会自动被Azu
还有其他方法吗?您是否考虑过使用用于数据转换的Azure Data Factory支持?在后端,如果您使用ADF自定义活动,您可以使用Azure Batch下载、更新文件并将其上载到Google存储。我们已将大约3TB的文件从Azure迁移到Google存储。我们已经在Google计算引擎中启动了一个廉价的Linux服务器,它只有几TB的本地磁盘。通过将Azure文件传输到本地磁盘,然后通过
gsutil rsync
将文件从本地磁盘复制到Google存储(gsutil cp
)
您可以使用其他工具从Azure传输文件,甚至可以在GCE中启动Windows服务器,并在Windows上使用gsutils
这花了几天时间,但简单明了。我知道为您回答这个问题有点晚,但它可能会帮助所有试图将数据从Azure Blob存储迁移到谷歌云存储的人 谷歌云存储和Azure Blob存储,这两个平台都是存储服务,没有命令行界面,我们可以在那里简单地运行传输命令。为此,我们需要一个中间计算实例,它实际上能够运行所需的命令。为了实现云到云的传输,我们将遵循以下步骤 首先,在谷歌云平台上创建一个计算实例。您不需要创建计算能力强大的实例,只需要一台具有2核CPU和4GB内存的Debian-10GB机器 在早期,您会将数据下载到GCP中的计算实例,然后将其进一步移动到Google云存储。但是现在随着
gcsfuse
的引入,我们可以简单地将Google存储帐户装载为文件系统
创建计算实例后,只需从Google控制台使用SSH
登录到该实例,并安装以下软件包
一旦安装了这些包,下一步就是创建共享签名访问密钥。如果您有Azure Blob存储资源管理器,只需右键单击目录树中的存储帐户名,然后选择生成共享访问签名
现在,您必须创建指向blob对象的URL。要实现这一点,只需右键单击任何blob对象,选择Properties
,然后从对话框复制URL
您的最终Url应该如下所示
<https://URL_to_file> + <SAS Token>
https://myaccount.blob.core.windows.net/sascontainer/sasblob.txt?sv=2015-04-05&st=2015-04-29T22%3A18%3A26Z&se=2015-04-30T02%3A23%3A26Z&sr=b&sp=rw&sip=168.1.5.60-168.1.5.70&spr=https&sig=Z%2FRHIX5Xcg0Mq2rqI3OlWTjEg2tYkboXr1P9ZUXDtkk%3D
以及恢复失败的作业:
azcopy jobs resume jobid <-source sas->
azcopy作业恢复作业ID
您可以将所有步骤整理成一个bash,让它一直运行,直到数据传输完成
就这些!我希望它能帮助其他人2020年5月更新:谷歌云数据传输现在支持Azure Blob存储作为源。这是一个无代码的解决方案
我们使用它将约1TB的文件从Azure Blob存储传输到Google云存储。我们还每天进行刷新,以便Azure Blob中的任何新文件都会自动复制到云存储。有人能告诉我什么是“”?我曾尝试使用Google Cloud bucket中的链接URL,我想将文件复制到其中,但它不起作用。事实上,我不明白为什么我们需要在计算实例中创建一个新目录!!我们是否先将文件从Azure Blob复制到此实例,然后再复制到Google BukSet?当我使用最后一个命令,但不是目标url,而是在本地目录中复制到计算实例时,它只在文件中起作用,但当我传递最后一个目标bucket url时,它不起作用。@Twin Penguins您可能错过了将google cloud storage bucket作为文件系统装载到该计算实例的步骤。关于目标URL,它只是使用GCSFUSE挂载的文件夹名称。e、 例如,您在您的计算实例上的
/home/username
中创建了一个文件夹bucket\u mount
,那么目标URL将是-/home/username/bucket\u mount
不,我们根本没有将这些文件复制到计算实例,因为我们将bucket用作文件系统。compute实例只是帮助我们装载存储桶并运行copy命令。其他方法包括使用GCP或Azure提供的付费数据传输服务。这对我也很有效。Azure页面
<https://URL_to_file> + <SAS Token>
https://myaccount.blob.core.windows.net/sascontainer/sasblob.txt?sv=2015-04-05&st=2015-04-29T22%3A18%3A26Z&se=2015-04-30T02%3A23%3A26Z&sr=b&sp=rw&sip=168.1.5.60-168.1.5.70&spr=https&sig=Z%2FRHIX5Xcg0Mq2rqI3OlWTjEg2tYkboXr1P9ZUXDtkk%3D
azcopy cp --recursive=true "<-source url->" "<-destination url->"
azcopy jobs list
azcopy jobs resume jobid <-source sas->