ฉันจะใช้สัญลักษณ์แทนเพื่อ "cp" กลุ่มไฟล์ด้วย AWS CLI ได้อย่างไร


116

ฉันมีปัญหา*ในการใช้AWS CLI เพื่อเลือกไฟล์ย่อยจากที่เก็บข้อมูลบางส่วน

การเพิ่ม*เส้นทางเช่นนี้ดูเหมือนจะไม่ได้ผล

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

คำตอบ:


197

ดาวน์โหลดไฟล์หลายไฟล์จากถัง AWS ไปยังไดเรกทอรีปัจจุบันของคุณคุณสามารถใช้recursive, excludeและincludeธงเช่นนี้

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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้ตัวกรองเหล่านี้: http://docs.aws.amazon.com/cli/latest/reference/s3/#use-of-exclude-and-include-filters


28
ฉันต้องการชี้ให้เห็นว่า--exclude "*"นี่ไม่ใช่การพิมพ์ผิด หากคุณไม่ได้เพิ่มมันรวมถึงจะตรงกับอะไร ตามเอกสารประกอบ: โปรดทราบว่าโดยค่าเริ่มต้นไฟล์ทั้งหมดจะรวมอยู่ด้วย ซึ่งหมายความว่าการระบุเฉพาะตัวกรอง --include จะไม่เปลี่ยนแปลงไฟล์ที่จะถ่ายโอน --include จะรวมเฉพาะไฟล์ที่ถูกแยกออกจากตัวกรอง - ไม่รวมอีกครั้ง หากคุณต้องการอัปโหลดไฟล์ที่มีนามสกุลเฉพาะก่อนอื่นคุณต้องยกเว้นไฟล์ทั้งหมดจากนั้นรวมไฟล์ที่มีนามสกุลเฉพาะอีกครั้ง
pyb

8
ระวังลำดับของการยกเว้นและรวมด้วย
Keiki

3
คุณยังสามารถใช้syncเพื่อให้ได้เอฟเฟกต์ที่คล้ายกันซึ่งจะเกิดซ้ำตามค่าเริ่มต้น:aws s3 sync s3://data/ . --exclude "*" --include "2016-08*"
enharmonic

เป็นความคิดที่ดีที่จะทดสอบคำสั่ง "ทำลายล้าง" ด้วย--dryrunแฟล็กเพื่อให้แน่ใจว่าไวด์การ์ดเลือกชุดวัตถุที่ถูกต้อง
nerfologist

59

ลำดับของพารามิเตอร์มีความสำคัญ

ควรใช้การยกเว้นและรวมในลำดับที่เฉพาะเจาะจงเราต้องแยกออกก่อนแล้วจึงรวม ในทางกลับกันของมันจะไม่ประสบความสำเร็จ

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

สิ่งนี้จะล้มเหลวเนื่องจากลำดับของพารามิเตอร์มีค่าในกรณีนี้ การรวมไม่รวมอยู่ใน *

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

อันนี้ใช้ได้เพราะเรายกเว้นทุกอย่าง แต่ต่อมาเราได้รวมไดเร็กทอรีเฉพาะ


3

โอเคฉันต้องบอกว่าตัวอย่างไม่ถูกต้องและควรได้รับการแก้ไขดังนี้:

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

ความต้องการที่จะได้รับสิทธิหลังจากที่. cpขั้นสุดท้าย--excludeคือตรวจสอบให้แน่ใจว่าไม่มีอะไรถูกหยิบขึ้นมาจากไดเรกทอรีย่อยใด ๆ ที่ถูกหยิบขึ้นมาโดย--recursive(เรียนรู้ว่าหนึ่งโดยไม่ได้ตั้งใจ ... )

สิ่งนี้จะใช้ได้กับทุกคนที่ดิ้นรนกับสิ่งนี้เมื่อมาถึงที่นี่


AWS เปลี่ยนแปลงสิ่งนี้หรือไม่ในบางจุด
punkrockpolly
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.