gpt4 book ai didi

google-cloud-storage - 以编程方式将文件从 Azure Blob 存储传输到 Google Cloud Storage

转载 作者:行者123 更新时间:2023-12-01 08:24:28 24 4
gpt4 key购买 nike

我有许多文件通过 Azure 数据工厂传输到 Azure Blob 存储。不幸的是,这个工具似乎没有为任何值设置 Content-MD5 值,所以当我从 Blob 存储 API 中提取该值时,它是空的。

我的目标是将这些文件从 Azure Blob 存储传输到 Google 存储。我在 https://cloud.google.com/storage/transfer/reference/rest/v1/TransferSpec#HttpData 上看到的有关 Google Storagetransfer 服务的文档表示如果我提供包含 URL、长度(以字节为单位)和每个文件的 MD5 哈希的文件列表,我可以轻松启动此类传输。

好吧,我可以轻松地从 Azure 存储中提取前两个,但第三个似乎不会自动由 Azure 存储填充,我也找不到任何方法让它这样做。

不幸的是,我的其他选择看起来很有限。到目前为止的可能性:

  • 将文件下载到本地机器,确定哈希值并更新 Blob MD5 值
  • 看看我是不是不能在同一个区域中编写一个 Azure Functions 应用程序来计算哈希值并将其写入容器中每个的 blob
  • 使用来自数据工厂的 Amazon S3 导出,然后根据 https://cloud.google.com/storage/transfer/reference/rest/v1/TransferSpec#AwsS3Data 使用 Google 对从 S3 导入的支持将其从那里拉出但这似乎真的是在浪费带宽(而且我必须设置一个亚马逊帐户)。

  • 理想情况下,我希望能够编写一个脚本,然后点击开始并不管它。我没有从 Azure 获得最快的下载速度,所以 #1 会不太理想,因为它需要很长时间。

    还有其他方法吗?

    最佳答案

    我知道为你回答这个问题有点晚了,但它可能会帮助其他所有正在尝试的人迁移数据来自 Azure Blob 存储 谷歌云存储

    谷歌云存储和 Azure Blob 存储这两个平台都是存储服务,没有命令行界面,我们可以在其中简单地运行传输命令。为此,我们需要一个中间计算实例,它实际上能够运行所需的命令。我们将按照以下步骤来实现云到云的传输。

    首先,在 Google Cloud Platform 中创建一个计算实例。您无需创建计算能力强大的实例,您只需要一台 Debian-10GB 机器,带有 2 核 CPU 和 4 GB 内存。

    在早期,您可能会将数据下载到 GCP 中的计算实例,然后将其进一步移动到 Google Cloud Storage。但是现在随着gcsfuse的引入我们可以简单地将 Google 存储帐户挂载为文件系统。

    创建计算实例后,只需使用 SSH 登录到该实例即可。从 Google Console 并安装以下软件包。

    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>

    Install Azcopy
    wget https://aka.ms/downloadazcopy-v10-linux
    tar -xvf downloadazcopy-v10-linux
    sudo cp ./azcopy_linux_amd64_*/azcopy /usr/bin/

    安装这些软件包后,下一步是创建共享签名访问 key 。如果您有 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 中,让它一直运行直到您的数据传输完成。

    就这样!我希望它能帮助别人

    关于google-cloud-storage - 以编程方式将文件从 Azure Blob 存储传输到 Google Cloud Storage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41157327/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com