Score:2

จะ * จริง * ยกเว้นไดเรกทอรีในการซิงค์ AWS S3 ได้อย่างไร

ธง in
DMJ

เดอะ aws s3 ซิงค์ คำสั่งมี --ไม่รวม ตั้งค่าสถานะซึ่งช่วยให้คุณแยกโฟลเดอร์ออกจากการซิงค์ อย่างไรก็ตาม แม้ว่าไฟล์จะไม่ถูกอัพโหลดจากไดเร็กทอรีนั้น คำสั่งยังคงดูและประมวลผลไฟล์ทั้งหมดในโฟลเดอร์นั้น เหตุผลที่ฉันต้องการยกเว้นโฟลเดอร์นั้นตั้งแต่แรกก็เพราะว่ามันเป็นโฟลเดอร์ขนาดใหญ่มากที่มีข้อมูลจำนวนมาก โดยข้อมูลที่ฉันต้องการซิงค์จริง ๆ นั้นมีขนาดเพียงไม่กี่ MB ในโฟลเดอร์หลักและโฟลเดอร์ย่อยอื่น ๆ อย่างไรก็ตาม การซิงค์ข้อมูลเพียงไม่กี่ MB นั้นจะใช้เวลาหลายนาที เนื่องจากข้อมูลหลาย GB ในโฟลเดอร์ย่อยข้อมูลนั้น มีวิธีที่ฉันสามารถทำได้ จริงๆ แล้ว ยกเว้น (เช่น จากการดูหรือประมวลผล) โฟลเดอร์ย่อยนั้นเพื่อให้คำสั่ง sync เสร็จสิ้นในระยะเวลาที่เหมาะสม?

Score:3
ธง cn

ฉันคิดว่านี่อาจเป็นกรณีของความคาดหวังที่ไม่ตรงกันเกี่ยวกับฟังก์ชันที่ S3 มอบให้

S3 ไม่มีโครงสร้างใด ๆ จริง ๆ แล้วที่ฝากข้อมูลมีเพียงชุดของวัตถุแบบแบนพร้อมสตริงแบบเต็มที่อาจถูกมองว่าเป็น "เส้นทาง" ซึ่งเป็นกุญแจสำคัญของแต่ละวัตถุ
เดอะ การดำเนินการ ListObjectsV2 API อย่างไรก็ตามมีคุณสมบัติเช่นการระบุคำนำหน้า (ส่งคืนเฉพาะวัตถุที่มีคีย์ที่ขึ้นต้นด้วยสตริงเฉพาะ) และตัวเลือกในการระบุตัวคั่น (แยกคีย์ตามตัวคั่นที่ให้มาและกลุ่มที่ทำซ้ำส่วนคีย์) ที่ให้คุณนำเสนอเนื้อหาของ ที่ฝากข้อมูลราวกับว่ามันมีโครงสร้าง (เช่น สิ่งที่คอนโซล AWS ทำ เป็นต้น)

เดอะ aws s3 ซิงค์ ยูทิลิตี้น่าจะเริ่มทำงานจากปกติ การดำเนินการ ListObjectsV2 APIแต่ API นี้ไม่มีฟังก์ชันใดเทียบเท่ากับ --ไม่รวม (หรือ --รวม) ตัวเลือกในยูทิลิตี้การซิงค์ เฉพาะตัวเลือกในการรับรายการที่กรองตามคำนำหน้าคีย์
ดังนั้นจึงดูเหมือนว่ายูทิลิตีการซิงค์ต้องทำการประมวลผลตัวเลือกการกรองที่ยืดหยุ่นกว่านี้ในฝั่งไคลเอ็นต์ เนื่องจากประมวลผลรายการออบเจกต์ทั้งหมดสำหรับคำนำหน้าที่ระบุ ซึ่งจะไม่มีประสิทธิภาพเลยหากมีออบเจ็กต์จำนวนมาก ภายใต้คำนำหน้าที่ระบุซึ่งควรจะข้ามไป

สิ่งที่คุณต้องการทำในสถานการณ์ของคุณน่าจะเป็นการระบุคำนำหน้าหรือคำนำหน้าที่คุณต้องการแทนการระบุคำนำหน้าทั่วไปและกรองสิ่งที่คุณไม่ต้องการ หากสิ่งที่คุณต้องการไม่สามารถระบุได้ด้วยคำนำหน้า คุณอาจต้องพิจารณาเปลี่ยนชื่อของคุณเพื่อให้มีคำนำหน้าที่รู้จักซึ่งคุณสามารถระบุได้ (หรืออาจใช้ที่เก็บข้อมูลแยกต่างหากสำหรับข้อมูลประเภทต่างๆ หากสิ่งนั้นเหมาะสมกับสถานการณ์ของคุณมากขึ้น)

