(相关资料图)
作者:MeshCloud脉时云CSM 贾舒悦一、引言Cloud Storage 是一项用于将用户的对象存储在 Google Cloud 中的服务。对象是由任意格式的文件组成的不可变的数据段。对象存储在称为存储桶的容器中。所有存储桶都与项目相关联,可以在组织下对项目进行分组。Google Cloud 中的每个项目、存储桶和对象都属于 Google Cloud 资源,Compute Engine 实例等也属于资源。创建项目后,可以创建 Cloud Storage 存储分区,上传对象至存储分区,以及从存储分区中下载对象。还可以授予权限,使数据可供指定的主帐号访问;或者针对某些用例(例如托管网站),数据可供公共互联网上的所有人访问。二、整体架构Cloud Storage 结构应用说明:组织:公司名为 Example Inc.,创建了一个名为 的 Google Cloud 组织exampleinc.org。项目:Example Inc. 正在构建多个应用程序,每个应用程序都与一个项目相关联。每个项目都有自己的一组 Cloud Storage API 以及其他资源。Bucket:每个项目可以包含多个桶,这些桶是存储对象的容器。例如,可以photos为应用程序生成的所有图像文件创建一个存储桶和一个单独的videos存储桶。对象:一个单独的文件,例如名为puppy.png.三、用户场景GCS 使用中,用户在 Bucket 下有大批量文件夹,且文件夹下有按日期分类的文件夹和文件,用户有定期删除需求 :用户问题:GCS路径gs://prod-datafinger-explore/iceberg/dev/warehouse/datafinger/flash_orderbooklv2 指定目录批量删除四、准备工作预置环境:确认网络环境正常;确认拥有适当的 IAM 权限;登陆 Google Cloud Console -->进入 Cloud Storage -->Google Cloud Shell环境复现:创建路径下的相关文件jiashuyue@cloudshell:~ (qijifei-test)$ gsutil ls gs://prod-datafinger-explore1/iceberg1/**gs://prod-datafinger-explore1/iceberg1/dev1/warehouse/datafinger/gs://prod-datafinger-explore1/iceberg1/dev1/warehouse/datafinger/flash_orderbooklv2/五、删除操作方法一:gsutil rm 命令删除对象和/或存储桶。例如,以下命令删除对象 flash_orderbooklv2,实践如下:jiashuyue@cloudshell:~ (qijifei-test)$ gsutil rm gs://prod-datafinger-explore1/iceberg1/dev1/warehouse/datafinger/flash_orderbooklv2/Removing gs://prod-datafinger-explore1/iceberg1/dev1/warehouse/datafinger/flash_orderbooklv2/.../ [1 objects]Operation completed over 1 objects.jiashuyue@cloudshell:~ (qijifei-test)$ gsutil ls gs://prod-datafinger-explore1/**gs://prod-datafinger-explore1/iceberg1/dev1/warehouse/datafinger/方法二:使用 -r 选项指定递归对象删除。例如,以下命令删除gs://prod-datafinger-explore1/iceberg1/dev1/warehouse/datafinger/ 及其下的所有对象和子目录,实践如下:jiashuyue@cloudshell:~ (qijifei-test)$ gsutil rm -r gs://prod-datafinger-explore1/iceberg1/dev1/warehouse/datafinger/Removing gs://prod-datafinger-explore1/iceberg1/dev1/warehouse/datafinger/#1676369523149029.../ [1 objects]Operation completed over 1 objects.jiashuyue@cloudshell:~ (qijifei-test)$ gsutil ls gs://prod-datafinger-explore1/**gs://prod-datafinger-explore1/iceberg1/dev1/warehouse/使用启用版本控制的存储桶时,请注意 -r 选项会删除子目录中的所有对象版本。要仅删除子目录中每个对象的实时版本,请使用** 通配符。方法三:以下命令删除存储桶中所有对象的所有版本,然后删除存储桶,实践如下:jiashuyue@cloudshell:~ (qijifei-test)$ gsutil rm -r gs://prod-datafinger-explore1/Removing gs://prod-datafinger-explore1/iceberg1/#1676365891817520...Removing gs://prod-datafinger-explore1/iceberg1/dev1/#1676365913318713...Removing gs://prod-datafinger-explore1/iceberg1/dev1/warehouse/#1676369499390201.../ [3 objects]Operation completed over 3 objects.Removing gs://prod-datafinger-explore1/...jiashuyue@cloudshell:~ (qijifei-test)$ gsutil ls gs://prod-datafinger-explore1/**BucketNotFoundException: 404 gs://prod-datafinger-explore1 bucket does not exist.jiashuyue@cloudshell:~ (qijifei-test)$ gsutil ls gs://**gs://bucket.doge00.com/1.jpggs://bucket.doge00.com/j/gs://dengjun_01/0930/gs://dengjun_01/0931/gs://dengjun_01/ods/gs://gcf-v2-sources-548843172977-us-central1/cbw-dialogflow-test/gs://shuyue_test01/9.30-:shanghai:zhangtao-test-01.jpggs://shuyue_test01/:beijing:zhangtao-test-01.jpggs://shuyue_test01/:beijing:zhangtao-test-02.jpggs://shuyue_test01/:shanghai:zhangtao-test-01.jpggs://shuyue_test01/:shanghai:zhangtao-test-02.jpggs://shuyue_test01/9.30/gs://shuyue_test01/9.31/gs://shuyue_test01/zhangtao-test/gs://zhangtao/bitcoin.pdfgs://zhangtao/index.htmlgs://zhangtao/红帽子liunx6.0-s003.vmdkgs://zhangtao/test/gs://zhangtao-test/msg.loggs://zhangtao-test/funplus/gs://zicheng-test/20220815.txtgs://zicheng-test/msg.logBucket :prod-datafinger-explore1 不存在方法四:要从存储桶中移除所有对象及其版本而不删除存储桶,请使用以下-a选项,实践如下:jiashuyue@cloudshell:~ (qijifei-test)$ gsutil ls gs://prod-datafinger-explore1/**gs://prod-datafinger-explore1/iceberg/gs://prod-datafinger-explore1/iceberg/dev/gs://prod-datafinger-explore1/iceberg/dev/warehouse/gs://prod-datafinger-explore1/iceberg/dev/warehouse/datafinger/gs://prod-datafinger-explore1/iceberg/dev/warehouse/datafinger/flash_orderbooklv2/jiashuyue@cloudshell:~ (qijifei-test)$ gsutil rm -a gs://prod-datafinger-explore1/**Removing gs://prod-datafinger-explore1/iceberg/#1676372148035407...Removing gs://prod-datafinger-explore1/iceberg/dev/#1676372171846464...Removing gs://prod-datafinger-explore1/iceberg/dev/warehouse/#1676372195410327...Removing gs://prod-datafinger-explore1/iceberg/dev/warehouse/datafinger/#1676372212147087.../ [4 objects]==>NOTE: You are performing a sequence of gsutil operations that mayrun significantly faster if you instead use gsutil -m rm ... Pleasesee the -m section under "gsutil help options" for further informationabout when gsutil -m can be advantageous.Removing gs://prod-datafinger-explore1/iceberg/dev/warehouse/datafinger/flash_orderbooklv2/#1676372233382789.../ [5 objects]Operation completed over 5 objects.jiashuyue@cloudshell:~ (qijifei-test)$ gsutil ls gs://prod-datafinger-explore1/jiashuyue@cloudshell:~ (qijifei-test)$方法五:如果要删除大量对象,请使用gsutil -m启用多线程/多处理的选项,实践如下:jiashuyue@cloudshell:~ (qijifei-test)$ gsutil ls gs://prod-datafinger-explore1/**gs://prod-datafinger-explore1/iceberg/dev/warehouse/datafinger/flash_orderbooklv2/jiashuyue@cloudshell:~ (qijifei-test)$ gsutil -m rm -r gs://prod-datafinger-explore1/iceberg/dev/warehouse/datafinger/Removing gs://prod-datafinger-explore1/iceberg/dev/warehouse/datafinger/#1676372618773853...Removing gs://prod-datafinger-explore1/iceberg/dev/warehouse/datafinger/flash_orderbooklv2/#1676372634774226.../ [2/2 objects] 100% DoneOperation completed over 2 objects.jiashuyue@cloudshell:~ (qijifei-test)$ gsutil ls gs://prod-datafinger-explore1/**gs://prod-datafinger-explore1/iceberg/dev/warehouse/方法六:批量删除使用 通配符** 和前后同类命名(包含扩展名)的方式删除,实践如下:jiashuyue@cloudshell:~ (qijifei-test)$ gsutil ls gs://prod-datafinger-explore1/**gs://prod-datafinger-explore1/iceberg/dev/warehouse/datafinger/flash_orderbooklv2/jiashuyue@cloudshell:~ (qijifei-test)$ gsutil -m rm -r gs://prod-datafinger-explore1/iceberg/dev/warehouse/datafinger/Removing gs://prod-datafinger-explore1/iceberg/dev/warehouse/datafinger/#1676372618773853...Removing gs://prod-datafinger-explore1/iceberg/dev/warehouse/datafinger/flash_orderbooklv2/#1676372634774226.../ [2/2 objects] 100% DoneOperation completed over 2 objects.jiashuyue@cloudshell:~ (qijifei-test)$ gsutil ls gs://prod-datafinger-explore1/**gs://prod-datafinger-explore1/iceberg/dev/warehouse/-R 和 -r 选项是同义词。导致桶或桶子目录内容(它包含的所有对象和子目录)被递归删除。如果与仅限存储桶的 URL(如 gs://bucket)一起使用,则在删除对象和子目录后,gsutil 会删除存储桶。此选项暗含 -a 选项并删除所有对象版本。如果只想删除活动对象版本,请使用** 通配符 而不是 -r。-a 删除对象的所有版本。