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 tendo dificuldade em obter o comando sync para excluir diretórios da sincronização. A documentação faz parecer fácil usando a opção '--exclude'. No entanto, não consegui fazê-lo funcionar.
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/*'
Quero excluir todas as pastas nomeadas '.git' e todos os arquivos nessas pastas da sincronização.
A julgar pela documentação O padrão que eu dei para '--exclude' deve funcionar. No entanto, o diretório .git inteiro e todos os seus arquivos ainda são sincronizados. Aqui está um exemplo de linha de saída:
upload: ../var/www/site/.git/objects/7b/e3cdf203d34a0d7eff30a96a78d20eacee8d77 to s3://backup-bucket/var/www/site/.git/objects/7b/e3cdf203d34a0d7eff30a96a78d20eacee8d77
Tentei os seguintes comandos, que falharam ao excluir pastas com o nome '.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 '*'
De fato, parece que '--exclude' só funciona se o globbing estiver no 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 desejo excluir da sincronização, como '.git', 'analisado', 'cache' etc. Seria terrível ter que fornecer caminhos absolutos para todos eles .
Espero que haja algo simples que eu esteja fazendo errado aqui. Obrigado a todos por sua ajuda.