Saya mengalami masalah saat menggunakan *
di AWS CLI untuk memilih subset file dari keranjang tertentu.
Menambahkan *
ke jalur seperti ini sepertinya tidak berhasil
aws s3 cp s3://data/2016-08* .
Jawaban:
Untuk mendownload beberapa file dari ember aws ke direktori Anda saat ini, Anda dapat menggunakan recursive
, exclude
dan include
bendera seperti ini:
aws s3 cp s3://data/ . --recursive --exclude "*" --include "2016-08*"
Untuk info lebih lanjut tentang cara menggunakan filter ini: http://docs.aws.amazon.com/cli/latest/reference/s3/#use-of-exclude-and-include-filters
sync
untuk efek serupa, yang rekursif secara default:aws s3 sync s3://data/ . --exclude "*" --include "2016-08*"
Urutan Parameter Penting
Kecualikan dan penyertaan harus digunakan dalam urutan tertentu, Kami harus mengecualikan terlebih dahulu, lalu menyertakan. Kebalikannya tidak akan berhasil.
aws s3 cp s3://data/ . --recursive --include "2016-08*" --exclude "*"
Ini akan gagal karena urutan parameter penting dalam kasus ini. Termasuk dikecualikan oleh *
aws s3 cp s3://data/ . --recursive --exclude "*" --include "2016-08*"`
Yang ini akan berfungsi karena kami mengecualikan semuanya tetapi kemudian kami telah memasukkan direktori tertentu.
Oke saya harus katakan contoh salah dan harus diperbaiki sebagai berikut:
aws s3 cp . s3://data/ --recursive --exclude "*" --include "2006-08*" --exclude "*/*"
The .
kebutuhan untuk menjadi benar setelah cp
. Yang terakhir --exclude
adalah memastikan bahwa tidak ada yang diambil dari subdirektori mana pun yang diambil oleh --recursive
(mengetahui bahwa salah satunya karena kesalahan ...)
Ini akan berhasil bagi siapa pun yang berjuang dengan ini pada saat mereka tiba di sini.
--exclude "*"
ini bukanlah kesalahan ketik. Jika Anda tidak menambahkannya, penyertaan akan cocok dengan apa pun . Sesuai dokumentasi: Perhatikan bahwa, secara default, semua file disertakan. Ini berarti bahwa hanya menyediakan filter --include tidak akan mengubah file apa yang ditransfer. --include hanya akan memasukkan kembali file yang telah dikecualikan dari filter --exclude. Jika Anda hanya ingin mengupload file dengan ekstensi tertentu, Anda harus mengecualikan semua file terlebih dahulu, lalu memasukkan kembali file dengan ekstensi tertentu.