问题描述
我正在通过Gitlab CI将某些文件部署到Google Cloud中的存储桶。我用来删除对象的命令是gsutil -m rm gs://pr.homefront.com
该命令将删除存储桶中的所有内容,但我希望将其更改为每次运行命令时仍删除该存储桶中名为“ ibw”的文件夹以外的所有内容。
解决方法
您可以在文件夹中的对象中添加temporary holds,这样可以防止对该对象进行操作或删除
您可以通过以下gsutil命令应用保全:
gsutil -m retention temp set gs://bucketname/ibw/*******
* 每个星号都是文件夹级别
您可以在rm命令之前设置保全,而在rm命令之后取消设置保全。在取消保留之前,无法修改或删除对象
更新:
可以将保全添加到空文件夹
- 我通过Cloud Console创建了一个空文件夹
- 我运行以下命令以避免删除空文件夹
#this block the empty folder,if this is an folder with files all files will be blocked
gsutil -m retention temp set gs://bucketname/ibw/*******
#this operation can't remove objects,and empty folders with holds
gsutil -m rm gs://bucketname
#remove the hold of the empty folder,if this is an folder with files all files will be released
gsutil -m retention temp release gs://bucketname/ibw/*******