我有许多文件通过Azure数据工厂传输到Azure Blob存储中。不幸的是,这个工具似乎没有为任何值设置Content-MD5值,所以当我从Blob Storage API中提取该值时,它是空的。
我的目标是将这些文件从Azure Blob Storage传输到Google Storage。我在https://cloud.google.com/storage/transfer/reference/rest/v1/TransferSpec#HttpData看到Google的Storagetransfer服务的文档表明,如果我提供带有URL,长度字节和MD5哈希值的文件列表,我可以轻松启动此类传输每个。
好吧,我可以轻松地从Azure存储中提取前两个,但第三个似乎不会自动填充Azure存储,也无法找到任何方法来实现它。
不幸的是,我的其他选择看起来有限。到目前为止的可能性:
理想情况下,我希望能够编写一个脚本,然后单击它。我没有从Azure获得最快的下载速度,因此#1会因为需要花费很长时间而不太可能。
有其他方法吗?
答案 0 :(得分:4)
我们已将大约3TB文件从Azure迁移到Google存储。我们已经在Google Computing Engine中启动了一个廉价的Linux服务器,其中包含几个TB本地磁盘。通过blobxfer将Azure文件转移到本地磁盘,然后通过gsutil rsync
将文件从本地磁盘复制到Google存储空间(gsutil cp
也可以)。
您可以使用其他工具从Azure传输文件,甚至可以在GCE中启动Windows服务器并在Windows上使用gsutils
。
这花了几天时间,但简单明了。
答案 1 :(得分:2)
您是否考虑过使用用于数据转换的Azure Data Factory custom activity支持?在后端,如果您使用ADF自定义活动,则可以使用Azure Batch下载,更新文件并将文件上传到Google Storage。
答案 2 :(得分:2)
2020年5月更新:Google Cloud Data Transfer现在支持Azure Blob存储作为源。这是一种无代码解决方案。
我们用它来将大约1TB的文件从Azure Blob存储传输到Google Cloud Storage。我们每天都有刷新,因此Azure Blob中的所有新文件都会自动复制到Cloud Storage。
答案 3 :(得分:1)
我知道现在为您回答这个问题有点晚了,但是它可能会帮助其他尝试从 Azure Blob存储迁移到的数据的人Google云存储
作为存储服务的两个平台Google Cloud Storage和Azure Blob Storage没有命令行界面,我们可以在其中轻松运行传输命令。为此,我们需要一个中间计算实例,该实例实际上将能够运行所需的命令。我们将按照以下步骤进行以实现云到云的传输。
首先,请在Google Cloud Platform中创建一个计算实例。您无需创建具有计算功能的实例,只需要一台具有2核CPU和4 GB内存的Debian-10GB机器即可。
在早期,您将数据下载到GCP中的计算实例,然后再将其移动到Google Cloud Storage。但是现在通过引入gcsfuse
,我们可以简单地将Google存储帐户挂载为文件系统。
创建计算实例后,只需使用Google控制台中的SSH
登录到该实例并安装以下软件包。
Install Google Cloud Storage Fuse
export GCSFUSE_REPO=gcsfuse-`lsb_release -c -s`
echo "deb http://packages.cloud.google.com/apt $GCSFUSE_REPO main" | sudo tee /etc/apt/sources.list.d/gcsfuse.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo apt-get update -y
sudo apt-get install gcsfuse -y
# Create local folder
mkdir local_folder_name
# Mount the Storage Account as a bucket
gcsfuse <bucket_name> <local_folder_path>
wget https://aka.ms/downloadazcopy-v10-linux
tar -xvf downloadazcopy-v10-linux
sudo cp ./azcopy_linux_amd64_*/azcopy /usr/bin/
一旦安装了这些软件包,下一步就是创建“共享签名访问”密钥。如果您具有Azure Blob存储资源管理器,只需右键单击目录树中的存储帐户名称,然后选择Generate Shared Access Signature
现在,您必须创建一个指向Blob对象的URL。为此,只需右键单击任何Blob对象,选择Properties
,然后从对话框中复制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
现在,使用以下命令开始将文件从Azure复制到GCP存储。
azcopy cp --recursive=true "<-source url->" "<-destination url->"
万一工作失败,您可以使用以下方式列出您的工作:
azcopy jobs list
并恢复失败的作业:
azcopy jobs resume jobid <-source sas->
您可以将所有步骤整理为一个bash,使其保持运行状态,直到完成数据传输为止。
仅此而已!希望对别人有帮助