Todos os produtos
Search
Central de documentação

Object Storage Service:Copy objects using the cp command

Última atualização: Oct 22, 2026

Utilize o comando cp para copiar arquivos de um bucket de origem para um bucket de destino na mesma região ou para outro diretório dentro do mesmo bucket.

Precauções

  • O comando cp não suporta a cópia de arquivos entre contas ou regiões diferentes. Para copiar ou migrar arquivos entre contas ou regiões, utilize {{XREF_0}}.

  • Este comando copia apenas arquivos completos e não permite a cópia parcial de arquivos.

  • A partir da versão 1.6.16 do ossutil, é possível usar ossutil como nome do binário na linha de comando sem renomeá-lo. Em versões anteriores à 1.6.16, você deve renomear o binário para corresponder ao seu sistema operacional. Para mais informações, consulte {{XREF_1}}.

    ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret

Permissões

Por padrão, apenas a conta Alibaba Cloud tem permissão para executar todas as operações de API. Para executar este comando, um usuário RAM ou uma função RAM precisa receber as permissões necessárias da conta Alibaba Cloud ou de um administrador por meio de uma {{XREF_4}} ou de uma {{XREF_5}}.

Ação da API

Descrição

oss:GetObject

Copia um objeto entre buckets na mesma região.

oss:PutObject

oss:GetObjectVersion

Opcional. Esta permissão é necessária para copiar uma versão específica de um objeto.

oss:GetObjectTagging

Opcional. Essas permissões são necessárias se a operação de cópia envolver tags de objeto.

oss:PutObjectTagging

oss:GetObjectVersionTagging

Opcional. Esta permissão é necessária se a operação de cópia envolver tags de uma versão específica do objeto.

kms:GenerateDataKey

Opcional. Essas permissões são necessárias se a operação de cópia envolver criptografia no lado do servidor com KMS.

kms:Decrypt

Sintaxe do comando

ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret

A tabela a seguir descreve os parâmetros e opções.

Parâmetro

Descrição

cloud_url

Os caminhos de origem e destino no OSS. O formato é oss://bucketname/objectname. Por exemplo, para copiar o objeto de origem srcobject.jpg para o objeto de destino destobject.jpg no mesmo bucket chamado examplebucket, defina o caminho de origem como oss://examplebucket/srcobject.jpg e o caminho de destino como oss://examplebucket/destobject.jpg.

-r, --recursive

Executa uma operação recursiva. Se você especificar esta opção, o ossutil realizará a operação em todos os objetos correspondentes no bucket. Caso contrário, a operação será executada apenas no objeto especificado.

-f --force

Força a operação sem solicitar confirmação.

-u, --update

Copia um objeto somente se o objeto de destino não existir ou se a hora da última modificação do objeto de origem for posterior à do objeto de destino.

--disable-ignore-error

Não ignora erros durante operações em lote.

--only-current-dir

Copia apenas os arquivos no diretório atual. Subdiretórios e seus respectivos arquivos são ignorados.

-bigfile-threshold

O limiar de tamanho para cópia retomável. Unidade: bytes.

Valor padrão: 100 MB

Valores válidos: 0 a 9223372036854775807

--part-size

O tamanho da parte. Unidade: bytes. Por padrão, o ossutil calcula um tamanho de parte adequado com base no tamanho do arquivo.

Valores válidos: 1 a 9223372036854775807

--checkpoint-dir

O diretório que armazena as informações de checkpoint para uma cópia retomável. Se uma cópia retomável falhar, o ossutil cria automaticamente um diretório chamado .ossutil_checkpoint para registrar as informações de checkpoint. Esse diretório é excluído após a conclusão bem-sucedida da cópia retomável. Se você especificar esta opção, certifique-se de que o diretório indicado possa ser excluído.

--encoding-type

O tipo de codificação do nome do arquivo. Defina o valor como url. Se você não especificar esta opção, o nome do arquivo não será codificado.

--include

Inclui todos os arquivos que atendem à condição especificada.

--exclude

