กู้คืนถัง S3 รุ่นที่มีจุดเฉพาะในเวลา


16

สมมติว่าฉันเปิดใช้งานการกำหนดรุ่น S3 สำหรับที่เก็บข้อมูลของฉันแล้ว: http://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html

สมมติว่ามีคน (ตัวอย่างเช่นพนักงานระดับต้น) ทำหน้าที่ยุ่งเกี่ยวกับ S3 bucket (ลบไฟล์บางไฟล์โดยไม่ตั้งใจ)

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

มีวิธีแก้ปัญหาที่ดีสำหรับปัญหานี้หรือไม่? ฉันใช้ S3 S3 เป็นที่เก็บรูปภาพสำหรับแอพ Rails ของฉันดังนั้นสิ่งที่ใช้ Ruby ซึ่งฉันสามารถใช้เป็นงานคราดก็เหมาะอย่างยิ่ง

คำตอบ:


17

คุณสามารถใช้ได้ s3-pit-restore

S3 Point in Time Restoreเป็นเครื่องมือที่คุณสามารถใช้เพื่อกู้คืน bucket หรือเซ็ตย่อยของ bucket อย่างแม่นยำจนถึงเวลาที่กำหนดดังนี้:

s3-pit-restore --bucket my-bucket --dest my-restored-bucket --timestamp "06-17-2016 23:59:50 +2"

สิ่งที่ s3-pit-restore นำเสนอจริง:

  • กู้คืนไฟล์ทั้งหมดที่มีการประทับเวลาน้อยกว่าหนึ่งไฟล์ที่กำหนด
  • คืนค่าการฝากข้อมูลทั้งหมดหรือคำนำหน้าการฝากข้อมูล
  • ดาวน์โหลดไฟล์หลายไฟล์แบบขนานพร้อมความเร็วโดยรวมที่ยอดเยี่ยม
  • การปรับแต่งของคนทำงานแบบขนานนับรวมเพื่อเพิ่มประสิทธิภาพการใช้แบนด์วิด
  • กู้คืนจาก s3 bucket เวอร์ชั่นหรือจากธารน้ำแข็งหากเปิดใช้งาน

ดูเหมือนจะไม่ได้ผลสำหรับฉัน ปลายทางจะสร้างไดเรกทอรีท้องถิ่นแม้จะมีคำอธิบายของเครื่องมือ
Arthur

คุณได้บันทึกวันของฉัน ขอขอบคุณที่แจ้งให้เราทราบถึงเครื่องมือที่ยอดเยี่ยม
cyberrspiritt

2

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

เก็บข้อมูลสำรองไว้ที่อื่นเช่นกันในกรณี Stack Overflowมีคำถาม / คำตอบในการใช้s3cmdนี้ ฉันแน่ใจว่าคุณสามารถค้นหาสคริปต์ที่ใช้ Ruby จากที่อื่นหรือขอความช่วยเหลือจากเว็บไซต์นั้นหากคุณต้องการ


แก้ไข. คุณกำลังกำหนดรุ่นวัตถุแต่ละรายการในที่เก็บข้อมูลไม่ใช่ที่เก็บข้อมูลรวม
EEAA

1
โอ้ฉันเข้าใจทุกอย่าง นี่คือเหตุผลที่ฉันรู้ว่ามันไม่ง่าย ฉันอาจต้องสำรวจไฟล์ทั้งหมดในที่เก็บข้อมูลรับข้อมูลรุ่นสำหรับแต่ละไฟล์จากนั้นเลือกรายการที่ถูกต้อง (ถ้ามี) ตามวันเวลาที่ฉันต้องการ "เปลี่ยนกลับ" เป็น ไม่ง่ายนัก ฉันคิดว่า Amazon จะมีบางอย่างสำหรับกรณีการใช้งานทั่วไป แต่อนิจจาไม่ ... ดังนั้นฉันจึงสงสัยว่ามีคนเขียนสคริปต์ที่น่าเบื่อนี้อยู่แล้ว ฉันจะพิจารณาs3cmdแต่ฉันชอบที่จะมีสแนปชอตเวอร์ชันบน S3 เช่นกัน
elsurudo

