이 페이지에서는 Cloud Storage의 버킷에서 객체를 복사하고 객체의 이름을 변경하거나 버킷 간에 객체를 이동하는 방법을 설명합니다.
Cloud Storage의 일부 도구에서는 객체 이동 또는 이름 변경이 고유한 한 가지 작업으로 보이지만 실제로는 원본 객체 복사와 삭제라는 두 가지 작업이 수행됩니다. 왜냐하면 객체는 immutable입니다.
객체 복사
필요 역할
객체를 복사하는 데 필요한 권한을 얻으려면 관리자에게 소스 버킷에 대한 스토리지 객체 뷰어(roles/storage.objectViewer
) 역할과 대상 버킷에 대한 스토리지 객체 사용자(roles/storage.objectUser
) 역할을 부여해 달라고 요청하세요. Google Cloud 콘솔을 사용하려는 경우 관리자에게 스토리지 객체 뷰어 및 스토리지 객체 사용자 역할 외에도 소스 및 대상 버킷이 포함된 프로젝트에 대한 '뷰어' 기본 역할을 부여해 달라고 요청하세요.
이러한 역할에는 객체를 복사하는 데 필요한 다음 권한이 포함됩니다.
- 소스 버킷에 대한
storage.objects.get
- 대상 버킷에 대한
storage.objects.create
- 대상 버킷에 대한
storage.objects.delete
(객체를 덮어쓰는 경우에만 필요)
Google Cloud 콘솔을 사용할 때는 다음 권한도 있어야 합니다.
- 소스 및 대상 버킷에 대한
storage.objects.list
- 소스 및 대상 버킷이 포함된 프로젝트에 대한
storage.buckets.list
복사하려는 객체에 사용 설정된 기능이 있는 경우 다른 역할이 필요할 수 있습니다. 예를 들어 복사하려는 객체에 보관하려는 객체 보관 구성이 있는 경우 스토리지 객체 관리자(roles/storage.objectAdmin
) 역할과 같이 storage.objects.setRetention
권한이 포함된 대상 버킷의 역할이 필요합니다.
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
버킷에 대한 역할 부여는 버킷에 IAM 사용을 참조하세요.
프로젝트에 대한 역할을 부여하는 방법은 프로젝트 액세스 관리를 참조하세요.
Cloud Storage 버킷 중 하나에서 객체를 복사하려면 다음 안내를 따르세요.
- 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
자세한 내용은 Cloud Storage C++ API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
자세한 내용은 Cloud Storage C# API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
자세한 내용은 Cloud Storage Go API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
자세한 내용은 Cloud Storage Java API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
자세한 내용은 Cloud Storage Node.js API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
자세한 내용은 Cloud Storage PHP API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
자세한 내용은 Cloud Storage Python API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
자세한 내용은 Cloud Storage Ruby API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
Authorization
헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.또는 OAuth 2.0 Playground를 사용하여 액세스 토큰을 만들고
Authorization
헤더에 포함할 수 있습니다.cURL
을 사용하여POST
객체 요청으로 JSON API를 호출합니다.curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-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 "각 항목의 의미는 다음과 같습니다.
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 $(gcloud auth print-access-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 }
Authorization
헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.또는 OAuth 2.0 Playground를 사용하여 액세스 토큰을 만들고
Authorization
헤더에 포함할 수 있습니다.cURL
을 사용하여PUT
객체 요청으로 XML API를 호출합니다.curl -X PUT \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-copy-source:
SOURCE_BUCKET_NAME /SOURCE_OBJECT_NAME " \ "https://storage.googleapis.com/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
은 객체의 사본에 지정할 URL로 인코딩된 이름입니다. 예를 들면shiba.png
입니다.
객체 이동 또는 이름 변경
필요 역할
객체를 이동하거나 이름을 바꾸는 데 필요한 권한을 얻으려면 관리자에게 소스 버킷과 대상 버킷 모두에 스토리지 객체 사용자(roles/storage.objectUser
) 역할을 부여해 달라고 요청하세요. Google Cloud 콘솔을 사용하려면 관리자에게 스토리지 객체 사용자 역할 외에도 소스 및 대상 버킷이 포함된 프로젝트에 대한 '뷰어' 기본 역할을 부여해 달라고 요청하세요.
이러한 역할에는 객체를 이동하거나 이름을 바꾸는 데 필요한 다음 권한이 포함됩니다.
- 소스 버킷에 대한
storage.objects.delete
(객체를 덮어쓰는 경우 대상 버킷에도 필요) - 소스 버킷에 대한
storage.objects.get
- 대상 버킷에 대한
storage.objects.create
Google Cloud 콘솔을 사용할 때는 다음 권한도 있어야 합니다.
- 소스 및 대상 버킷에 대한
storage.objects.list
- 소스 및 대상 버킷이 포함된 프로젝트에 대한
storage.buckets.list
이동하거나 이름을 바꾸려는 객체에 사용 설정된 기능이 있는 경우 다른 역할이 필요할 수 있습니다. 예를 들어 이동하려는 객체에 객체 보관 구성이 있는 경우 스토리지 객체 관리자(roles/storage.objectAdmin
) 역할과 같이 storage.objects.setRetention
권한이 포함된 대상 버킷의 역할이 필요합니다.
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
버킷에 대한 역할 부여는 버킷에 IAM 사용을 참조하세요.
프로젝트에 대한 역할을 부여하는 방법은 프로젝트 액세스 관리를 참조하세요.
Cloud Storage의 객체를 버킷 간에 이동하거나 버킷 내에서 객체 이름을 바꾸려면 다음 안내를 따르세요.
- 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
자세한 내용은 Cloud Storage C++ API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
자세한 내용은 Cloud Storage C# API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
자세한 내용은 Cloud Storage Go API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
자세한 내용은 Cloud Storage Java API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
자세한 내용은 Cloud Storage Node.js API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
자세한 내용은 Cloud Storage PHP API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
자세한 내용은 Cloud Storage Python API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
자세한 내용은 Cloud Storage Ruby API 참고 문서를 확인하세요.
Cloud Storage에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다. 자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
JSON API를 직접 사용하여 객체를 이동하거나 이름을 바꾸려면 먼저 원하는 속성을 가진 객체의 사본을 만든 다음 원본 객체를 삭제합니다.
XML API를 직접 사용하여 객체를 이동하거나 이름을 바꾸려면 먼저 원하는 속성을 가진 객체의 사본을 만든 다음 원본 객체를 삭제합니다.
Storage Transfer Service를 사용하여 버킷 간에 데이터를 1TB 이상 이동하는 것이 좋습니다.
다음 단계
- 객체의 스토리지 클래스 변경
- 객체의 메타데이터 수정
- 객체 및 버킷을 공개적으로 액세스할 수 있도록 설정
- 객체 이름 지정 요구사항 자세히 알아보기
- 경합 상태 방지를 위한 요청 전제조건 사용 방법 알아보기