(相關資料圖)

作者:MeshCloud脈時云CSM 賈舒悅一、引言Cloud Storage 是一項用于將用戶的對象存儲在 Google Cloud 中的服務。對象是由任意格式的文件組成的不可變的數據段。對象存儲在稱為存儲桶的容器中。所有存儲桶都與項目相關聯,可以在組織下對項目進行分組。Google Cloud 中的每個項目、存儲桶和對象都屬于 Google Cloud 資源,Compute Engine 實例等也屬于資源。創(chuàng)建項目后,可以創(chuàng)建 Cloud Storage 存儲分區(qū),上傳對象至存儲分區(qū),以及從存儲分區(qū)中下載對象。還可以授予權限,使數據可供指定的主帳號訪問;或者針對某些用例(例如托管網站),數據可供公共互聯網上的所有人訪問。二、整體架構Cloud Storage 結構應用說明:組織:公司名為 Example Inc.,創(chuàng)建了一個名為 的 Google Cloud 組織exampleinc.org。項目:Example Inc. 正在構建多個應用程序,每個應用程序都與一個項目相關聯。每個項目都有自己的一組 Cloud Storage API 以及其他資源。Bucket:每個項目可以包含多個桶,這些桶是存儲對象的容器。例如,可以photos為應用程序生成的所有圖像文件創(chuàng)建一個存儲桶和一個單獨的videos存儲桶。對象:一個單獨的文件,例如名為puppy.png.三、用戶場景GCS 使用中,用戶在 Bucket 下有大批量文件夾,且文件夾下有按日期分類的文件夾和文件,用戶有定期刪除需求 :用戶問題:GCS路徑gs://prod-datafinger-explore/iceberg/dev/warehouse/datafinger/flash_orderbooklv2 指定目錄批量刪除四、準備工作預置環(huán)境:確認網絡環(huán)境正常;確認擁有適當的 IAM 權限;登陸 Google Cloud Console -->進入 Cloud Storage -->Google Cloud Shell環(huán)境復現:創(chuàng)建路徑下的相關文件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 刪除對象的所有版本。