คำตอบนี้มีข้อมูลที่ไม่ถูกต้องง่าย ๆdeleteแทรกเครื่องหมายลบและคำขอในอนาคตกลับ 404 ไม่ใช่รุ่นก่อนหน้า ไปที่ RESTORE คุณสามารถคัดลอกเวอร์ชันเก่าไปเป็นเวอร์ชั่นใหม่หรือคุณสามารถdeleteใช้วัตถุปัจจุบันรุ่นใดรุ่นหนึ่งได้จากนั้นgets ในอนาคตจะได้รับรุ่นที่สองถึงล่าสุด docs.aws.amazon.com/AmazonS3/latest/dev/… เพื่อให้เป็นธรรม docu รอบ ๆ การกำหนดเวอร์ชันฝากข้อมูลมีแนวโน้มที่จะคลุมเครือและขาด ...
คม

@keen โปรดทราบว่าคำถามนี้ได้รับคำตอบเกือบสามปีที่ผ่านมา ... เป็นไปได้มากที่พวกเขาจะอัปเดตเอกสาร จับดีแม้ว่า
นาธานซี

ลิงก์ที่อ้างถึงสำหรับ docu นั้นเกี่ยวกับการกู้คืน (มุมมองการกู้คืนระดับสูงมาก) และไม่มีการเปลี่ยนแปลง - และเพื่อความเป็นธรรมมันค่อนข้างสับสนเล็กน้อยเมื่อเริ่มพูดถึงการลบ แค่ต้องการให้แน่ใจว่าไม่มีใครเห็นสิ่งนี้และคิดว่า "เพียงแค่ลบวัตถุจากที่ฝากข้อมูลรุ่น s3 หมายความว่ารุ่นเก่าจะเริ่มต้นส่งคืน" - ที่สามารถเกิดขึ้นได้ แต่คุณต้องลบรุ่นปัจจุบันโดยเฉพาะ (... / คีย์ ? versionId = xyz) ที่จะเกิดขึ้น ...
แหลม

1

นี่เป็นสคริปต์ php เล็ก ๆ น้อย ๆ ที่ฉันเคยใช้เพื่อกู้คืน bucket ของฉันจาก back up bucket ด้วย versioning:

หากต้องการสำรองข้อมูลลงในที่ฝากข้อมูลที่เปิดใช้งานการกำหนดเวอร์ชัน

#CONFIGURATION
export bucket_to_backup='example-of-a-bucket-name';
export backup_bucket='example-of-a-backup-bucket-name'; 
export AWS_ACCESS_KEY_ID=ASDFDSAFADSFDASF;
export AWS_SECRET_ACCESS_KEY=adsfdsaf86adsf5adsf568aadf75ads;
#you will need to download and install the s3cmd tool at the following url:
#http://s3tools.org/
s3cmd --access_key=$AWS_ACCESS_KEY_ID --secret_key=$AWS_SECRET_ACCESS_KEY --recursive sync s3://$bucket_to_backup s3://$backup_bucket;

คืนค่าการสำรองข้อมูลจากไฟล์ที่มีเวอร์ชันระหว่างการประทับเวลาทั้งสองนี้

export startSnapShotTimeStamp=1427577934;
export endSnapShotTimeStamp=1427577939;
#do the restore with php script
php awsUtil.php sync example-of-a-backup-bucket-name example-of-a-bucket-name $startSnapShotTimeStamp-$endSnapShotTimeStamp

คุณสามารถดาวน์โหลดสคริปต์ PHP ได้ที่นี่: http://boulderapps.co/post/backing-up-and-restoring-s3-to-a-versioned-bucket

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