이 페이지에서는 Cloud Storage의 버킷에서 객체를 복사하고 객체의 이름을 변경하거나 버킷 간에 객체를 이동하는 방법을 설명합니다.
Cloud Storage의 일부 도구에서는 객체 이동 또는 이름 변경이 고유한 한 가지 작업으로 보이지만 실제로는 원본 객체 복사와 삭제라는 두 가지 작업이 수행됩니다. 왜냐하면 객체는 변경할 수 없기 때문입니다.
필수 권한
콘솔
Google Cloud 콘솔을 사용하여 이 가이드를 완료하려면 적절한 IAM 권한이 있어야 합니다. 액세스하려는 버킷이 사용자가 만든 프로젝트에 존재할 경우 프로젝트 소유자가 필요한 권한이 포함된 역할을 사용자에게 부여해야 할 수 있습니다.
특정 작업에 필요한 권한 목록은 Google Cloud 콘솔에 대한 IAM 권한을 참조하세요.
관련 역할 목록은 Cloud Storage 역할을 참조하세요. 또는 특별히 제한된 권한이 있는 커스텀 역할을 만들 수 있습니다.
명령줄
명령줄 유틸리티를 사용하여 이 가이드를 완료하려면 적절한 IAM 권한이 있어야 합니다. 액세스하려는 버킷이 사용자가 만든 프로젝트에 존재할 경우 프로젝트 소유자가 필요한 권한이 포함된 역할을 사용자에게 부여해야 할 수 있습니다.
특정 작업에 필요한 권한 목록은 gcloud storage
명령어에 대한 IAM 권한을 참조하세요.
관련 역할 목록은 Cloud Storage 역할을 참조하세요. 또는 특별히 제한된 권한이 있는 커스텀 역할을 만들 수 있습니다.
클라이언트 라이브러리
Cloud Storage 클라이언트 라이브러리를 사용하여 이 가이드를 완료하려면 적절한 IAM 권한이 있어야 합니다. 액세스하려는 버킷이 사용자가 만든 프로젝트에 존재할 경우 프로젝트 소유자가 필요한 권한이 포함된 역할을 사용자에게 부여해야 할 수 있습니다.
달리 명시되지 않는 한 클라이언트 라이브러리 요청은 JSON API를 통해 수행되며 JSON 메서드에 대한 IAM 권한에 나열된 권한이 필요합니다. 클라이언트 라이브러리를 사용하여 요청할 때 호출되는 JSON API 메서드를 확인하려면 원시 요청을 로깅하세요.
관련 IAM 역할 목록은 Cloud Storage 역할을 참조하세요. 또는 특별히 제한된 권한이 있는 커스텀 역할을 만들 수 있습니다.
REST API
JSON API
JSON API를 사용하여 이 가이드를 완료하려면 적절한 IAM 권한이 있어야 합니다. 액세스하려는 버킷이 사용자가 만든 프로젝트에 존재할 경우 프로젝트 소유자가 필요한 권한이 포함된 역할을 사용자에게 부여해야 할 수 있습니다.
특정 작업에 필요한 권한 목록은 JSON 메서드에 대한 IAM 권한을 참조하세요.
관련 역할 목록은 Cloud Storage 역할을 참조하세요. 또는 특별히 제한된 권한이 있는 커스텀 역할을 만들 수 있습니다.
객체 복사
Cloud Storage 버킷 중 하나에서 객체를 복사하려면 다음 안내를 따르세요.
Console
- Google Cloud 콘솔에서 Cloud Storage 버킷 페이지로 이동합니다.
버킷 목록에서 복사하려는 객체가 포함된 버킷 이름을 클릭합니다.
객체 탭이 선택된 상태로 버킷 세부정보 페이지가 열립니다.
객체(폴더에 있을 수 있음)로 이동합니다.
객체와 연결된 객체 오버플로 메뉴(more_vert)를 클릭합니다.
복사를 클릭합니다.
객체 복사 창이 나타납니다.
대상 필드에 대상 버킷의 이름과 복사된 객체의 이름을 입력합니다.
또는 둘러보기를 클릭하여 대상을 선택할 수 있지만 둘러보기 옵션은 현재 프로젝트의 버킷으로 제한됩니다.
복사를 클릭합니다.
Google Cloud 콘솔에서 실패한 Cloud Storage 작업에 대한 자세한 오류 정보를 가져오는 방법은 문제 해결을 참조하세요.
명령줄
gcloud storage cp
명령어를 사용합니다.
gcloud storage cp gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/NAME_OF_COPY
각 항목의 의미는 다음과 같습니다.
SOURCE_BUCKET_NAME
은 복사할 객체가 포함된 버킷의 이름입니다. 예를 들면my-bucket
입니다.SOURCE_OBJECT_NAME
은 복사할 객체의 이름입니다. 예를 들면pets/dog.png
입니다.DESTINATION_BUCKET_NAME
은 객체를 복사할 버킷의 이름입니다. 예를 들면another-bucket
입니다.NAME_OF_COPY
는 객체의 사본에 지정할 이름입니다. 예를 들면shiba.png
입니다.
성공하면 다음 예시와 비슷한 응답이 표시됩니다.
Copying gs://example-bucket/file.txt to gs://other-bucket/file-copy.txt Completed files 1/1 | 164.3kiB/164.3kiB
클라이언트 라이브러리
C++
자세한 내용은 Cloud Storage C++ API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
C#
자세한 내용은 Cloud Storage C# API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Go
자세한 내용은 Cloud Storage Go API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Java
자세한 내용은 Cloud Storage Java API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
자세한 내용은 Cloud Storage Node.js API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
PHP
자세한 내용은 Cloud Storage PHP API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
자세한 내용은 Cloud Storage Python API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Ruby
자세한 내용은 Cloud Storage Ruby API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
REST API
JSON API
- OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. 자체 OAuth 사용자 인증 정보를 사용하도록 Playground를 구성합니다. 자세한 내용은 API 인증을 참조하세요.
cURL
을 사용하여POST
객체 요청으로 JSON API를 호출합니다.curl -X POST \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Length: 0" \ "https://storage.googleapis.com/storage/v1/b/SOURCE_BUCKET_NAME/o/SOURCE_OBJECT_NAME/rewriteTo/b/DESTINATION_BUCKET_NAME/o/NAME_OF_COPY"
각 항목의 의미는 다음과 같습니다.
OAUTH2_TOKEN
은 1단계에서 생성한 액세스 토큰의 이름입니다.SOURCE_BUCKET_NAME
은 복사할 객체가 포함된 버킷의 이름입니다. 예를 들면my-bucket
입니다.SOURCE_OBJECT_NAME
은 복사할 객체의 URL 인코딩 이름입니다. 예를 들어pets/dog.png
는pets%2Fdog.png
로 URL 인코딩됩니다.DESTINATION_BUCKET_NAME
은 객체를 복사할 버킷의 이름입니다. 예를 들면another-bucket
입니다.NAME_OF_COPY
은 객체의 사본에 지정할 URL로 인코딩된 이름입니다. 예를 들면shiba.png
입니다.
rewrite
메서드는 제한된 크기의 청크로 데이터를 복사하므로 특히 큰 객체의 경우 복사본에 여러 개의 요청이 필요할 수 있습니다.예를 들어
rewrite
요청에 다음과 같은 응답이 반환되면 추가rewrite
요청을 수행해야 한다는 의미입니다.{ "kind": "storage#rewriteResponse", "totalBytesRewritten": 1048576, "objectSize": 10000000000, "done": false, "rewriteToken": TOKEN_VALUE }
이후 요청에서
rewriteToken
을 사용하여 데이터를 계속 복사합니다.curl -X POST \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Length: 0" \ -d '{"rewriteToken": "TOKEN_VALUE"}' \ "https://storage.googleapis.com/storage/v1/b/SOURCE_BUCKET_NAME/o/SOURCE_OBJECT_NAME/rewriteTo/b/DESTINATION_BUCKET_NAME/o/NAME_OF_COPY"
각 항목의 의미는 다음과 같습니다.
TOKEN_VALUE
는 이전 요청에서 반환된rewriteToken
값입니다.- 다른 모든 값은 이전 요청에서 사용된 값과 일치합니다.
객체가 완전히 복사되면 마지막 응답에
true
(으)로 설정된done
속성이 있고rewriteToken
속성은 없으며resource
속성에 복사본의 메타데이터가 포함됩니다.{ "kind": "storage#rewriteResponse", "totalBytesRewritten": 10000000000, "objectSize": 10000000000, "done": true, "resource": objects Resource }
XML API
- OAuth 2.0 Playground에서 승인 액세스 토큰을 가져옵니다. 자체 OAuth 사용자 인증 정보를 사용하도록 Playground를 구성합니다. 자세한 내용은 API 인증을 참조하세요.
cURL
을 사용하여PUT
객체 요청으로 XML API를 호출합니다.curl -X PUT \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "x-goog-copy-source: SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME" \ "https://storage.googleapis.com/DESTINATION_BUCKET_NAME/NAME_OF_COPY"
각 항목의 의미는 다음과 같습니다.
OAUTH2_TOKEN
은 1단계에서 생성한 액세스 토큰의 이름입니다.SOURCE_BUCKET_NAME
은 복사할 객체가 포함된 버킷의 이름입니다. 예를 들면my-bucket
입니다.SOURCE_OBJECT_NAME
은 복사할 객체의 이름입니다. 예를 들면pets/dog.png
입니다.DESTINATION_BUCKET_NAME
은 객체를 복사할 버킷의 이름입니다. 예를 들면another-bucket
입니다.NAME_OF_COPY
은 객체의 사본에 지정할 URL로 인코딩된 이름입니다. 예를 들면shiba.png
입니다.
객체 이동 또는 이름 변경
Cloud Storage의 객체를 버킷 간에 이동하거나 버킷 내에서 객체 이름을 바꾸려면 다음 안내를 따르세요.
Console
- Google Cloud 콘솔에서 Cloud Storage 버킷 페이지로 이동합니다.
버킷 목록에서 이동하거나 이름을 바꿀 객체가 포함된 버킷의 이름을 클릭합니다.
객체 탭이 선택된 상태로 버킷 세부정보 페이지가 열립니다.
객체(폴더에 있을 수 있음)로 이동합니다.
객체와 연결된 객체 오버플로 메뉴(more_vert)를 클릭합니다.
동일한 버킷에 객체 이름을 새로 지정하려면 이름 바꾸기를 클릭합니다.
나타나는 오버레이 창에서 객체의 새 이름을 입력합니다.
이름 바꾸기를 클릭합니다.
객체를 다른 버킷으로 이동하려면 이동을 클릭합니다.
오버레이 창이 나타나면 찾아보기를 클릭합니다.
이동할 객체의 대상 위치를 선택합니다.
선택을 클릭합니다.
이동을 클릭합니다.
Google Cloud 콘솔에서 실패한 Cloud Storage 작업에 대한 자세한 오류 정보를 가져오는 방법은 문제 해결을 참조하세요.
명령줄
gcloud storage mv
명령어를 사용합니다.
gcloud storage mv gs://SOURCE_BUCKET_NAME/SOURCE_OBJECT_NAME gs://DESTINATION_BUCKET_NAME/DESTINATION_OBJECT_NAME
각 항목의 의미는 다음과 같습니다.
SOURCE_BUCKET_NAME
은 이동하거나 이름을 변경할 객체가 포함된 버킷의 이름입니다. 예를 들면my-bucket
입니다.SOURCE_OBJECT_NAME
은 이동하거나 이름을 바꿀 객체의 이름입니다. 예를 들면pets/dog.png
입니다.DESTINATION_BUCKET_NAME
은 이동하거나 이름이 변경된 객체를 저장할 버킷의 이름입니다. 예를 들면another-bucket
입니다.DESTINATION_OBJECT_NAME
은 이동하거나 이름이 변경된 객체에 지정할 이름입니다. 예를 들면shiba.png
입니다.
성공하면 다음 예시와 비슷한 응답이 표시됩니다.
Copying gs://example-bucket/old-file.txt to gs://new-bucket/new-file.txt Removing gs://example-bucket/old-file.txt... Completed files 1/1 | 164.3kiB/164.3kiB
클라이언트 라이브러리
C++
자세한 내용은 Cloud Storage C++ API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
C#
자세한 내용은 Cloud Storage C# API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Go
자세한 내용은 Cloud Storage Go API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Java
자세한 내용은 Cloud Storage Java API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Node.js
자세한 내용은 Cloud Storage Node.js API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
PHP
자세한 내용은 Cloud Storage PHP API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Python
자세한 내용은 Cloud Storage Python API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Ruby
자세한 내용은 Cloud Storage Ruby API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
REST API
Storage Transfer Service를 사용하여 버킷 간에 데이터를 1TB 이상 이동하는 것이 좋습니다.
다음 단계
- 객체의 스토리지 클래스 변경
- 객체의 메타데이터 수정
- 객체 및 버킷을 공개적으로 액세스할 수 있도록 설정
- 객체 이름 지정 요구사항 자세히 알아보기
- 경합 상태 방지를 위한 요청 전제조건 사용 방법 알아보기