버킷 이동 및 이름 변경

버킷을 만들 때 버킷의 이름, 지리적 위치, 버킷이 속한 프로젝트를 영구 정의합니다. 그러나 실질적으로 버킷을 이동하거나 이름을 변경하는 방법이 있습니다.

  • 이전 버킷에 데이터가 없는 경우 단순히 버킷을 삭제하고 새 이름으로 새 위치 또는 새 프로젝트에 다시 만들면 됩니다.

  • 이전 버킷에 데이터가 있는 경우 원하는 이름, 위치 및/또는 프로젝트로 새 버킷을 만들고, 이전 버킷에서 새 버킷으로 데이터를 복사하고, 이전 버킷과 내용을 삭제하면 됩니다. 아래 단계에서 이 과정을 설명합니다.

    새 버킷에 이전 버킷과 동일한 이름을 지정하려면 데이터를 두 번 이동해야 합니다. 즉, 최종 버킷에 해당 이름을 사용하기 위해 원래 버킷을 삭제할 수 있도록 중간 버킷에 데이터를 임시로 보관하면 됩니다.

버킷 간에 데이터를 이동하는 방법은 다음과 같습니다.

1단계) 새 버킷 만들기

콘솔

  1. Google Cloud Platform Console에서 Cloud Storage 브라우저를 엽니다.
    Cloud Storage 브라우저 열기
  2. 버킷 만들기를 클릭합니다.
  3. 버킷 이름 요구 사항에 따라 이름을 지정합니다.
  4. 버킷의 기본 저장소 클래스를 선택합니다. 버킷에 업로드된 모든 객체에 기본 저장소 등급이 기본적으로 할당됩니다.

    참고: 저장소 등급 비교를 클릭하여 저장소 등급과 월별 비용 견적을 비교할 수 있습니다.

  5. 버킷 데이터가 저장되는 위치를 선택합니다.
  6. 새 버킷

  7. 만들기를 클릭합니다.

gsutil

gsutil mb 명령어를 사용합니다. 여기서 [VALUES_IN_BRACKETS]를 적절한 값으로 바꿉니다.

gsutil mb gs://[BUCKET_NAME]/

버킷 생성을 더욱 세밀하게 제어하려면 다음 선택적 플래그를 설정합니다.

  • -p: 버킷을 연결할 프로젝트를 지정합니다.
  • -c: 버킷의 기본 스토리지 클래스를 지정합니다.
  • -l: 버킷 위치를 지정합니다.
  • -b: 버킷에 버킷 정책 전용 기능을 사용 설정합니다.

예를 들면 다음과 같습니다.

  gsutil mb -p [PROJECT_NAME] -c [STORAGE_CLASS] -l [BUCKET_LOCATION] -b on gs://[BUCKET_NAME]/

코드 샘플

C++

자세한 내용은 Cloud Storage C++ API 참조 문서를 참조하세요.

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name) {
  StatusOr<gcs::BucketMetadata> bucket_metadata =
      client.CreateBucket(bucket_name, gcs::BucketMetadata());

  if (!bucket_metadata) {
    throw std::runtime_error(bucket_metadata.status().message());
  }

  std::cout << "Bucket " << bucket_metadata->name() << " created."
            << "\nFull Metadata: " << *bucket_metadata << "\n";
}

C#

자세한 내용은 Cloud Storage C# API 참조 문서를 참조하세요.

private void CreateBucket(string bucketName)
{
    var storage = StorageClient.Create();
    storage.CreateBucket(s_projectId, bucketName);
    Console.WriteLine($"Created {bucketName}.");
}

Go

자세한 내용은 Cloud Storage Go API 참조 문서를 참조하세요.

bucket := client.Bucket(bucketName)
if err := bucket.Create(ctx, projectID, &storage.BucketAttrs{
	StorageClass: "COLDLINE",
	Location:     "asia",
}); err != nil {
	return err
}

자바

자세한 내용은 Cloud Storage 자바 API 참조 문서를 참조하세요.

Bucket bucket =
    storage.create(
        BucketInfo.newBuilder(bucketName)
            // See here for possible values: http://g.co/cloud/storage/docs/storage-classes
            .setStorageClass(StorageClass.COLDLINE)
            // Possible values: http://g.co/cloud/storage/docs/bucket-locations#location-mr
            .setLocation("asia")
            .build());

Node.js

자세한 내용은 Cloud Storage Node.js API 참조 문서를 참조하세요.

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