Exclui todos os arquivos que atendem à condição especificada.

--meta

Os metadados do arquivo. O formato é header:value#header:value. Exemplo: Cache-Control:no-cache#Content-Encoding:gzip. Para mais informações sobre metadados, consulte {{XREF_6}}.

--acl

A lista de controle de acesso (ACL) do arquivo. Valores válidos:

  • default (padrão): O objeto herda a ACL do bucket.

  • private: Apenas o proprietário do bucket tem permissões de leitura e gravação no objeto. Outros usuários não podem acessar o objeto.

  • public-read: Apenas o proprietário do bucket tem permissão de gravação no objeto. Todos os outros usuários, incluindo usuários anônimos, têm permissão de leitura. Isso pode causar vazamento de dados e cobranças inesperadas. Não recomendamos conceder essa permissão a menos que seja necessário.

  • public-read-write: Todos os usuários, incluindo usuários anônimos, têm permissões de leitura e gravação no objeto. Isso pode causar vazamento de dados e cobranças inesperadas. Use esta permissão com cautela.

--disable-crc64

Desativa a verificação de redundância cíclica de 64 bits (CRC-64) para dados. Por padrão, o CRC-64 está ativado para transferência de dados no ossutil.

--payer

O método de pagamento da solicitação. Se você quiser que o solicitante pague pelo tráfego e pelas solicitações ao acessar recursos no caminho especificado, defina esta opção como requester.

-j, --jobs

O número de tarefas simultâneas para operações em lote. Valor padrão: 3. Valores válidos: 1 a 10000.

--parallel

O número de tarefas simultâneas para a operação de um único arquivo. Valores válidos: 1 a 10000. Se você não definir esta opção, o ossutil determinará o valor com base no tipo de operação e no tamanho do arquivo.

--version-id

Copia uma versão específica de um arquivo. Esta opção está disponível apenas para buckets com versionamento ativado.

--start-time

Um timestamp UNIX. Se você especificar esta opção, os objetos atualizados pela última vez antes desse horário serão ignorados.

Nota

Apenas o ossutil 1.7.18 e versões posteriores suportam este parâmetro. Para mais informações sobre atualização, consulte {{XREF_7}}.

--end-time

Um timestamp UNIX. Se você especificar esta opção, os objetos atualizados pela última vez após esse horário serão ignorados.

Nota
  • Se você especificar tanto start-time quanto end-time, o comando de cópia será executado apenas para arquivos cuja última modificação ocorreu entre os horários inicial e final especificados.

  • Apenas o ossutil 1.7.18 e versões posteriores suportam este parâmetro. Para mais informações sobre como atualizar a versão, consulte {{XREF_8}}.

Para mais informações sobre outras opções comuns deste comando, consulte {{XREF_9}}.

Se a concorrência padrão não atender aos seus requisitos de desempenho, ajuste as opções -j, --jobs e --parallel para otimizar o desempenho. Por padrão, o ossutil calcula o valor de parallel com base no tamanho do arquivo. Ao transferir arquivos grandes em lote, a concorrência real corresponde ao valor de jobs multiplicado pelo valor de parallel.

  • Caso os recursos da instância ECS ou do servidor que executa o comando (como rede, memória e CPU) sejam limitados, recomenda-se reduzir a concorrência para um valor inferior a 100. Se os recursos não estiverem sendo totalmente utilizados, aumente a concorrência conforme necessário.

  • Uma concorrência elevada pode reduzir o desempenho ou até causar erros EOF devido à sobrecarga de troca de threads e competição por recursos. Ajuste as opções -j, --jobs e --parallel com base nos recursos reais da sua máquina. Durante testes de estresse, comece com uma concorrência baixa e aumente gradualmente até encontrar o valor ideal.

Exemplos de uso

Os exemplos a seguir aplicam-se a sistemas Linux. Modifique os parâmetros de acordo com seu sistema operacional e ambiente real. Os exemplos consideram o seguinte ambiente:

  • Bucket de origem: examplebucket1

  • Diretório de origem 1 no bucket de origem: srcfolder1

  • Diretório de origem 2 no bucket de origem: srcfolder2

  • Bucket de destino: examplebucket2

  • Diretório de destino no bucket de destino: desfolder

