Sto cercando di usare "aws s3 sync" sulla mia istanza EC2. L'opzione '--exclude' è rotta?


8

Sto cercando di eseguire il backup della mia istanza EC2 su S3 utilizzando gli strumenti ufficiali di Amazon preinstallati sull'istanza EC2. Ho difficoltà a ottenere il comando sync per escludere le directory dalla sincronizzazione. La documentazione fa sembrare che sia facile usando l'opzione '--exclude'. Tuttavia, non sono riuscito a farlo funzionare.

Sto eseguendo l'ultima versione disponibile tramite yum:

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

Questo è il comando con cui ho problemi:

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

Voglio escludere dalla sincronizzazione tutte le cartelle denominate '.git' e tutti i file in quelle cartelle.

A giudicare dalla documentazione Il modello che ho dato a "--exclude" dovrebbe funzionare. Tuttavia, l'intera directory .git e tutti i suoi file sono ancora sincronizzati. Ecco un esempio di output:

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

Ho provato i seguenti comandi, che non sono riusciti a escludere le cartelle denominate '.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, forse più inquietante, questo comando non esclude nulla dalla sincronizzazione:

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

In effetti, sembra che "--exclude" funzioni solo se il globbing si trova sul lato destro di un percorso assoluto. Ad esempio, questo esclude la cartella .git in /var/www/site/.git:

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

ma questo non esclude nulla:

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

Ho molti siti in / var / www e molte cartelle che voglio escludere dalla sincronizzazione come '.git', 'parsed', 'cache', ecc. Sarebbe terribile dover fornire percorsi assoluti a tutti loro .

Spero che ci sia qualcosa di semplice che sto facendo di sbagliato qui. Grazie a tutti per il vostro aiuto.

Risposte:



2

Il problema di github menzionato viene chiuso e il comando di sincronizzazione non consente l'esclusione ora .

Ho provato e aggiungendo --exclude ".git/*"lavori.

Si noti che il finale /*è richiesto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.