Todos os produtos
Search
Central de documentação

Object Storage Service:CopyObject

Última atualização: Jul 03, 2026

Use a operação CopyObject para copiar um objeto entre buckets iguais ou diferentes na mesma região.

Versionamento

Por padrão, x-oss-copy-source copia a versão atual de um objeto. Para copiar uma versão específica, inclua o ID da versão em x-oss-copy-source. Se a versão de origem especificada for um marcador de exclusão, o OSS retornará um erro 404, indicando que o objeto não existe.

Restaure uma versão anterior de um objeto como a versão atual copiando-a para o mesmo bucket. O OSS definirá essa versão anterior como a versão atual.

Se o versionamento estiver ativado no bucket de destino, o OSS gerará automaticamente um ID de versão exclusivo para o novo objeto copiado. Esse ID de versão é retornado no cabeçalho de resposta x-oss-version-id. Caso o versionamento esteja desativado ou suspenso no bucket de destino, o OSS gerará uma versão com ID nulo para o novo objeto. Essa nova versão substituirá qualquer versão existente que possua um ID de versão nulo.

Limites

  • Limites de tamanho do objeto

    • Quando os buckets de origem e destino são iguais e você não altera o método de criptografia nem a classe de armazenamento do objeto durante a cópia, o objeto pode ter mais de 5 GB.

    • Se os buckets de origem e destino forem diferentes e não houver alteração no método de criptografia ou na classe de armazenamento durante a cópia, o tamanho máximo permitido será de 5 GB.

    • Ao modificar o método de criptografia ou a classe de armazenamento do objeto durante a operação de cópia, o limite de tamanho será de 1 GB. Para objetos maiores que 1 GB nessas condições, utilize a operação UploadPartCopy.

  • Permissões

    As operações CopyObject e UploadPartCopy exigem permissões de leitura no objeto de origem.

  • Ao usar a operação CopyObject em um bucket com versionamento desativado, onde os objetos de origem e destino são idênticos:

    • Sem alterações no método de criptografia ou na classe de armazenamento, o OSS modifica apenas os metadados do objeto, sem copiar seu conteúdo.

    • Caso haja mudança no método de criptografia ou na classe de armazenamento, o OSS atualiza os metadados e também copia o conteúdo do objeto.

  • Objeto de origem é um link simbólico

    Ao executar a operação CopyObject em um link simbólico, apenas o link é copiado. O conteúdo do arquivo referenciado pelo link simbólico não é transferido.

  • Namespace hierárquico ativado no bucket

    Não é possível copiar diretórios se o namespace hierárquico estiver ativado para o bucket.

  • Prevenção de conflitos de sobrescrita de arquivos

    Se você ativar a opção Prevent File Overwrite, não será possível usar o CopyObject para alterar a classe de armazenamento de um arquivo, como de Standard para Archive Storage. Nesse caso, prefira a conversão automática por ciclo de vida.

Permissões

Uma conta Alibaba Cloud possui permissões totais por padrão. Usuários RAM ou funções RAM vinculados a essa conta não têm nenhuma permissão inicialmente. A conta Alibaba Cloud ou o administrador deve conceder as permissões operacionais necessárias por meio de políticas do RAM ou Bucket Policy.

API

Action

Descrição

CopyObject

oss:GetObject

Copia objetos dentro de um bucket ou entre buckets na mesma região.

oss:PutObject

oss:GetObjectVersion

Necessária também quando se especifica a versão do objeto de origem via versionId.

oss:GetObjectTagging

Obrigatórias ao copiar tags de objetos por meio de x-oss-tagging.

oss:PutObjectTagging

oss:GetObjectVersionTagging

Também requerida caso você especifique as tags de uma versão específica do objeto de origem usando versionId.

kms:GenerateDataKey

Essas duas permissões são obrigatórias quando os metadados do objeto de destino contêm X-Oss-Server-Side-Encryption: KMS durante a cópia.

kms:Decrypt

