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
ossutilna 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 |
|
|
Copia um objeto entre buckets na mesma região. |
|
|
|
|
|
Opcional. Necessária para copiar uma versão específica de um objeto. |
|
|
Opcional. Necessárias se a operação de cópia envolver tags de objeto. |
|
|
|
|
|
Opcional. Necessária se a operação de cópia envolver tags de uma versão específica do objeto. |
|
|
Opcional. Necessárias se a operação de cópia envolver criptografia no lado do servidor com KMS. |
|
|
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: |
|
-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 |
|
--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: |
|
--acl |
Lista de controle de acesso (ACL) do arquivo. Valores válidos:
|
|
--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
|
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 -rApó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 -rApó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 --updateUse 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.
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
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:KMSImportanteAo 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.
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.
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.