Han*_*ahS 25 google-cloud-storage
如何将数据直接从一个Google云端存储项目移动到另一个?我了解如何上传和如何下载,但我想直接在项目之间转移.
Bra*_*ugh 23
要将任何单个对象从一个GCS位置复制到另一个GCS位置,可以使用copy命令.这可以通过我们的任何公共API或我们的命令行客户端gsutil来完成.
使用gsutil,命令很简单:
gsutil cp gs://bucket1/obj gs://bucket2/obj2
Run Code Online (Sandbox Code Playgroud)
编辑:自从我写这篇文章以来,谷歌云端传输服务已经可用,这有利于在GCS项目之间复制整个存储桶,或者将整个存储桶从S3复制到GCS中.您可以在此处找到更多信息:https://cloud.google.com/storage/transfer/
Obi*_*ill 21
这是[之一]最快的方法:
gsutil -m rsync -r gs://bucket-source/dir gs://bucket-destination/dir
Run Code Online (Sandbox Code Playgroud)
请注意,/dir
指的是/dir1/dir2
主存储桶下的目录[或子目录,例如]。它不是指文件名。如果您尝试传输单个文件,则会出现错误。
在官方文档中查看更多配置选项。
但是,您应该正确设置一些内容以防止出现问题。这是一个设置列表:
Google Cloud Console -> IAM -> Service Account
]。使用存储管理员作为角色。确保您创建了一个 JSON 密钥并将其下载到您计算机上的安全位置。记下此文件的路径 [例如path/to/source-service-account.json
],因为稍后您将需要它。Google Cloud Console -> Storage -> Browser
,然后点击主bucket,然后点击Permissions选项卡,然后点击“Add Members”按钮。在提供的文本框中添加源存储桶服务帐户的电子邮件地址,然后授予 Storage Admin 权限]gsutil
命令。但是,如果您没有经过正确的身份验证,您可能会收到访问权限错误。您可以通过运行以下命令,使用服务帐户文件 [您在上述 1. 中创建和下载的文件] 进行身份验证gcloud auth activate-service-account --key-file=/path/to/source-service-account.json
。执行此操作后,您将使用服务帐户登录 GCP。您现在可以运行gsutil
命令来传输文件。gcloud auth list
。而且,您可以使用切换帐户gcloud config set account 'ACCOUNT'
干杯。
Ash*_*aka 15
如果您想使用控制台,请遵循@Martin van Dam 的回答。
如果你想使用外壳:
步骤 1. 打开 google cloud shell
Step 2. 运行gcloud init
并按照流程连接bucket1所属的云项目。
步骤 3. 运行 gsutil cp -r gs://[bucket1]/* gs://[bucket2]
你完成了!
*现在有一个问题!如果两个存储桶都属于同一个项目,这些步骤将完美无缺。但是,如果两个存储桶都不属于same project
或same google cloud account
. 它不会工作。您需要修复权限。
如果它们属于同一个 GCP 帐户:
转到Storage
> Browser
> 选择存储桶 > 选项 > Edit bucket permissions
> add member
> 插入存储桶service account email id
2 所属项目的角色 > 将角色设置为存储。Storage Admin
> 保存。然后运行gstuil cp
命令。
如果它们属于单独的 GCP 帐户:
转到Storage
> Browser
> 选择存储桶 > 选项 > Edit bucket permissions
> add member
> 插入存储桶gmail id
2 所属的项目 > 将角色设置为存储。Storage Admin
> 保存。然后运行gstuil cp
命令。
Mar*_*Dam 11
打开Web控制台Storage> Tranfer以创建新传输.
选择要从中复制的源存储桶.就像上面提到的cratervale一样,存储桶标识符是全球唯一的 (这是解决方案的关键).因此,一旦到达传输表单的目标部分,就可以将目标存储桶写入/粘贴到其文本输入中.即使那个桶来自另一个项目.一旦目标被验证为现有存储桶,它将显示绿色图标.您可以再次继续表单以完成设置.
从表单开始传输后,您可以通过点击控制台顶部的刷新按钮来跟踪它的进度.
GCS中的存储桶名称在所有项目中都是唯一的。例如,Project1和Project2都不能都具有名为“ images”的存储桶,尽管它们各自可以在名为“ images”的存储桶中具有文件夹。
这可能会引起误解,因为gsutil可能会要求您选择要使用的项目。对于复制命令,可以忽略此选择。
gsutil cp gs://bucket1/obj gs://bucket2/obj
将允许您将Project1 / bucket1中的对象复制到Project2 / bucket2
如果您拥有可以访问这两个项目的密钥或服务帐户,则使用 gsutils 非常简单并且可以快速工作。
这是我在本地 mac 上所做的,并在几分钟内同步了数 TB 的数据(是的,几分钟而不是几小时)
gsutil -m rsync -r gs://my/source/project/bucket/files/ gs://my/target/project/bucket/directory/
Run Code Online (Sandbox Code Playgroud)
这里的关键是使用-m
标志。
查看https://cloud.google.com/storage/docs/gsutil/commands/rsync 上的官方文档了解更多详细信息。
归档时间: |
|
查看次数: |
18940 次 |
最近记录: |