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 |
|
|
Copia um objeto entre buckets na mesma região. |
|
|
|
|
|
Opcional. Esta permissão é necessária para copiar uma versão específica de um objeto. |
|
|
Opcional. Essas permissões são necessárias se a operação de cópia envolver tags de objeto. |
|
|
|
|
|
Opcional. Esta permissão é necessária se a operação de cópia envolver tags de uma versão específica do objeto. |
|
|
Opcional. Essas permissões são necessárias se a operação de cópia envolver criptografia no lado do servidor com KMS. |
|
|
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 é |
|
-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 |
|
--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 é |
|
--acl |
A 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 |
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
|
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 yourAccessKeySecretApó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 yourAccessKeySecretApó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 yourAccessKeySecretUse 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}}.
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
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
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
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
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.
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.
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.