2015-06-02 25 views
9

aws s3 sync --delete bazı yeni dosyaları kaldırıldı. ÖrneğinAWS S3 eşitlemesi --delete, yeni dosyaları yerel olarak kaldırıldı

: - 1.jpg ve 2.jpg: 2.jpg

2 sunucudaki dosya yok

kovada bir dosya var

Sonra S3://my-bucket/images/1.jpg

, ben sunucuya bir dosya yüklemiş

Başlat senkronizasyon cronjob çalıştıran:

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

Neden --delete ekliyoruz - dosyaları s3 olarak silmek ve sunucuya senkronize etmek istiyoruz.

Dosyaları sunucuya yükleyip dosyaları s3'te kaldıracağız.

Düzeltmek için herhangi bir yolu var mı?

cevap

13

Varsayılan olarak, aws sync komutu dosyaları silmez. Yeni veya değiştirilmiş dosyaları hedefe kopyalar.

--delete seçeneğini kullanarak, hedefte bulunan ancak kaynakta bulunmayan dosyaları siler.

Yani, kaynak içeriyorsa: 1.jpg ve 2.jpg ve hedef ardından hedeften 3.jpg silecektir --delete seçeneğini kullanarak, 1.jpg, 2.jpg ve 3.jpg içerir. Her iki yönde de sync komutunu çalıştırıyorsunuz. İlk komutunuz (S3'ü yerel bir dizine eşitler) S3'te olmayan yerel dosyaları siler. Amacınız herhangi bir dosyayı silmeden, yerel dizine S3 tüm yerel dosyaları ve tüm S3 dosyaları kopyalamak ise

ardından --delete seçenek kullanmayın.

+0

Merhaba, Amacım s3 kepçesindeki eski dosyaları silmektir, sonra bu komutu --delete ile çalıştırıyorum ve yerel dosyalarımı da kaldırmak istiyorum. Ve sonra aws s3 sync komutuyla yerelden s3'e yeni dosyalar yükleyebilirim. Bunu yapmak mümkün mü? –

+2

Evet, bunu yapabilirsin. Sadece '--delete' kaynağında olmayan hedefte dosyaları kaldıracağını unutmayın. Yani, sadece "usta" konumdan kullanın. Dosyaları "yerel" (kaynak) konumundan kaldırmaz. İstediğiniz davranışı elde etmek için komutları çalıştırdığınız sırayla oynayın. –