AWS CLI ile bir grup dosyayı "cp" etmek için joker karakterleri nasıl kullanabilirim


116

*Belirli bir paketten bir dosya alt kümesini seçmek için AWS CLI'de kullanırken sorun yaşıyorum .

*Böyle bir yola eklemek işe yaramıyor

aws s3 cp s3://data/2016-08* .

Yanıtlar:


198

Mevcut dizine bir aws kova birden fazla dosya indirmek için kullanabilir recursive, excludeve includebunun gibi bayrakları:

aws s3 cp s3://data/ . --recursive --exclude "*" --include "2016-08*"

Bu filtrelerin nasıl kullanılacağı hakkında daha fazla bilgi için: http://docs.aws.amazon.com/cli/latest/reference/s3/#use-of-exclude-and-include-filters


28
--exclude "*"Bir yazım hatası olmadığını belirtmek isterim . Eklemezseniz, içerme herhangi bir şeyle eşleşecektir . Belgelere göre: Varsayılan olarak tüm dosyaların dahil edildiğini unutmayın. Bu, yalnızca bir --include filtresi sağlamanın hangi dosyaların aktarılacağını değiştirmeyeceği anlamına gelir. --include, yalnızca --exclude filtresinden dışlanan dosyaları yeniden dahil eder. Yalnızca belirli bir uzantıya sahip dosyaları yüklemek istiyorsanız, önce tüm dosyaları hariç tutmanız, ardından belirli uzantıya sahip dosyaları yeniden eklemeniz gerekir.
pyb

8
Hariç tutma ve dahil etme sırasına da dikkat edin.
keiki

3
syncVarsayılan olarak yinelemeli benzer bir efekt için de kullanabilirsiniz :aws s3 sync s3://data/ . --exclude "*" --include "2016-08*"
Enharmonic

--dryrunJoker karakterle doğru nesne kümesinin seçildiğinden emin olmak için "yıkıcı" komutları bayrakla test etmek iyi bir fikirdir .
nerfologist

59

Parametrelerin Sırası Önemlidir

Hariç tutma ve dahil etme belirli bir sırayla kullanılmalıdır. Önce hariç tutmalı ve sonra eklemeliyiz. Bunun galibi başarılı olmayacak.

aws s3 cp s3://data/ . --recursive  --include "2016-08*" --exclude "*" 

Bu başarısız olacaktır çünkü bu durumda parametrelerin sırası önemlidir. Dahil etme, * ile hariç tutulur

aws s3 cp s3://data/ . --recursive --exclude "*" --include "2016-08*"`

Bu işe yarayacak çünkü her şeyi dışladık ama daha sonra belirli dizini dahil ettik.


3

Tamam, örneğin yanlış olduğunu ve şu şekilde düzeltilmesi gerektiğini söylemeliyim:

aws s3 cp . s3://data/ --recursive --exclude "*" --include "2006-08*" --exclude "*/*"

.İhtiyaçları sonra haklı cp. Nihai --excludeemin hiçbir şey tarafından toplanır altdizinlere çekilmiyor olduğunu yapmaktır --recursive(öğrenilen yanlışlıkla biri olduğunu ...)

Bu, buraya geldiklerinde bununla mücadele eden herkes için işe yarayacak.


AWS bunu bir noktada değiştirdi mi?
punkrockpolly
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.