fre*_*rik 18 google-cloud-storage
这是我唯一的选择还是更快的方式?
# Delete contents in bucket (takes a long time on large bucket)
gsutil -m rm -r gs://my-bucket/*
# Remove bucket
gsutil rb gs://my-bucket/
Run Code Online (Sandbox Code Playgroud)
Tra*_*rla 22
在删除存储桶之前,存储桶必须是空的.因此,在删除存储桶之前,必须删除它包含的所有对象.
您可以使用gsutil rm -r(文档)执行此操作.只是不要传递*通配符,它会在删除所有对象后删除存储桶.
gsutil -m rm -r gs://my-bucket
Run Code Online (Sandbox Code Playgroud)
Google云端存储对象列表最终是一致的,在桶列表返回0个对象之前,桶删除无法成功.因此,有时在删除所有对象后,存储桶可能需要一些时间才能显示为空.在这种情况下,您可以在尝试删除存储桶时获得Bucket Not Empty错误(或在UI的情况下'Bucket Not Ready').
解决方案是重试删除,并gsutil具有内置的重试逻辑.
这是值得总结和指出的。
如果您有大量(TB)数据,则使用 gsutil rm 删除速度会很慢
gsutil -m rm -r gs://my-bucket
Run Code Online (Sandbox Code Playgroud)
但是,您可以指定存储桶的到期时间,并让 GCS 为您完成工作。创建fast-delete.json政策:
{
"rule":[
{
"action":{
"type":"Delete"
},
"condition":{
"age":0
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
然后申请
gsutil lifecycle set fast-delete.json gs://MY-BUCKET
Run Code Online (Sandbox Code Playgroud)
谢谢@jterrace 和@Janosch
Che*_*ge 6
使用Python客户端,您可以使用以下命令在脚本中强制删除:
bucket.delete(force=True)
Run Code Online (Sandbox Code Playgroud)
用您当前的语言尝试类似的事情。
使用它来设置适当的生命周期规则。例如等待一天。
https://cloud.google.com/storage/docs/gsutil/commands/lifecycle
Run Code Online (Sandbox Code Playgroud)
示例 (复制粘贴前请仔细阅读)
gsutil lifecycle set [LIFECYCLE_CONFIG_FILE] gs://[BUCKET_NAME]
Run Code Online (Sandbox Code Playgroud)
示例 (复制粘贴前请仔细阅读)
{
"rule":
[
{
"action": {"type": "Delete"},
"condition": {"age": 1}
}
]
}
Run Code Online (Sandbox Code Playgroud)
然后删除存储桶。
这将异步删除数据,因此您不必让某些后台作业一直运行。
我使用三种技术对删除进行了基准测试:
gcloud storage rm:520/秒gsutil -m rm:240/秒大赢家是存储传输服务。要使用它删除文件,您需要一个空的源存储桶(或存储桶中的文件夹),然后将其复制到您希望为空的目标存储桶(或该存储桶中的文件夹)。
您还可以从 CLI 创建并运行作业。此示例假设您有权访问gs://bucket1/empty/(其中没有对象)并且您想要从中删除所有对象gs://bucket2/:
gcloud transfer jobs create \
gs://bucket1/empty/ gs://bucket2/ \
--delete-from=destination-if-unique \
--project my-project
Run Code Online (Sandbox Code Playgroud)
如果您希望删除速度更快,则需要创建多个传输作业并让它们针对存储桶的不同部分。因为它必须列出存储桶来查找要删除的文件,所以您希望目标路径不重叠(例如 gs://bucket2/folder1/ 和 gs://bucket2/folder2/ 等)。每项工作都将快速并行处理,从而在更短的总时间内完成工作。
通常,与使用对象生命周期管理 (OLM) 相比,我更喜欢这种方式,因为它可以立即启动(无需等待长达 24 小时的策略评估),但有时可能需要 OLM。
| 归档时间: |
|
| 查看次数: |
5637 次 |
| 最近记录: |