美好的一天!
我最近了解到 Google云存储平台/服务上宣布的新存储层和降价。
所以我想将我的一个存储桶的默认存储类别从 Durable Reduced Availability 更改为 Coldline,,因为这适用于我和#的文件39;在那个存储桶中存档。
我收到了这个说明:
更改默认存储类仅影响您添加的对象 这个桶向前发展。它不会改变存储类 已经在你的桶中的对象。
有关如何更改存储桶中所有现有对象类的任何建议/提示(使用云控制台或gsutil
)?
欣赏它;感谢
干杯!
fynali
答案 0 :(得分:11)
将对象同步移动到同一存储桶中的其他存储类的最简单方法是使用rewrite。例如,要使用gsutil执行此操作,您可以运行:
gsutil -m rewrite -s coldline gs://your-bucket/**
注意:确保gsutil是最新的(版本4.22及更高版本支持带有-s
的{{1}}标记。)
或者,您可以使用Lifecycle Management功能的新rewrite
操作异步(通常需要大约1天)修改对象的存储类(例如,使用SetStorageClass
更改存储桶的默认存储类后,条件设置为一段时间。)
答案 1 :(得分:1)
答案 2 :(得分:0)
如果您无法访问gsutil控制台(例如在Google Cloud Function环境中),因为Cloud Functions服务器实例未安装gsutil。 Gsutil可在您的本地计算机上运行,因为您确实在本地计算机上进行了安装和配置。对于所有这些情况,建议您在python中评估update_storage_class()blob方法。当您检索单个Blob时,可以调用此方法(换句话说,它引用存储桶中的特定对象)。这里是一个例子:
from google.cloud import storage
storage_client = storage.Client()
blobs = storage_client.list_blobs(bucket_name)
for blob in blobs:
print(blob.name)
print(blob.storage_class)
all_classes = ['NEARLINE_STORAGE_CLASS', 'COLDLINE_STORAGE_CLASS', 'ARCHIVE_STORAGE_CLASS', 'STANDARD_STORAGE_CLASS', 'MULTI_REGIONAL_LEGACY_STORAGE_CLASS', 'REGIONAL_LEGACY_STORAGE_CLASS']
new_class = all_classes[my_index]
update_storage_class(new_class)
参考:
答案 3 :(得分:0)
要将存储类别从 NEARLINE 更改为 COLDLINE,请创建一个包含以下内容的 JSON 文件:
{
"lifecycle": {
"rule": [
{
"action": {
"type": "SetStorageClass",
"storageClass": "COLDLINE"
},
"condition": {
"matchesStorageClass": [
"NEARLINE"
]
}
}
]
}
}
将其命名为 lifecycle.json
或其他名称,然后在您的 shell 中运行它:
$ gsutil lifecycle set lifecycle.json gs://my-cool-bucket
更改最多可能需要 24 小时才能完成。据我所知,此更改不会产生任何额外费用。
答案 4 :(得分:0)
我是这样做的:
gsutil -m rewrite -r -s <storage-class> gs://my-bucket-name/
(-r 表示递归,因为我希望存储桶中的所有对象都受到影响)。