Estou tentando usar o “aws s3 sync” na minha instância do EC2. A opção '--exclude' está quebrada?

7

Estou tentando fazer backup da minha instância do EC2 para o S3 usando as ferramentas oficiais da Amazon que vêm pré-instaladas na instância do EC2. Estou com dificuldades para obter o comando de sincronização para excluir diretórios da sincronização. A documentação faz parecer que é fácil usar a opção '--exclude' . No entanto, não consegui que funcionasse.

Estou executando a versão mais recente disponível no yum:

[root@HOSTNAME ~]# aws --version
aws-cli/1.1.1 Python/2.6.8 Linux/3.4.57-48.42.amzn1.x86_64

Este é o comando com o qual estou tendo problemas:

aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude '*.git/*'

Desejo excluir todas as pastas com o nome ".git" e todos os arquivos dessas pastas da sincronização.

A julgar pela documentação O padrão que dei a '--excluir ' Deveria trabalhar. No entanto, todo o diretório .git e todos os seus arquivos ainda estão sincronizados. Aqui está um exemplo de saída:

upload: ../var/www/site/.git/objects/7b/e3cdf203d34a0d7eff30a96a78d20eacee8d77 to s3://backup-bucket/var/www/site/.git/objects/7b/e3cdf203d34a0d7eff30a96a78d20eacee8d77

Eu tentei os seguintes comandos, os quais falharam em excluir pastas chamadas '.git':

aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude *.git/*
aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude */.git/*
aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude '.git'
aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude '*\.git/*'
aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude '.*\.git/.*'

E, talvez o mais perturbador, esse comando não exclui nada da sincronização:

aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude '*'

Na verdade, parece que '--exclusivo' só funciona se a globulação estiver do lado direito de um caminho absoluto. Por exemplo, isso exclui a pasta .git em /var/www/site/.git:

aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude '/var/www/site/.git/*'

mas isso não exclui nada:

aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude '*/www/site/.git/*'

Eu tenho muitos sites em / var / www e muitas pastas que eu quero excluir da sincronização, como '.git', 'parsed', 'cache', etc. Seria terrível ter que fornecer caminhos absolutos para todos eles.

Estou esperando que haja algo simples que estou fazendo errado aqui. Obrigado a todos pela vossa ajuda.

    
por user158845 07.11.2013 / 20:12

2 respostas

3

Também está quebrado para mim - e já existe um problema em aberto para este link . É um bug.

    
por 27.11.2013 / 12:25
2

O problema github mencionado está fechado e o comando de sincronização permite excluir agora .

Eu tentei e adicionei --exclude ".git/*" works.

Observe que o final /* é obrigatório.

    
por 07.12.2015 / 19:52