/**
 * TODO(developer): Uncomment the following line before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';

// Creates a new bucket in the Asia region with the coldline default storage
// class. Leave the second argument blank for default settings.
//
// For default values see: https://cloud.google.com/storage/docs/locations and
// https://cloud.google.com/storage/docs/storage-classes
await storage.createBucket(bucketName, {
  location: 'ASIA',
  storageClass: 'COLDLINE',
});

console.log(`Bucket ${bucketName} created.`);

PHP

자세한 내용은 Cloud Storage PHP API 참조 문서를 참조하세요.

use Google\Cloud\Storage\StorageClient;

/**
 * Create a Cloud Storage Bucket.
 *
 * @param string $bucketName name of the bucket to create.
 * @param string $options options for the new bucket.
 *
 * @return Google\Cloud\Storage\Bucket the newly created bucket.
 */
function create_bucket($bucketName, $options = [])
{
    $storage = new StorageClient();
    $bucket = $storage->createBucket($bucketName, $options);
    printf('Bucket created: %s' . PHP_EOL, $bucket->name());
}

Python

자세한 내용은 Cloud Storage Python API 참조 문서를 참조하세요.

def create_bucket(bucket_name):
    """Creates a new bucket."""
    storage_client = storage.Client()
    bucket = storage_client.create_bucket(bucket_name)
    print('Bucket {} created'.format(bucket.name))

Ruby

자세한 내용은 Cloud Storage Ruby API 참조 문서를 참조하세요.

# project_id    = "Your Google Cloud project ID"
# bucket_name   = "Name of Google Cloud Storage bucket to create"
# location      = "Location of where to create Cloud Storage bucket"
# storage_class = "Storage class of Cloud Storage bucket"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket  = storage.create_bucket bucket_name,
                                location:      location,
                                storage_class: storage_class

puts "Created bucket #{bucket.name} in #{location}" +
     " with #{storage_class} class"

REST API

JSON API

버킷의 기본값으로 설정할 수 있는 저장소 등급에 대한 자세한 내용은 저장소 등급을 참조하세요.

  1. OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. Playground에서 OAuth 사용자 인증 정보를 사용하도록 구성합니다.
  2. 다음 정보를 포함하는 .json 파일을 만듭니다. 여기서 [VALUES_IN_BRACKETS]를 적절한 값으로 바꿉니다.
  3. {
      "name": "[BUCKET_NAME]",
      "location": "[BUCKET_LOCATION]",
      "storageClass": "[STORAGE_CLASS]"
    }
  4. cURL을 사용하여 JSON API를 호출합니다. 여기서 [VALUES_IN_BRACKETS]를 적절한 값으로 바꿉니다.
    curl -X POST --data-binary @[JSON_FILE_NAME].json \
         -H "Authorization: Bearer [OAUTH2_TOKEN]" \
         -H "Content-Type: application/json" \
         "https://www.googleapis.com/storage/v1/b?project=[PROJECT_ID]"

XML API

버킷의 기본값으로 설정할 수 있는 저장소 등급에 대한 자세한 내용은 저장소 등급을 참조하세요.

  1. OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. Playground에서 OAuth 사용자 인증 정보를 사용하도록 구성합니다.
  2. 다음 정보를 포함하는 .xml 파일을 만듭니다. 여기서 [VALUES_IN_BRACKETS]를 적절한 값으로 바꿉니다.
  3. <CreateBucketConfiguration>
       <LocationConstraint>[BUCKET_LOCATION]</LocationConstraint>
       <StorageClass>[STORAGE_CLASS]</StorageClass>
    </CreateBucketConfiguration>
  4. cURL을 사용하여 XML API를 호출합니다. 여기서 [VALUES_IN_BRACKETS]를 적절한 값으로 바꿉니다.
    curl -X PUT --data-binary @[XML_FILE_NAME].xml \
         -H "Authorization: Bearer [OAUTH2_TOKEN]" \
         -H "x-goog-project-id: [PROJECT_ID]" \
         "https://storage.googleapis.com/[BUCKET_NAME]"

2단계) 이전 버킷의 파일을 새 버킷으로 복사

콘솔

Google Cloud Platform 콘솔 내에서 Cloud Storage 전송 서비스를 사용하여 Cloud Storage 버킷의 데이터를 다른 버킷에 복사합니다.

  1. Google Cloud Platform 콘솔에서 전송 페이지를 엽니다.

    전송 페이지 열기

  2. 전송 작업 만들기를 클릭합니다.
  3. 단계별 안내를 따르면서 각 단계를 마칠 때마다 계속을 클릭합니다.

    • 소스 선택: 선택 소스로 Google Cloud Storage 버킷을 사용하고 찾아보기를 클릭하여 파일을 내보낼 버킷을 찾아 선택합니다.

    • 대상 선택: 찾아보기를 클릭하여 파일을 가져올 버킷을 찾아 선택합니다.

      전송 완료 후 소스 객체 삭제 체크박스도 선택합니다.

    • 전송 구성: 이 섹션은 무시해도 됩니다.

  4. 단계별 안내를 완료한 후 만들기를 클릭합니다.

    그러면 이전 버킷의 파일이 새 버킷으로 복사되는 프로세스가 시작됩니다. 이 프로세스는 다소 시간이 걸릴 수 있지만 만들기를 클릭한 후에는 Google Cloud Platform 콘솔에서 나갈 수 있습니다.

