GCS 버킷에서 큰 폴더를 삭제하는 빠른 방법 (Fast way to delete big folder on GCS bucket)


문제 설명

GCS 버킷에서 큰 폴더를 삭제하는 빠른 방법 (Fast way to delete big folder on GCS bucket)

저에게는 몇 테라바이트의 데이터가 있는 여러 하위 디렉토리가 있는 매우 큰 GCS 버킷(몇 TB)이 있습니다.

이 폴더 중 일부를 삭제하고 싶습니다.

Cloud Shell에서 gsutil을 사용하려고 했지만 시간이 오래 걸립니다.

참고로 사용 중인 명령은 다음과 같습니다.

gsutil ‑m rm ‑r "gs://BUCKET_NAME/FOLDER"

이 질문을 보고 사용할 수 있다고 생각했지만 폴더 이름으로 필터링할 수 없는 것 같고 필터링할 수 없습니다. 폴더에 혼합된 콘텐츠가 있기 때문에 다른 방법으로 사용할 수 있습니다.

지금까지 나의 마지막 수단은 삭제하려는 폴더가 "오래된" 폴더가 될 때까지 기다리는 것입니다.


참조 솔루션

방법 1:

It's just going to take a long time; you have to issue a DELETE request for each object with the prefix FOLDER/.

GCS doesn't have the concept of "folders". Object names can share a common prefix, but they're all in a flat namespace. For example, if you have these three objects:

  • /a/b/c/1.txt
  • /a/b/c/2.txt
  • /a/b/c/3.txt

...then you don't actually have folders named a, b, or c. Once you deleted those three objects, the "folders" (i.e. the prefix that they shared) would no longer appear when you listed objects in your bucket.

See the docs for more details:

https://cloud.google.com/storage/docs/gsutil/addlhelp/HowSubdirectoriesWork

방법 2:

Creating a lifecycle rule with a matchesPrefix as the folder name is the best way to remove large folders in a bucket. It does take up to 24 hours to have an effect though. https://cloud.google.com/storage/docs/lifecycle#matchesprefix‑suffix

(by caarlos0mhouglumNealvs)

참조 문서

  1. Fast way to delete big folder on GCS bucket (CC BY‑SA 2.5/3.0/4.0)

#google-cloud-platform #google-cloud-storage #gsutil






관련 질문

Google API용 Android 키 사용 제한 (Restricting usage for an Android key for a Google API)

GCS 버킷에서 큰 폴더를 삭제하는 빠른 방법 (Fast way to delete big folder on GCS bucket)

Terraform 코드와 충돌하는 "소유자"에 의한 GCP 콘솔/클라우드 셸 변경을 어떻게 방지할 수 있습니까? (How can you prevent GCP console/cloud shell changes by "Owners" conflicting with the terraform code?)

서비스 계정으로 인증할 때 project_id를 명시적으로 설정하는 것을 피할 수 있습니까? (Is it possible to avoid setting project_id explicitly when authing with service account?)

Wordpress가 새 PHP 버전을 감지하지 못합니다 (Wordpress doesn't detect new php version)

카운터를 사용하여 테이블에 삽입된 레코드 수를 계산하고 python 스크립트를 사용하여 실행되는 각 작업에서 삽입된 레코드 수를 인쇄하는 방법 (How to count number of inserted records in table using counter and print the count of inserted record in each job run using python script)

Google Cloud 자연어 가져오기 오류 (Google Cloud Natural Language Import Error)

gcloud는 전체 컨테이너를 다시 빌드하지만 Dockerfile은 동일하고 스크립트만 변경됨 (gcloud rebuilds complete container but Dockerfile is the same, only the script has changed)

GCP를 통한 Kubernetes 대시보드 (Kubernetes dashboard via GCP)

Firebase 실시간 데이터베이스 키 없이 하위 레코드를 얻는 방법 (Firebase realtime database how to get a child record without the key)

Google Cloud Function / MongoDB VM 인스턴스 통신 (Google Cloud Function / MongoDB VM instance communication)

Google Artifact Registry에서 도커 풀 수를 추적할 수 있습니까? (Is it possible track the number of docker pulls in Google Artifact Registry?)







코멘트