Mam problem z użyciem *
w interfejsie wiersza polecenia AWS do wybrania podzbioru plików z określonego zasobnika.
*
Wydaje się, że takie dodawanie do ścieżki nie działa
aws s3 cp s3://data/2016-08* .
Odpowiedzi:
Aby pobierać wiele plików z AWS wiadra do bieżącego katalogu, można użyć recursive
, exclude
oraz include
flagi w ten sposób:
aws s3 cp s3://data/ . --recursive --exclude "*" --include "2016-08*"
Więcej informacji na temat korzystania z tych filtrów: http://docs.aws.amazon.com/cli/latest/reference/s3/#use-of-exclude-and-include-filters
sync
dla podobnego efektu, który jest domyślnie rekurencyjny:aws s3 sync s3://data/ . --exclude "*" --include "2016-08*"
Kolejność parametrów ma znaczenie
Wyklucz i uwzględnij powinny być używane w określonej kolejności, musimy najpierw wykluczyć, a następnie uwzględnić. Odwrotna sytuacja się nie powiedzie.
aws s3 cp s3://data/ . --recursive --include "2016-08*" --exclude "*"
To się nie powiedzie, ponieważ w tym przypadku kolejność parametrów ma znaczenie. Uwzględnienie jest wykluczone przez *
aws s3 cp s3://data/ . --recursive --exclude "*" --include "2016-08*"`
Ten zadziała, ponieważ wykluczyliśmy wszystko, ale później dołączyliśmy konkretny katalog.
OK, muszę powiedzieć, że przykład jest błędny i powinien zostać poprawiony w następujący sposób:
aws s3 cp . s3://data/ --recursive --exclude "*" --include "2006-08*" --exclude "*/*"
Że .
musi być zaraz po cp
. Ostatnim --exclude
jest upewnienie się, że nic nie jest pobierane z podkatalogów, które są pobierane przez --recursive
(dowiedziałem się, że przez pomyłkę ...)
To zadziała dla każdego, kto boryka się z tym, zanim tu dotrą.
--exclude "*"
to nie jest literówka. Jeśli go nie dodasz, dołączenie będzie pasowało do wszystkiego . Zgodnie z dokumentacją: Zauważ, że domyślnie wszystkie pliki są uwzględnione. Oznacza to, że podanie tylko filtru --include nie zmieni przenoszonych plików. --include ponownie uwzględni tylko pliki, które zostały wykluczone z filtru --exclude. Jeśli chcesz przesłać tylko pliki z określonym rozszerzeniem, musisz najpierw wykluczyć wszystkie pliki, a następnie ponownie dołączyć pliki z określonym rozszerzeniem.