Bagaimana saya bisa menggunakan wildcard untuk `cp` sekelompok file dengan AWS CLI


110

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:


184

Untuk mendownload beberapa file dari ember aws ke direktori Anda saat ini, Anda dapat menggunakan recursive, excludedan includebendera 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


24
Saya ingin menunjukkan bahwa --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.
pyb

7
Waspadai urutan kecualikan dan sertakan juga.
keiki

3
Anda juga dapat menggunakan syncuntuk efek serupa, yang rekursif secara default:aws s3 sync s3://data/ . --exclude "*" --include "2016-08*"
enharmonic

55

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.


1

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 --excludeadalah 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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.