Todos os produtos
Search
Central de documentação

Object Storage Service:Copiar objetos usando o comando cp

Última atualização: Jul 03, 2026

Use 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 no mesmo bucket.

Precauções

  • O comando cp não suporta cópia de arquivos entre contas ou regiões. Para copiar ou migrar arquivos entre contas ou regiões, use a Migração Online de Dados.

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

  • A partir da versão 1.6.16 do ossutil, use o nome do binário ossutil na linha de comando sem renomeá-lo. Em versões anteriores à 1.6.16, renomeie o binário para corresponder ao sistema operacional. Para mais informações, consulte Referência de comandos da ferramenta de linha de comando ossutil.

Permissões

Por padrão, somente a conta Alibaba Cloud tem permissão para executar todas as operações de API. Para executar este comando, conceda as permissões necessárias a um usuário RAM ou função RAM por meio de uma Política RAM ou de uma Política de Bucket. A concessão deve ser feita pela conta Alibaba Cloud ou por um administrador.

Ação da API

Descrição

oss:GetObject

Copia um objeto entre buckets na mesma região.

oss:PutObject

oss:GetObjectVersion

Opcional. Necessária para copiar uma versão específica de um objeto.

oss:GetObjectTagging

Opcional. Necessárias se a operação de cópia envolver tags de objeto.

oss:PutObjectTagging

oss:GetObjectVersionTagging

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

kms:GenerateDataKey

Opcional. Necessárias se a operação de cópia envolver criptografia no lado do servidor com KMS.

kms:Decrypt

Sintaxe do comando

ossutil cp cloud_url cloud_url [options]

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

Parâmetro

Descrição

cloud_url

Caminhos de origem e destino no OSS. Formato: oss://bucketname/objectname. Por exemplo, para copiar o objeto de origem srcobject.jpg para o objeto de destino destobject.jpg no bucket 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 especificada, o ossutil aplica a operação a todos os objetos correspondentes no bucket. Caso contrário, a operação afeta apenas o objeto especificado.

-f --force

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

-u,--update

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

--disable-ignore-error

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

--only-current-dir

Copia apenas os arquivos do diretório atual, ignorando subdiretórios e seu conteúdo.

-bigfile-threshold

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

Valor padrão: 100 MB

Valores válidos: 0 a 9223372036854775807

--part-size

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

Valores válidos: 1 a 9223372036854775807

--checkpoint-dir

Diretório que armazena informações de checkpoint para cópia retomável. Em caso de falha, o ossutil cria automaticamente o diretório .ossutil_checkpoint para registrar esses dados. O diretório é excluído após a conclusão bem-sucedida da cópia. Se especificar esta opção, certifique-se de que o diretório indicado possa ser excluído.

--encoding-type

Tipo de codificação do nome do arquivo. Defina o valor como url. Sem essa opção, o nome do arquivo não é codificado.

--include

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

--exclude

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

--meta

Metadados do arquivo. Formato: header:value#header:value. Exemplo: Cache-Control:no-cache#Content-Encoding:gzip. Para mais informações sobre metadados, consulte set-meta (Gerenciar metadados de objeto).

--acl

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 acessá-lo.

  • public-read: Somente o proprietário do bucket tem permissão de gravação. Todos os outros usuários, incluindo 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 sem necessidade.

  • public-read-write: Todos os usuários, incluindo anônimos, têm permissões de leitura e gravação no objeto. Isso pode resultar em 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

Método de pagamento da solicitação. Para 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

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

--parallel

Número de tarefas simultâneas para operação de um único arquivo. Valores válidos: 1 a 10000. Se não definida, o ossutil determina 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. Disponível apenas para buckets com versionamento ativado.

--start-time

Timestamp UNIX. Se especificado, ignora objetos cuja última atualização ocorreu antes desse horário.

Nota

Suportado apenas no ossutil 1.7.18 e versões posteriores. Para mais informações sobre atualização, consulte update (Atualizar ossutil).

--end-time

Timestamp UNIX. Se especificado, ignora objetos cuja última atualização ocorreu após esse horário.

Nota
  • Se ambos start-time e end-time forem especificados, o comando de cópia será executado apenas para arquivos modificados entre os horários inicial e final definidos.

  • Suportado apenas no ossutil 1.7.18 e versões posteriores. Para mais informações sobre como atualizar, consulte update (Atualizar ossutil).

Para mais informações sobre outras opções comuns deste comando, consulte Opções comuns.

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

  • Se os recursos da instância ECS ou do servidor (rede, memória e CPU) forem limitados, reduza a concorrência para menos de 100. Caso os recursos não estejam totalmente utilizados, aumente a concorrência conforme necessário.

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

Exemplos de uso

Os exemplos a seguir aplicam-se a sistemas Linux. Modifique os parâmetros conforme seu sistema operacional e ambiente real. Os exemplos consideram o seguinte cenário:

  • 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://examplebucket1/srcfolder1/examplefile.txt oss://examplebucket1/srcfolder2/example.txt                             

Copiar vários arquivos em lote

Na cópia de arquivos, se o caminho de origem não terminar com barra (/), todos os arquivos correspondentes ao prefixo especificado serão copiados para o bucket de destino. Se terminar com barra (/), apenas os arquivos do diretório especificado serão copiados.

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

srcfolder1/exampleobject1.txt
srcfolder1/exampleobject2.png
srcfolder1/dir1/
srcfolder1/dir1/exampleobject3.jpg
srcfolder1/dir2/
srcfolder1/dir2/exampleobject4.jpg
  • Caminho de origem sem barra final (/)

    ossutil cp oss://examplebucket1/srcfolder1  oss://examplebucket2 -r

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

    srcfolder1/exampleobject1.txt
    srcfolder1/exampleobject2.png
    srcfolder1/dir1/
    srcfolder1/dir1/exampleobject3.jpg
    srcfolder1/dir2/
    srcfolder1/dir2/exampleobject4.jpg
  • Caminho de origem com barra final (/).

    ossutil cp oss://examplebucket1/srcfolder1/  oss://examplebucket2 -r

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

    exampleobject1.txt
    exampleobject2.png
    dir1/
    dir1/exampleobject3.jpg
    dir2/
    dir2/exampleobject4.jpg
  • Copiar arquivos incrementais

    Em cópias em lote, a opção --update faz o ossutil copiar o objeto apenas se o destino não existir ou se a última modificação da origem for posterior à do destino. Comando:

    ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket2/path2/ -r --update

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

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

    ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket1/srcfolder2/ --only-current-dir -r

Copiar arquivos dentro de um intervalo de tempo especificado

Copie apenas os arquivos em srcfolder1 modificados 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 -r oss://examplebucket1/srcfolder1/ oss://examplebucket2/path2/ --start-time 1698718158 --end-time 1698728158

Copiar arquivos que atendem a condições específicas

Use os parâmetros --include e --exclude para copiar apenas arquivos que atendam a critérios específicos.

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

    ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket2/desfolder/ --exclude "*.jpg" -r
  • Copiar todos os arquivos cujos nomes contêm abc, exceto nos formatos JPG ou TXT

    ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket2/desfolder/ --include "*abc*" --exclude "*.jpg" --exclude "*.txt" -r

Copiar um arquivo e modificar seus metadados

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

ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/ --meta=Cache-Control:no-cache

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://examplebucket1/examplefile.txt oss://examplebucket2/desfolder/  --payer=requester

Copiar um arquivo e alterar sua classe de armazenamento

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

  • Standard: Standard

  • IA: Acesso Infrequente

  • Archive: Armazenamento de Arquivo

  • ColdArchive: Arquivo Frio

  • DeepColdArchive: Arquivo Frio Profundo

Para mais informações sobre classes de armazenamento, consulte Classes de armazenamento.

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 preservá-los, primeiro use a opção x-oss-metadata-directive:COPY para reter os metadados e, em seguida, altere a classe de armazenamento.

Sobrescrever metadados personalizados existentes

  • Alterar a classe de armazenamento de um arquivo específico para Armazenamento de Arquivo

    ossutil cp oss://examplebucket1/srcfolder1/examplefile.txt oss://examplebucket1/srcfolder1/examplefile.txt --meta X-oss-Storage-Class:Archive
  • Alterar a classe de armazenamento de todos os arquivos em uma pasta específica para Standard

    ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket1/srcfolder1/ --meta X-oss-Storage-Class:Standard -r

Reter metadados personalizados existentes

  • Reter os metadados de um único arquivo existente.

    ossutil cp oss://examplebucket1/srcfolder1/examplefile.txt oss://examplebucket1/srcfolder1/examplefile.txt --meta x-oss-metadata-directive:COPY
  • Reter os metadados de múltiplos arquivos existentes.

    ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket1/srcfolder1/ --meta x-oss-metadata-directive:COPY -r -f 
Importante
  • Ao usar o comando cp para alterar a classe de armazenamento de um objeto, há cobrança por solicitações PUT com base na classe de origem. As taxas são faturadas no bucket de destino.

  • Se converter um objeto para Acesso Infrequente, Arquivo, Arquivo Frio ou Arquivo Frio Profundo e o período de armazenamento for inferior à duração mínima, aplica-se uma taxa de exclusão antecipada. Para mais detalhes, consulte Taxas de armazenamento.

  • Para converter um objeto de Armazenamento de Arquivo, Arquivo Frio ou Arquivo Frio Profundo para Standard ou Acesso Infrequente usando o comando cp, restaure-o primeiro com o comando restore (restaurar um objeto). Após a restauração, use o comando cp para alterar a classe. Contudo, se o acesso em tempo real a objetos Archive estiver ativado, altere a classe de objetos de Armazenamento de Arquivo sem restaurá-los.

  • Ao alterar a classe de armazenamento de arquivos maiores que 100 MB com o comando cp, o ossutil calcula automaticamente o tamanho da parte. Se o cálculo automático não atender às necessidades, use a opção --part-size para definir o tamanho. 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 múltiplas tags com e comercial (&). Comando:

ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/ --tagging "abc=1&bcd=2&……"

Para mais informações sobre tags de objeto, consulte object-tagging (Tags de objeto).

Copiar um arquivo e configurar criptografia no lado do servidor

Especifique um método de criptografia no lado do servidor para criptografar o arquivo durante a cópia para o bucket. Para mais informações, consulte Criptografia no lado do servidor.

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

    ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/srcfolder2/ --meta=x-oss-server-side-encryption:AES256
  • Copiar um arquivo e especificar KMS como método de criptografia

    ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket2/desfolder/ --meta=x-oss-server-side-encryption:KMS
    Importante

    Ao usar KMS para criptografia, o OSS chama o serviço KMS para gerar uma chave mestra para o arquivo, gerando taxas de chamadas de API do KMS. Para mais informações, consulte Faturamento do KMS.

  • Copiar um arquivo e especificar o ID da CMK para criptografia KMS.

    ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket2/desfolder/ --meta=x-oss-server-side-encryption:KMS#x-oss-server-side-encryption-key-id:7bd6e2fe-cd0e-483e-acb0-f4b9e1******

Restaurar uma versão histórica de um arquivo

Com o versionamento ativado, 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, sobrescrevendo a versão atual.

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

Nota

A opção --version-id aplica-se apenas a buckets com versionamento ativado. Para mais informações sobre como ativar o versionamento, consulte bucket-versioning (Versionamento).

ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket2/ --version-id  CAEQARiBgID8rumR2hYiIGUyOTAyZGY2MzU5MjQ5ZjlhYzQzZjNlYTAyZDE3MDRk

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 Regiões e Endpoints.

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 longa duração, crie uma função RAM para a conta de origem e conceda à conta de destino permissões para assumir essa função, garantindo acesso entre contas mais seguro.