Faturamento

  • Cada chamada à operação CopyObject conta como uma requisição PUT para o bucket de destino.

  • A operação CopyObject aumenta o uso de armazenamento do bucket de destino.

  • Alterar a classe de armazenamento de um objeto com a operação CopyObject envolve sobrescrita de dados. Por exemplo, se um objeto Infrequent Access (IA) for sobrescrito e tiver sua classe alterada para Standard dentro de 10 dias após a criação, haverá cobrança referente a 20 dias de armazenamento IA, pois a duração mínima não foi atingida. Para mais detalhes sobre taxas de armazenamento, consulte Taxas de armazenamento.

  • Ao chamar a operação CopyObject, se o objeto de origem for do tipo IA, incorre-se em taxa de recuperação de dados de armazenamento IA. Se o objeto de origem for Archive Storage, ainda não restaurado via RestoreObject, e o acesso em tempo real a objetos Archive estiver ativado no bucket, aplica-se a taxa de recuperação para acesso em tempo real. Essas cobranças recaem sobre a conta proprietária do bucket de origem. Consulte Taxas de processamento de dados para mais informações sobre faturamento.

Sintaxe da requisição

PUT /DestObjectName HTTP/1.1
Host: DestBucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue
x-oss-copy-source: /SourceBucketName/SourceObjectName

Cabeçalhos da requisição

Todos os cabeçalhos de requisição para uma operação de cópia começam com x-oss-. Portanto, adicione todos esses cabeçalhos à string de assinatura.

Nome

Tipo

Obrigatório

Valor

Descrição

x-oss-forbid-overwrite

String

Não

true

Define se um objeto de destino existente com o mesmo nome deve ser sobrescrito. Se o versionamento estiver ativado ou suspenso no bucket de destino, o cabeçalho de requisição x-oss-forbid-overwrite torna-se inválido, permitindo a sobrescrita de objetos com nomes iguais.

  • Se x-oss-forbid-overwrite não for especificado ou estiver definido como false, a sobrescrita do objeto de destino com o mesmo nome é permitida.

  • Definindo x-oss-forbid-overwrite como true, impede-se a sobrescrita de um objeto de destino existente com o mesmo nome.

Configurar o cabeçalho de requisição x-oss-forbid-overwrite reduz o desempenho de processamento QPS. Para utilizar esse cabeçalho em muitas operações (QPS > 1000), entre em contato com o suporte técnico para evitar impactos no seu negócio.

Valor padrão: false

x-oss-copy-source

String

Sim

/oss-example/oss.jpg

Especifica o endereço de origem para a operação de cópia.

Valor padrão: nenhum

x-oss-copy-source-if-match

String

Não

5B3C1A2E053D763E1B002CC607C5****

A operação de cópia ocorre e retorna 200 OK somente se o ETag do objeto de origem corresponder ao ETag fornecido.

Valor padrão: nenhum

x-oss-copy-source-if-none-match

String

Não

5B3C1A2E053D763E1B002CC607C5****

A cópia é executada com retorno 200 OK apenas quando o ETag do objeto de origem diferir do ETag informado.

Valor padrão: nenhum

x-oss-copy-source-if-unmodified-since

String

Não

Mon, 11 May 2020 08:16:23 GMT

O objeto é copiado e 200 OK é retornado apenas se a hora especificada for igual ou posterior à hora real de modificação do objeto.

Valor padrão: nenhum

x-oss-copy-source-if-modified-since

String

Não

Mon, 11 May 2020 08:16:23 GMT

A cópia do objeto acontece e retorna 200 OK somente se a data informada for anterior à data real de modificação do objeto.

Valor padrão: nenhum

x-oss-metadata-directive

String

Não

COPY

Determina como definir os metadados do objeto de destino.

  • COPY (padrão): Copia os metadados do objeto de origem para o objeto de destino.

    O OSS não copia a propriedade x-oss-server-side-encryption do objeto de origem para o destino. O método de criptografia server-side do objeto de destino depende da especificação de x-oss-server-side-encryption na operação de cópia.

  • REPLACE: Ignora os metadados do objeto de origem e utiliza os metadados especificados na requisição.