in flag
DMJ
ฉันเข้าใจว่ามันสมเหตุสมผลในบริบทของการดาวน์โหลดจาก S3 มันไม่สมเหตุสมผลเลยในบริบทของการอัปโหลด: ระบบไฟล์ที่ฉันกำลังอัปโหลดมีโครงสร้างที่กำหนดไว้จริง แม้ว่า S3 จะเป็นเพียงคู่คีย์-ค่าก็ตาม ฉันคิดว่าบางทีในสถานการณ์นี้อาจเป็นเพียงการขาดการเพิ่มประสิทธิภาพสำหรับกรณีการใช้งานนี้
cn flag
@DMJ ใช่แล้ว หากคุณกำลังดูกรณี "อัปโหลดจากระบบไฟล์ในเครื่องไปยัง s3" โดยเฉพาะ ฉันคิดว่ามันไม่สำคัญมากนักที่กรณีตรงข้ามจะยิ่งมีปัญหาในการเพิ่มประสิทธิภาพ ข้อกังวลเพิ่มเติมที่ใช้กับกรณีในเครื่องก็คือวิธีที่ `--exclude` สามารถเขียนรูปแบบให้ตรงกับส่วนใดๆ ของเส้นทางได้ ดังนั้นในขณะที่ใช้รูปแบบที่ตรงกับไดเรกทอรีชั้นนำเป็นหลัก ดูเหมือนว่าอาจได้รับการปรับให้เหมาะกับท้องถิ่น ระบบไฟล์ กรณีทั่วไปยังคงต้องค้นหาไฟล์ทั้งหมดในเครื่องแบบวนซ้ำ ฉันสามารถจินตนาการได้ว่าพวกเขาไม่ได้ปรับให้เหมาะกับกรณีพิเศษนั้น
Score:0
ธง in
DMJ

แม้ว่าคำตอบของ HÃ¥kan Lindqvist จะเป็นคำตอบที่ถูกต้องทางเทคนิค แต่น่าเสียดายที่ไม่ได้แก้ปัญหา การซิงค์ (อัปโหลด) ขนาดไม่กี่ MB ใช้เวลามากถึง 30 นาที เนื่องจากโฟลเดอร์ย่อยขนาดใหญ่ที่ถูกแยกออกไป เนื่องจาก AWS CLI ดูเหมือนจะไม่รองรับฟังก์ชันที่ฉันต้องการโดยกำเนิด ฉันจึงหันไปใช้เครื่องมืออื่นแทน: เชลล์สคริปต์

#!/bin/sh

สำหรับ localfile ใน /home/path/to/source/files/*.*
ทำ 
aws s3 cp "$localfile" s3://path/to/bucket/
เสร็จแล้ว

aws s3 ซิงค์ /home/path/to/source/files/subfolder1 s3://path/to/bucket/subfolder1
aws s3 ซิงค์ /home/path/to/source/files/subfolder2 s3://path/to/bucket/subfolder2
aws s3 ซิงค์ /home/path/to/source/files/subfolder3 s3://path/to/bucket/subfolder3
# จงใจข้ามโฟลเดอร์ย่อย 4
aws s3 ซิงค์ /home/path/to/source/files/subfolder5 s3://path/to/bucket/subfolder5
aws s3 ซิงค์ /home/path/to/source/files/subfolder6 s3://path/to/bucket/subfolder6
aws s3 ซิงค์ /home/path/to/source/files/subfolder7 s3://path/to/bucket/subfolder7
aws s3 ซิงค์ /home/path/to/source/files/subfolder8 s3://path/to/bucket/subfolder8
aws s3 ซิงค์ /home/path/to/source/files/subfolder9 s3://path/to/bucket/subfolder9
aws s3 ซิงค์ /home/path/to/source/files/subfolder10 s3://path/to/bucket/subfolder10

แม้ว่าวิธีการนี้จะแก้ปัญหาที่ฉันมีในสถานการณ์เฉพาะของฉัน แต่ก็ไม่มีข้อด้อย:

  • เดอะ aws s3 ซีพี คำสั่งจะอัปโหลดไฟล์เสมอ แม้ว่าจะไม่ได้เปลี่ยนแปลงจากครั้งล่าสุดก็ตาม
  • วิ่ง aws s3 ซีพี คำสั่งใน for loop ดูเหมือนจะช้ากว่าคำสั่ง aws s3 ซิงค์ คำสั่งโดยทั่วไปอยู่ภายใต้สถานการณ์ปกติ
  • จากคำตอบของ HÃ¥kan Lindqvist ฉันไม่แน่ใจว่าแนวทางนี้จะทำอะไรเพื่อช่วยคนที่ดาวน์โหลดมากกว่าอัปโหลด
  • ไม่ข้ามแพลตฟอร์ม (สิ่งนี้ใช้ไม่ได้กับ Windows โชคดีสำหรับฉัน ฉันใช้ Linux)

แม้จะมีข้อเสีย แต่ในสถานการณ์ของฉันสิ่งนี้เร็วกว่าการใช้มากกว่าลำดับความสำคัญ aws s3 ซิงค์ กับ --ไม่รวม ฟันธงว่างั้นฉันพอใจ ฉันหวังว่า Amazon จะมีตัวเลือกที่ดีกว่าในอนาคต

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา