Copiar um objeto duplica um arquivo de um bucket de origem para um bucket de destino na mesma região, ou para outro diretório no mesmo bucket, sem alterar o conteúdo do arquivo. Use o comando cp no ossutil para executar essa operação.
Observações importantes
-
Para copiar objetos, você deve ter as permissões
oss:GetObject,oss:ListObjectseoss:PutObject. Para mais informações, consulte Conceder políticas de permissão personalizadas a usuários RAM. -
O sistema copia apenas objetos completos. Uploads multipart não mesclados não são compatíveis.
-
Por padrão, tags e atributos do objeto são copiados. Use a opção --copy-props para controlar como atributos e tags são tratados durante a cópia.
-
A cópia entre contas e entre regiões não é compatível. Para migrar arquivos entre contas ou regiões, use o ossimport ou o Data Online Migration.
-
Ao usar a opção
-u, --update, o sistema envia pelo menos uma requisição HEAD por arquivo para comparar timestamps, mesmo que o arquivo de destino não exista. Em cenários com poucas alterações de dados, isso gera muitas requisições ineficientes, o que pode reduzir o desempenho e gerar cobranças adicionais. Avalie seu caso de uso antes de ativar essa opção para evitar consumo desnecessário de recursos.
Sintaxe do comando
ossutil cp oss://src_bucket[/src_prefix] oss://dest_bucket[/dest_prefix] [flags]
|
Parâmetro |
Tipo |
Descrição |
|
src_bucket |
string |
Nome do bucket de origem. |
|
src_prefix |
string |
Caminho do diretório ou prefixo no bucket de origem. |
|
dest_bucket |
string |
Nome do bucket de destino. |
|
dest_prefix |
string |
Caminho do diretório ou prefixo no bucket de destino. |
|
--acl |
string |
Nível de controle de acesso do objeto. Valores válidos:
|
|
--bandwidth-limit |
SizeSuffix |
Limita a largura de banda da rede para controlar a velocidade de transferência de dados. O valor mínimo é 1024 B/s. A unidade padrão é B/s. Você pode especificar uma unidade ao definir esse parâmetro. As unidades compatíveis incluem B (bytes), K (kilobytes), M (megabytes) e G (gigabytes). Por exemplo, 50 M define o limite como 50 MB/s. |
|
--bigfile-threshold |
SizeSuffix |
Limiar (em bytes) para ativar upload, download ou cópia multipart de arquivos grandes. Valor padrão: 104857600 (100 MiB). |
|
--cache-control |
string |
Especifica o comportamento de cache quando o objeto é baixado por um navegador web. |
|
--checkers |
int |
Número de threads de verificação simultâneas. Padrão: 16. |
|
--checkpoint-dir |
string |
Diretório para armazenar dados de checkpoint e permitir transferências resumíveis. Padrão: |
|
--checksum |
/ |
Copia apenas arquivos de origem cujo tamanho ou checksum (se disponível) difere do destino. Aplica-se apenas a operações de cópia entre objetos. |
|
--content-disposition |
string |
Especifica o formato de exibição do objeto. |
|
--content-encoding |
string |
Declara o método de codificação do objeto. |
|
--content-type |
string |
Tipo MIME do objeto. |
|
--copy-props |
string |
Controla como propriedades e tags do objeto são copiadas em operações entre objetos. Valores compatíveis:
|
|
-d, --dirs |
string |
Processa arquivos e subdiretórios imediatos no diretório atual, sem percorrer subdiretórios mais profundos de forma recursiva. |
|
--encoding-type |
string |
Tipo de codificação para nomes de objetos ou arquivos de entrada. Valor válido: url. |
|
--end-with |
string |
Retorna objetos anteriores ou correspondentes ao valor especificado em ordem alfabética. |
|
--exclude |
stringArray |
Regras de exclusão para caminhos ou nomes de arquivos. |
|
--exclude-from |
stringArray |
Lê regras de exclusão de um arquivo. |
|
--expires |
string |
Define um tempo de expiração absoluto para conteúdo em cache. |
|
--files-from |
stringArray |
Lê uma lista de nomes de arquivos de origem de um arquivo, ignorando linhas vazias ou comentadas. Aplica-se apenas em cenários de filtragem. |
|
--files-from-raw |
stringArray |
Lê uma lista de nomes de arquivos de origem de um arquivo. Aplica-se apenas em cenários de filtragem. |
|
--filter |
stringArray |
Regras de filtragem para caminhos ou nomes de arquivos. |
|
--filter-from |
stringArray |
Lê regras de filtragem de um arquivo. |
|
-f, --force |
/ |
Força a operação sem solicitar confirmação. |
|
--ignore-existing |
/ |
Ignora arquivos que já existem no destino. |
|
--include |
stringArray |
Regras de inclusão para caminhos ou nomes de arquivos. |
|
--include-from |
stringArray |
Lê regras de inclusão de um arquivo. |
|
-j, --job |
int |
Número de jobs simultâneos. Padrão: 3. null
Essa opção funciona apenas com uma das seguintes flags: |
|
--list-objects |
/ |
Usa a API ListObjects para enumerar objetos. |
|
--max-size |
SizeSuffix |
Tamanho máximo de arquivo para transferência. A unidade padrão é bytes. Você pode anexar um sufixo: B|K|M|G|T|P (por exemplo, 1K = 1024 B). |
|
--metadata |
strings |
Metadados definidos pelo usuário para o objeto, especificados como pares chave=valor. |
|
--metadata-directive |
string |
Especifica como definir metadados para o objeto de destino. Valores válidos:
|
|
--metadata-exclude |
stringArray |
Regras de exclusão para metadados de objetos. |
|
--metadata-filter |
stringArray |
Regras de filtragem para metadados de objetos. |
|
--metadata-filter-from |
stringArray |
Lê regras de filtragem de metadados de um arquivo. |
|
--metadata-include |
stringArray |
Regras de inclusão para metadados de objetos. |
|
--min-age |
Duration |
Copia apenas arquivos modificados antes do intervalo de tempo especificado. A unidade padrão é segundos. Você pode usar sufixos como h (horas). Exemplo: 1h significa 1 hora. null
|
|
--max-age |
Duration |
Copia apenas arquivos modificados dentro do intervalo de tempo especificado. A unidade padrão é segundos. Você pode usar sufixos como h (horas). Exemplo: 1h significa 1 hora. null
|
|
--min-mtime |
Time |
Copia apenas arquivos modificados após o horário especificado. Formato: UTC (por exemplo, 2006-01-02T15:04:05). null
|
|
--max-mtime |
Time |
Copia apenas arquivos modificados antes do horário especificado. Formato: UTC (por exemplo, 2006-01-02T15:04:05). |
|
--min-size |
SizeSuffix |
Tamanho mínimo de arquivo para transferência. A unidade padrão é bytes. Você pode anexar um sufixo: B|K|M|G|T|P (por exemplo, 1K = 1024 B). |
|
--no-progress |
/ |
Desativa a barra de progresso. |
|
--no-error-report |
/ |
Impede a geração de arquivos de relatório de erros em operações em lote. |
|
--output-dir |
string |
Diretório onde os arquivos de relatório de erros são salvos em operações em lote. Padrão: |
|
--page-size |
int |
Número máximo de objetos listados por página durante a cópia em lote. Intervalo válido: 1–1000. Padrão: 1000. |
|
--parallel |
int |
Número de tarefas simultâneas para operações internas em um único arquivo. |
|
--part-size |
SizeSuffix |
Tamanho de cada parte em operações multipart. Por padrão, o ossutil calcula um tamanho de parte ideal com base no tamanho do arquivo. Intervalo válido: 100 KiB a 5 GiB. |
|
-r, --recursive |
/ |
Executa a operação de forma recursiva. Com essa opção ativada, o comando processa todos os objetos correspondentes no bucket. Caso contrário, opera apenas no objeto especificado explicitamente. |
|
--request-payer |
string |
Método de pagamento da requisição. Defina como requester se o bucket usar o modo de pagamento pelo solicitante. |
|
--size-only |
/ |
Copia apenas arquivos de origem cujo tamanho difere do destino. |
|
--start-after |
string |
Retorna objetos posteriores ao valor especificado em ordem alfabética, excluindo o próprio valor. |
|
--storage-class |
string |
Classe de armazenamento do objeto. Valores válidos:
|
|
--tagging |
string |
Tags do objeto, especificadas como pares chave=valor. |
|
--tagging-directive |
string |
Especifica como definir tags para o objeto de destino. Valores válidos:
|
|
-u, --update |
/ |
Ignora arquivos no destino que já existem e possuem um horário de modificação mais recente que a origem. null
Se o arquivo de destino existir com um horário de modificação mais antigo que a origem, o arquivo será atualizado. |
|
--version-id |
string |
Especifica o ID da versão do objeto (VersionId). |
A partir da versão 2.3.0 do ossutil, você pode configurar as opções --job, --parallel, --bigfile-threshold, --part-size e --write-buffer-size em um arquivo de configuração. Adicione-as como entradas key=value na seção de perfil correspondente (por exemplo, job=10) ou use o comando ossutil config set. As opções da linha de comando substituem as configurações do arquivo de configuração.
Para mais informações, consulte Opções de linha de comando.
Regras de nomenclatura do objeto de destino:
-
Na cópia de arquivo único, se dest_prefix estiver vazio, o nome do objeto de destino corresponde ao caminho relativo do arquivo de origem.
-
Na cópia de arquivo único, se dest_prefix terminar com "/", o nome do objeto de destino é dest_prefix + caminho relativo da origem.
-
Na cópia de arquivo único, se dest_prefix não terminar com "/", o nome do objeto de destino corresponde a dest_prefix.
-
Na cópia em lote, se dest_prefix terminar com "/", o nome do objeto de destino é dest_prefix + caminho relativo da origem.
-
Na cópia em lote, se dest_prefix não terminar com "/", o nome do objeto de destino é dest_prefix + "/" + caminho relativo da origem.
Exemplos
-
Copiar um único arquivo
ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/desfolder/ -
Copiar arquivos incrementais
Na cópia em lote, use a opção --update para ignorar arquivos no destino que já existem e possuem um horário de modificação mais recente que a origem:
ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket1/desfolder/ -r --update -
Cópia entre buckets após replicação na mesma região
-
Use a opção
--checksumpara cópia incremental baseada em checksum: ideal quando é necessária consistência rigorosa de conteúdo (por exemplo, ao repetir uma cópia em lote que falhou, ignorando arquivos já copiados). O sistema segue esta lógica:-
Compara os tamanhos dos arquivos primeiro.
-
Se os tamanhos forem iguais, calcula e compara os checksums CRC64.
-
Copia apenas se os checksums forem diferentes.
ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket1/desfolder/ -r --checksum -
-
Use a opção
--ignore-existingpara ignorar arquivos existentes: útil quando você deseja ignorar arquivos que já existem no destino sem sobrescrevê-los:ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket1/desfolder/ -r --ignore-existing
-
-
Renomear um arquivo
ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/example.txtAo renomear um arquivo com o comando cp , o arquivo original permanece. Exclua-o manualmente após a renomeação, se necessário.
-
Modificar tags de objetos
ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/ --tagging "abc=1&bcd=2&……"