Importante

Se os objetos de origem e destino forem idênticos e o versionamento não estiver ativado, os metadados do objeto de origem serão ignorados independentemente do valor de x-oss-metadata-directive. O objeto de destino usará os metadados definidos na requisição.

x-oss-server-side-encryption

String

Não

AES256

Define o algoritmo de criptografia server-side que o OSS usa para criar o objeto de destino.

Valores válidos: AES256 e KMS

Importante

Não é possível especificar x-oss-server-side-encryption ao copiar um objeto de link simbólico.

O algoritmo de criptografia KMS só pode ser usado após a aquisição de um pacote KMS. Caso contrário, o OSS retorna o erro KmsServiceNotEnabled.

  • Se x-oss-server-side-encryption não for especificado na operação de cópia, o objeto de destino não receberá criptografia server-side, independentemente de o objeto de origem estar criptografado ou não.

  • Quando x-oss-server-side-encryption é especificado na cópia, o objeto de destino recebe criptografia server-side, mesmo que o objeto de origem não estivesse criptografado. O cabeçalho de resposta da operação inclui x-oss-server-side-encryption, cujo valor corresponde ao algoritmo de criptografia do objeto de destino.

    Durante o download do objeto de destino, o cabeçalho de resposta também conterá x-oss-server-side-encryption, indicando o algoritmo de criptografia utilizado.

x-oss-server-side-encryption-key-id

String

Não

9468da86-3509-4f8d-a61e-6eab1eac****

Especifica a chave mestra do cliente (CMK) gerenciada pelo KMS.

Este parâmetro é válido apenas quando x-oss-server-side-encryption está definido como KMS.

x-oss-object-acl

String

Não

private

Define as permissões de acesso do objeto de destino no momento de sua criação no OSS.

Valores válidos:

  • default (padrão): O objeto herda as permissões do bucket.

  • private: Recurso privado. Apenas o proprietário e usuários autorizados possuem permissões de leitura e escrita. Outros usuários não têm acesso.

  • public-read: Recurso de leitura pública. O proprietário e usuários autorizados têm leitura e escrita; demais usuários possuem apenas permissão de leitura. Utilize esta permissão com cautela.

  • public-read-write: Recurso público de leitura e escrita. Todos os usuários podem ler e escrever no objeto. Use com precaução.

Para mais informações sobre permissões de acesso, consulte ACL de objeto.

x-oss-storage-class

String

Não

Standard

Especifica a classe de armazenamento do objeto.

Em buckets de qualquer classe de armazenamento, se este cabeçalho for definido durante o upload, o objeto será armazenado na classe indicada. Por exemplo, ao configurar x-oss-storage-class como Standard ao enviar um objeto para um bucket IA, ele será salvo como Standard.

Valores válidos:

  • Standard (padrão): Standard

  • IA: Infrequent Access

  • Archive: Archive Storage

  • ColdArchive: Cold Archive

  • DeepColdArchive: Deep Cold Archive

    Importante

    Para copiar muitos arquivos, definir diretamente Deep Cold Archive como classe de armazenamento resulta em altas taxas para requisições PUT. Recomendamos o uso de uma regra de ciclo de vida para transicionar os arquivos para a classe Deep Cold Archive, reduzindo assim os custos com requisições PUT.

Para mais detalhes sobre classes de armazenamento, consulte Classes de armazenamento.

x-oss-tagging

String

Não

a:1

Define as tags do objeto. É possível especificar múltiplas tags simultaneamente, por exemplo, TagA=A&TagB=B.

Nota

Chave e valor devem ser codificados em URL. Se um item não contiver o sinal de igual (=), o valor será tratado como string vazia.

x-oss-tagging-directive

String

Não

Copy

