Use o comando sync para sincronizar arquivos ou pastas locais com o OSS. O comando sync compara a data da última modificação dos arquivos ou usa informações de snapshot para identificar e enviar apenas os arquivos alterados de forma incremental. Esse processo mantém a consistência entre o conteúdo da origem e do destino com eficiência.
Como funciona
-
Quantidade de arquivos
Ao executar o comando sync sem a opção --delete, não há limite para a quantidade de arquivos sincronizados por vez. Se você incluir a opção --delete, poderá sincronizar até 1 milhão de arquivos simultaneamente. Caso a quantidade exceda 1 milhão, o sistema retornará o erro over max sync numbers 1000000..
-
Diferenças entre os comandos sync e cp
O comando sync percorre recursivamente todos os arquivos e subdiretórios em uma pasta especificada. Já o comando cp executa uma operação recursiva somente se você adicionar a opção -r.
Ao usar o comando sync para sincronizar dados com o OSS, adicione a opção --delete para excluir arquivos presentes no destino, mas ausentes na origem. Essa opção garante que o diretório de destino contenha apenas os arquivos da sincronização atual. O comando cp não oferece suporte à opção --delete.
O comando sync não aceita a opção --version-id. Portanto, não é possível usá-lo para sincronizar versões anteriores de arquivos em um bucket com versionamento ativado. O comando cp aceita a opção --version-id.
Exceto por essas diferenças, os comandos sync e cp têm uso semelhante. Para obter mais informações sobre o uso e exemplos do comando cp, consulte cp (enviar arquivos).
Observação de uso
A partir da versão 1.6.16 do ossutil, use o binário ossutil diretamente, sem precisar renomeá-lo para o seu sistema operacional. Em versões anteriores à 1.6.16, renomeie o arquivo binário. Para mais detalhes, consulte Referência de comandos do ossutil.
Permissões
Por padrão, apenas uma 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 a uma função RAM por meio de uma Política do RAM ou de uma Política de Bucket. A concessão deve ser feita por uma conta Alibaba Cloud ou por um administrador.
|
Ação da API |
Descrição |
|
OSS:ListObjects |
Lista objetos no bucket de destino para comparação com os arquivos locais. |
|
OSS:PutObject |
Envia arquivos para o OSS. |
|
OSS:DeleteObject |
[Opcional] Necessária ao usar a opção --delete para remover arquivos excedentes do bucket de destino. |
|
OSS:PutObjectTagging |
[Opcional] Necessária ao usar a opção --tagging para adicionar tags a um objeto. |
Sintaxe do comando
ossutil sync file_url cloud_url [options]
A tabela a seguir descreve os parâmetros e as opções.
|
Parâmetro |
Descrição |
|
file_url |
Caminho da pasta local a sincronizar. Exemplo: |
|
cloud_url |
Caminho da pasta de destino no OSS. Formato: |
|
-f --force |
Força a operação sem solicitar confirmação. |
|
-u, --update |
Sincroniza um arquivo apenas se ele não existir no destino ou se a data da última modificação na origem for posterior à do destino. |
|
--delete |
Exclui outros arquivos no caminho de destino e mantém apenas os da sincronização atual. Aviso
Antes de usar a opção --delete, ative o versionamento para evitar exclusão acidental de dados. |
|
--enable-symlink-dir |
Sincroniza subdiretórios vinculados. |
|
--disable-all-symlink |
Ignora todos os arquivos e subdiretórios vinculados durante a sincronização da pasta. |
|
--disable-ignore-error |
Não ignora erros durante operações em lote. |
|
--only-current-dir |
Sincroniza apenas os arquivos no diretório atual. Ignora subdiretórios e seus respectivos arquivos. |
|
--output-dir |
Especifique o diretório para armazenar arquivos de saída. Esses arquivos são relatórios gerados quando ocorrem erros durante a sincronização em lote. Por padrão, o sistema salva esses relatórios no diretório ossutil_output dentro do diretório atual. |
|
-bigfile-threshold |
Limiar de tamanho de arquivo para upload 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 tamanho do arquivo.
Valores válidos: 1 a 9223372036854775807 |
|
--checkpoint-dir |
Define o diretório para armazenar informações de checkpoint para uploads retomáveis. Quando um upload retomável falha, o ossutil cria automaticamente um diretório chamado |
|
--encoding-type |
Formato de codificação dos nomes de arquivo. Defina o valor como url. Se você não especificar esta opção, os nomes dos arquivos não serão codificados. |
|
--snapshot-path |
Indica o diretório para salvar informações de snapshot da sincronização. Na próxima tarefa de sincronização, o ossutil lê as informações de snapshot deste diretório para executar uma sincronização incremental. |
|
--include |
Inclui todos os arquivos que atendem à condição especificada. Para mais informações, consulte opções include e exclude. |
|
--exclude |
Exclui todos os arquivos que atendem à condição especificada. Para mais informações, consulte include e --exclude. |
|
--meta |
Define os metadados dos arquivos. Formato: |
|
--acl |
Lista de controle de acesso (ACL) dos arquivos. Valores válidos:
|
|
--maxupspeed |
Velocidade máxima de upload. Unidade: KB/s. O valor padrão é 0, o que indica ausência de limite de velocidade de upload. |
|
--disable-crc64 |
Desativa a validação de dados CRC-64. |
|
--payer |
Método de pagamento da solicitação. Caso deseje que o solicitante pague pelas taxas, como tráfego e requisições geradas ao acessar os recursos no caminho especificado, defina esta opção como requester. |
|
-j,--job |
Número de tarefas simultâneas para operações com múltiplos arquivos. Valor padrão: 3. Valores válidos: 1 a 10000. |
|
--parallel |
Quantidade de tarefas concorrentes para uma operação de arquivo único. Valores válidos: 1 a 10000. Se você não especificar esta opção, o ossutil determinará o valor com base no tipo de operação e no tamanho do arquivo. |
|
--retry-times |
Número de tentativas em caso de erro. Valor padrão: 10. Valores válidos: 1 a 500. |
|
--tagging |
Informações de tag dos arquivos. Formato: |
Para obter mais informações sobre outras opções comuns deste comando, consulte Opções comuns.
Exemplos
Os exemplos abaixo usam um sistema Linux. Adapte os parâmetros conforme o seu sistema operacional e ambiente. Os exemplos consideram o seguinte cenário:
Dois arquivos, d.txt e e.png, estão no diretório local localfolder. O diretório destfolder em um bucket chamado examplebucket contém dois arquivos, a.txt e b.txt, além de um subdiretório chamado C. O conteúdo inicial é o seguinte:
Local root directory examplebucket
└── localfolder └── destfolder/
├── d.txt ├── a.txt
└── e.png ├── b.txt
└── C/
Sincronizar uma pasta local com o OSS
Sincronize todos os arquivos do diretório local localfolder/ para o diretório de destino destfolder/. Esta operação envia apenas novos arquivos. Arquivos existentes, como a.txt e b.txt, e o subdiretório C/ no bucket de destino são mantidos.
ossutil sync localfolder/ oss://examplebucket/destfolder/
Após a sincronização bem-sucedida, a saída inclui a quantidade de arquivos sincronizados, o tamanho total dos arquivos e o tempo gasto na operação:
Succeed: Total num: 2, size: 750,081. OK num: 2(upload 2 files).
average speed 1641000(byte/s)
Após a sincronização, a estrutura do diretório destfolder/ fica assim:
destfolder/
├── a.txt
├── b.txt
├── d.txt
├── e.png
└── C/
Excluir arquivos excedentes no diretório de destino durante a sincronização
Ao sincronizar o diretório local localfolder/, use a opção --delete para remover arquivos e diretórios do destfolder/ que não existam na origem, como a.txt, b.txt e C/.
ossutil sync localfolder/ oss://examplebucket/destfolder/ --delete
Após a sincronização, a estrutura de diretórios de destfolder/ torna-se idêntica à de localfolder/:
destfolder/
├── d.txt
└── e.png
Filtrar e sincronizar arquivos específicos
Use as opções --include e --exclude para filtrar os arquivos a sincronizar.
-
Por exemplo, o comando abaixo sincroniza apenas arquivos .txt.
ossutil sync localfolder/ oss://examplebucket/destfolder/ --include "*.txt"Após a execução do comando, apenas d.txt é enviado e e.png é ignorado. Os arquivos existentes no bucket de destino não são afetados.
destfolder/ ├── a.txt ├── b.txt ├── d.txt └── C/ -
O comando a seguir sincroniza apenas arquivos que não sejam .txt.
ossutil sync localfolder/ oss://examplebucket/destfolder/ --exclude "*.txt"Após a execução do comando, apenas e.png é enviado e d.txt é ignorado. Os arquivos existentes no bucket de destino permanecem inalterados.
destfolder/ ├── a.txt ├── b.txt ├── e.png └── C/
Sobrescrever forçadamente arquivos com o mesmo nome no diretório de destino
Por padrão, se existir um arquivo com o mesmo nome no diretório de destino, o ossutil solicitará confirmação para sobrescrita. Se tiver certeza de que deseja substituir todos os arquivos de destino com nomes iguais, use a opção -f ou --force para ignorar o prompt de confirmação e forçar a substituição.
ossutil sync localfolder/ oss://examplebucket/destfolder/ -f
Após a execução bem-sucedida do comando, a saída exibe informações como a quantidade de arquivos sincronizados, o tamanho total e a velocidade média. Veja um exemplo de saída:
Succeed: Total num: 2, size: 750,081. OK num: 2(upload 2 files).
average speed 1641000(byte/s)
Sincronização entre contas
Use as opções -e, -i e -k para sincronizar arquivos do diretório local srcfolder para o diretório testfolder no bucket examplebucket. Este bucket está na região China (Shanghai) e pertence a outra conta Alibaba Cloud.
Especifique o endpoint correspondente à região do seu bucket. Para mais informações, consulte Regiões e Endpoints.
ossutil sync srcfolder/ oss://examplebucket/testfolder/ -e oss-cn-shanghai.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA**** -k 67DLVBkH7EamOjy2W5RVAHUY9H****
Dica de segurança : Incluir uma AccessKey em um comando representa um risco de segurança. Para tarefas automatizadas ou de longa duração, recomendamos criar uma função RAM para a conta de origem e conceder permissões à conta de destino. Esse método oferece um acesso entre contas mais seguro.