전송 진행 상황을 확인하려면 Google Cloud Platform 콘솔에서 전송 페이지를 엽니다.

전송 페이지 열기

gsutil

  1. 최소 gsutil 4.12 이상 버전이 설치되어 있는지 확인합니다.
  2. gsutil cp 명령어를 -r 옵션과 함께 사용하여 소스 버킷의 모든 파일을 대상 버킷에 재귀적으로 복사합니다. [VALUES_IN_BRACKETS]를 적절한 값으로 바꿉니다.

    gsutil cp -r gs://[SOURCE_BUCKET]/* gs://[DESTINATION_BUCKET]

REST API

JSON API

JSON API의 rewrite 메소드를 사용하여 데이터를 제한된 크기 단위로 나눠 여러 요청에 걸쳐 복사합니다. 이렇게 할 경우 모든 데이터가 이동할 때까지 반복하여 rewrite 메소드를 호출해야 합니다.

  1. cURLJSON API rewrite 메소드를 사용하여 소스 버킷의 데이터를 대상 버킷에 복사합니다. 여기서 [VALUES_IN_BRACKETS]를 적절한 값으로 바꿉니다.
  2. curl -X POST -H "Authorization: Bearer [OAUTH2_TOKEN]" \
    -H "Content-Length: 0" \
    "https://www.googleapis.com/storage/v1/b/[SOURCE_BUCKET]/o/[OBJECT_NAME]/rewriteTo/b/[DESTINATION_BUCKET]/o/[OBJECT_NAME]"
    

    예를 들어 객체 크기가 10GB라면 이 요청에 대한 응답은 다음 예와 비슷합니다.

    {
    "kind": "storage#rewriteResponse",
    "totalBytesRewritten": 1048576,
    "objectSize": 10000000000,
    "done": false,
    "rewriteToken": [TOKEN_VALUE]
    }
    
  3. 이후 요청에서 rewriteToken을 사용하여 데이터를 계속 복사합니다. 여기에서 [VALUES_IN_BRACKETS]를 적절한 값으로 바꿉니다.
  4. curl -X POST -H "Authorization: Bearer [OAUTH2_TOKEN]" \
    -H "Content-Length: 0" \
    -d '{"rewriteToken": "[TOKEN_VALUE]"}' \
    "https://www.googleapis.com/storage/v1/b/[SOURCE_BUCKET]/o/[OBJECT_NAME]/rewriteTo/b/[DESTINATION_BUCKET]/o/[OBJECT_NAME]"
    

    모든 데이터가 복사되면 마지막 응답의 done 속성 값이 true가 되고, rewriteToken 속성이 없으며, 복사된 객체의 메타데이터가 resource 속성에 포함됩니다.

    {
    "kind": "storage#rewriteResponse",
    "totalBytesRewritten": 10000000000,
    "objectSize": 10000000000,
    "done": true,
    "resource": objects Resource
    }
    

3단계) 이전 버킷에서 파일 삭제

콘솔

이전 버킷에서 파일을 삭제하기 위해 특별히 해야 할 일은 없습니다. '전송 완료 후 소스 객체 삭제' 체크박스를 선택했다면 전송 서비스를 사용하여 파일을 복사할 때 이전 파일이 자동으로 삭제됩니다.

gsutil

gsutil rm 명령어를 -r 옵션과 함께 사용하여 소스 버킷의 모든 파일과 소스 버킷 자체를 재귀적으로 삭제합니다. [VALUES_IN_BRACKETS]를 적절한 값으로 바꿉니다.

gsutil rm -r gs://[SOURCE_BUCKET]

또는 파일을 삭제하지만 소스 버킷은 유지하려면 다음을 따르세요.

gsutil rm -a gs://[SOURCE_BUCKET]/**

REST API

JSON API

  1. cURL 및 JSON API delete 메소드를 사용하여 다음 명령어로 데이터의 원본 버전을 삭제합니다. 여기서 [VALUES_IN_BRACKETS]를 적절한 값으로 바꿉니다.
    curl -X DELETE -H "Authorization: Bearer [OAUTH2_TOKEN]" \
    https://www.googleapis.com/storage/v1/b/[SOURCE_BUCKET]/o/[OBJECT_NAME]

성공하면 메소드는 빈 응답을 반환합니다.

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.