Determina como configurar as tags do objeto de destino. Valores válidos:

  • Copy (padrão): Replica as tags do objeto de origem para o destino.

  • Replace: Desconsidera as tags do objeto de origem e aplica as tags informadas na requisição.

Esta operação também utiliza cabeçalhos de requisição comuns, como Host e Date. Para mais informações, consulte Cabeçalhos de requisição comuns.

Cabeçalhos de resposta

Esta operação utiliza apenas cabeçalhos de resposta comuns. Consulte Cabeçalhos de resposta comuns para mais detalhes.

Elementos de resposta

Nome

Tipo

Exemplo

Descrição

CopyObjectResult

Container

N/A

Contêiner para os resultados da operação CopyObject.

Valor padrão: nenhum

ETag

String

5B3C1A2E053D763E1B002CC607C5****

ETag do objeto de destino.

Elemento pai: CopyObjectResult

LastModified

String

Fri, 24 Feb 2012 07:18:48 GMT

Data da última atualização do objeto de destino.

Elemento pai: CopyObjectResult

Exemplos

  • Versionamento desativado

    Requisição de exemplo

    PUT /test%2FAK.txt HTTP/1.1
    Host: tesx.oss-cn-zhangjiakou.aliyuncs.com
    Accept-Encoding: identity
    User-Agent: aliyun-sdk-python/2.6.0(Windows/7/AMD64;3.7.0)
    Accept: text/html
    Connection: keep-alive
    x-oss-copy-source: /test/AK.txt
    date: Fri, 28 Dec 2018 09:41:55 GMT
    authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
    Content-Length: 0

    Resposta de exemplo

    x-oss-hash-crc64ecma indica o valor CRC de 64 bits do objeto. Esse valor é calculado conforme o padrão CRC-64/XZ. A operação CopyObject não garante que o objeto gerado possua um valor CRC de 64 bits.

    HTTP/1.1 200 OK
    Server: AliyunOSS
    Date: Fri, 28 Dec 2018 09:41:56 GMT
    Content-Type: application/xml
    Content-Length: 184
    Connection: keep-alive
    x-oss-request-id: 5C25EFE4462CE00EC6D87156
    ETag: "F2064A169EE92E9775EE5324D0B1****"
    x-oss-hash-crc64ecma: 12753002859196105360
    x-oss-server-time: 150
    <?xml version="1.0" encoding="UTF-8"?>
    <CopyObjectResult>
      <ETag>"F2064A169EE92E9775EE5324D0B1****"</ETag>
      <LastModified>2018-12-28T09:41:56.000Z</LastModified>
    </CopyObjectResult>
  • Copiar um objeto sem especificar ID de versão

    Requisição de exemplo

    PUT /dest-object-example HTTP/1.1
    Host: versioning-copy.oss-cn-hangzhou.aliyuncs.com
    Date: Tue, 09 Apr 2019 03:45:32 GMT
    Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
    x-oss-copy-source: /versioning-copy-source/source-object

    Resposta de exemplo

    Neste exemplo, x-oss-copy-source-version-id representa o ID de versão do objeto de origem, correspondendo neste caso à versão atual. Já x-oss-version-id indica o ID de versão do novo objeto copiado.

    HTTP/1.1 200 OK
    x-oss-copy-source-version-id: CAEQNRiBgIC28uaA0BYiIDY5OGIwNmNlNjYyMTRjNTc4N2M2OGNiMjZkZTQ2****
    x-oss-version-id: CAEQNxiBgIDG8uaA0BYiIGZhZDRkZTk5Zjg3YzRhNzdiMWEwZGViNDM1NTFh****
    x-oss-request-id: 5CAC155CB7AEADE01700****
    Content-Type: application/xml
    Content-Length: 184
    Connection: keep-alive
    Date: Tue, 09 Apr 2019 03:45:32 GMT
    Server: AliyunOSS
    <?xml version="1.0" encoding="UTF-8"?>
    <CopyObjectResult>
      <ETag>"C81E728D9D4C2F636F067F89CC14****"</ETag>
      <LastModified>2019-04-09T03:45:32.000Z</LastModified>
    </CopyObjectResult>
  • Copiar um objeto especificando o ID de versão

    Requisição de exemplo

    PUT /dest-object-example HTTP/1.1
    Host: versioning-copy.oss-cn-hangzhou.aliyuncs.com
    Date: Tue, 09 Apr 2019 03:45:32 GMT
    Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
    x-oss-copy-source: /versioning-copy-source/source-object?versionId=CAEQNRiBgICv8uaA0BYiIDliZDc3MTc1NjE5MjRkMDI4ZGU4MTZkYjY1ZDgy****

    Resposta de exemplo

    Neste cenário, x-oss-copy-source-version-id refere-se ao ID de versão do objeto de origem, conforme especificado no cabeçalho de requisição x-oss-copy-source. O campo x-oss-version-id contém o ID de versão atribuído ao novo objeto copiado.

    HTTP/1.1 200 OK
    x-oss-copy-source-version-id: CAEQNRiBgICv8uaA0BYiIDliZDc3MTc1NjE5MjRkMDI4ZGU4MTZkYjY1ZDgy****
    x-oss-version-id: CAEQNxiBgMDP8uaA0BYiIDIyNGNhZDQ1M2M3NzRkZThiNzE0N2I3ZDkxOWY4****
    x-oss-request-id: 5CAC155CB7AEADE01700****
    Content-Type: application/xml
    Content-Length: 184
    Connection: keep-alive
    Date: Tue, 09 Apr 2019 03:45:32 GMT
    Server: AliyunOSS
    <?xml version="1.0" encoding="UTF-8"?>
    <CopyObjectResult>
      <ETag>"C4CA4238A0B923820DCC509A6F75****"</ETag>
      <LastModified>2019-04-09T03:45:32.000Z</LastModified>
    </CopyObjectResult>

