2015-06-02 7 views
9

aws s3 sync --delete rimosso alcuni nuovi file.Sincronizzazione AWS S3 --delete, nuovi file rimossi in locale

Ad esempio:

C'è un file nel secchio - S3://my-bucket/images/1.jpg

Poi, ho caricato un file sul server: 2.jpg

Ci sono 2 file sul server: 1.jpg e 2.jpg

avviare l'esecuzione del cronjob sincronizzazione:

aws s3 sync s3://my-bucket/ ./ --delete 
aws s3 sync ./ s3://my-bucket/ --delete 

Perché aggiungiamo --delete - vogliamo eliminare i file in s3 e sincronizzarlo con il server.

Caricheremo i file sul server e rimuoveremo i file in s3.

C'è un modo per risolverlo?

risposta

13

Per impostazione predefinita, il comando aws sync non elimina i file. Copia semplicemente i file nuovi o modificati nella destinazione.

L'utilizzo dell'opzione --delete elimina i file presenti nella destinazione ma non nella sorgente.

Quindi, se la sorgente contiene: 1.jpg e 2.jpg e la destinazione contiene 1.jpg, 2.jpg e 3.jpg, quindi utilizzando l'opzione --delete eliminerà 3.jpg dalla destinazione.

Vedo che si sta eseguendo il comando sync in entrambe le direzioni. Il tuo primo comando (che sincronizza S3 in una directory locale) cancellerà tutti i file locali che non sono in S3.

Se il vostro obiettivo è quello di copiare tutti i file locali a S3 e tutti i file S3 alla directory locale, senza cancellare alcun file, quindi non utilizzare l'opzione--delete.

+0

Salve, Il mio obiettivo è eliminare alcuni vecchi file nel bucket s3, quindi eseguo il comando con --delete e voglio che rimuova anche i miei file locali. E poi posso caricare alcuni nuovi file da local a s3 con il comando aws s3 sync. è possibile farlo? –

+2

Sì, puoi farlo. Tieni presente che '--delete' rimuoverà i file nella destinazione che non si trovano nella sorgente. Quindi, usalo solo dalla posizione "master". Non rimuoverà i file dalla posizione "locale" (sorgente). Basta giocare con l'ordine in cui esegui i comandi per ottenere il comportamento desiderato. –