Copiar um único arquivo

Copie um arquivo de um diretório para outro no mesmo bucket e renomeie-o para example.txt.

ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret

Copiar vários arquivos em lote

Ao copiar arquivos, se o caminho de origem não terminar com uma barra (/), todos os arquivos que corresponderem ao prefixo especificado serão copiados para o bucket de destino. Se o caminho de origem terminar com uma barra (/), apenas os arquivos do diretório especificado serão copiados para o bucket de destino.

Considere que o diretório srcfolder1 no bucket de origem examplebucket1 contenha os seguintes arquivos:

ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret
  • O caminho de origem não termina com uma barra (/)

    ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret

    Após a conclusão da cópia, os seguintes arquivos são adicionados ao bucket de destino examplebucket2:

    ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret
  • O caminho de origem termina com uma barra (/).

    ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret

    Após a conclusão da cópia, os seguintes arquivos estarão presentes no bucket de destino examplebucket2:

    ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret
  • Copiar arquivos incrementais

    Durante uma cópia em lote, se você especificar a opção --update, o ossutil copiará um objeto apenas se o objeto de destino não existir ou se a hora da última modificação do objeto de origem for posterior à do objeto de destino. O comando é o seguinte:

    ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret

    Use esta opção para realizar uma cópia incremental, ignorando arquivos que já foram copiados com sucesso ao tentar novamente uma cópia em lote que falhou.

  • Copiar apenas arquivos no diretório atual e ignorar subdiretórios

    ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret

Copiar arquivos dentro de um intervalo de tempo especificado

Copie apenas os arquivos em srcfolder1 cuja última modificação ocorreu entre 10:09:18 de 31 de outubro de 2023 (UTC+8) e 12:55:58 de 31 de outubro de 2023 (UTC+8).

ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret

Copiar arquivos que atendem a condições especificadas

Utilize os parâmetros --include e --exclude para copiar apenas arquivos que atendam a condições específicas.

  • Copiar todos os arquivos que não estão no formato JPG.

    ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret
  • Copiar todos os arquivos cujos nomes contêm abc, mas que não estão nos formatos JPG ou TXT

    ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret

Copiar um arquivo e modificar seus metadados

Use a opção --meta para modificar os metadados do objeto. O formato é header:value#header:value....

ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret

Copiar um arquivo e especificar o modo de pagamento pelo solicitante

Copie um arquivo de um bucket de origem para um bucket de destino e especifique o modo de pagamento pelo solicitante.

ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret

Copiar um arquivo e alterar sua classe de armazenamento

Ao sobrescrever um objeto, adicione a opção --meta para modificar sua classe de armazenamento. As classes de armazenamento suportadas são:

  • Standard: Standard

    ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret
  • IA: Infrequent Access

  • Archive: Archive Storage

  • ColdArchive: Cold Archive

  • DeepColdArchive: Deep Cold Archive

Para mais informações sobre classes de armazenamento, consulte {{XREF_10}}.

Importante

Por padrão, ao usar a opção --meta para alterar a classe de armazenamento, os metadados personalizados existentes do objeto são sobrescritos. Para manter os metadados personalizados existentes ao alterar a classe de armazenamento, use primeiro a opção x-oss-metadata-directive:COPY para {{XREF_11}} e, em seguida, {{XREF_12}}.

Sobrescrever metadados personalizados existentes do objeto

  • Alterar a classe de armazenamento de um arquivo específico para Archive Storage

    ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret
  • Alterar a classe de armazenamento de todos os arquivos em uma pasta específica para Standard

    ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret

Manter metadados personalizados existentes do objeto

  • Manter os metadados de um único arquivo existente.

    ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret
  • Manter os metadados de vários arquivos existentes.

    ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret
Importante
  • Ao usar o comando cp para alterar a classe de armazenamento de um objeto, você será cobrado por solicitações PUT com base na classe de armazenamento de origem do objeto. As taxas são faturadas no bucket de destino.

  • Se você converter um objeto para a classe de armazenamento Infrequent Access, Archive, Cold Archive ou Deep Cold Archive e o objeto for armazenado por um período inferior à duração mínima de armazenamento, uma taxa de exclusão antecipada será cobrada. Para mais informações, consulte {{XREF_13}}.

  • Para converter um objeto de Archive Storage, Cold Archive ou Deep Cold Archive para Standard ou Infrequent Access usando o comando cp, restaure o objeto primeiro. Para restaurar o objeto, use o comando {{XREF_14}}. Após a restauração, utilize o comando cp para alterar sua classe de armazenamento. No entanto, se {{XREF_15}} estiver ativado, é possível alterar a classe de armazenamento de objetos Archive Storage sem restaurá-los.

  • Ao usar o comando cp para alterar a classe de armazenamento de um arquivo maior que 100 MB, o ossutil calcula um tamanho de parte adequado com base no tamanho do arquivo por padrão. Se o tamanho automático da parte não atender às suas necessidades, use a opção --part-size para especificar um tamanho de parte. Certifique-se de que o número de partes não exceda 10.000.

Copiar um arquivo e definir tags

Ao sobrescrever um arquivo, adicione a opção --tagging para adicionar ou modificar tags de objeto. Separe várias tags com e comercial (&). O comando é o seguinte:

ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret

Para mais informações sobre tags de objeto, consulte {{XREF_16}}.

Copiar um arquivo e configurar criptografia no lado do servidor

É possível especificar um método de criptografia no lado do servidor para criptografar um arquivo ao copiá-lo para um bucket. Para mais informações sobre criptografia no lado do servidor, consulte {{XREF_17}}.

  • Copiar um arquivo e especificar AES256 como método de criptografia

    ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret
  • ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret
    Nota

    Se o caminho de origem for igual ao caminho de destino, o comando sobrescreverá o arquivo original. Isso permite converter o método de criptografia no lado do servidor de um arquivo existente (por exemplo, de AES256 para SM4).

  • Copiar um arquivo e especificar KMS como método de criptografia

    ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret
    Importante

    Ao usar KMS para criptografia, o OSS chama o KMS para gerar uma chave mestra para o arquivo. Essa ação gera uma taxa por chamadas de API do KMS. Para mais informações, consulte {{XREF_18}}.

  • ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret
  • Copiar um arquivo e especificar o ID da CMK para criptografia KMS.

    ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret
Nota

A opção --meta aplica-se ao ossutil 1.x. Para o ossutil 2.x, use o seguinte comando:

ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret

Restaurar uma versão histórica de um arquivo

Após ativar o versionamento para um bucket, objetos sobrescritos e excluídos são salvos como versões históricas. Adicione a opção --version-id ao comando cp para restaurar uma versão histórica, o que sobrescreve a versão atual.

Primeiro, use o comando {{XREF_19}} para recuperar todos os IDs de versão do objeto. Em seguida, use a opção --version-id para copiar uma versão específica.

Nota

A opção --version-id só pode ser usada em buckets com versionamento ativado. Para mais informações sobre o comando para ativar o versionamento de um bucket, consulte {{XREF_20}}.

ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret

Cópia entre contas

Use as opções comuns -e, -i e -k para copiar o arquivo srcobject.png do diretório raiz do bucket de origem examplebucket na região China (Shanghai), pertencente a outra conta Alibaba Cloud, para o bucket de destino destbucket.

Nota

Especifique o Endpoint da região onde o bucket está localizado. Para mais informações, consulte {{XREF_21}}.

ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID  -k yourAccessKeySecret
Dica de segurança : Usar um AccessKey na linha de comando representa um risco de segurança. Para tarefas automatizadas ou de longo prazo, recomendamos criar uma função RAM para a conta de origem e conceder à conta de destino permissões para assumir essa função RAM, garantindo um acesso entre contas mais seguro.