SDKs

Utilize os kits de desenvolvimento de software (SDKs) das linguagens abaixo para chamar esta operação.

Ferramenta de linha de comando ossutil

Para o comando ossutil correspondente à operação CopyObject, consulte copy-object.

Códigos de erro

Código de erro

Código de status HTTP

Descrição

InvalidArgument

400

O valor de um parâmetro, como x-oss-storage-class, é inválido.

Precondition Failed

412

Erro retornado por um dos seguintes motivos:

  • O cabeçalho de requisição x-oss-copy-source-if-match foi especificado, mas o ETag do objeto de origem não corresponde ao ETag fornecido.

  • O cabeçalho x-oss-copy-source-if-unmodified-since foi informado, porém a data especificada é anterior à data real de modificação do objeto.

Not Modified

304

Este erro ocorre nas seguintes situações:

  • O cabeçalho x-oss-copy-source-if-none-match está presente, mas o ETag do objeto de origem coincide com o ETag informado.

  • Foi enviado o cabeçalho x-oss-copy-source-if-modified-since, contudo o objeto de origem não sofreu modificações desde a data especificada.

KmsServiceNotEnabled

403

Você definiu x-oss-server-side-encryption como KMS, mas não adquiriu um pacote KMS.

FileAlreadyExists

409

Erro retornado devido a uma das razões abaixo:

  • O cabeçalho de requisição inclui x-oss-forbid-overwrite=true para impedir a sobrescrita de objetos com o mesmo nome, mas já existe um objeto com esse nome no bucket.

  • O recurso de namespace hierárquico está ativado no bucket e houve tentativa de copiar um objeto onde a origem ou o destino é um diretório.

FileImmutable

409

Erro retornado ao tentar excluir ou modificar dados em um bucket que se encontra em estado protegido.

Perguntas frequentes

O CopyObject suporta cópia em lote de arquivos?

Não. A operação CopyObject serve para copiar um único arquivo. Para copiar vários arquivos em lote, utilize o ossutil. Para mais informações, consulte cp (copiar arquivos).