Khôi phục nhóm S3 đã được phiên bản về một thời điểm cụ thể


15

Giả sử tôi đã bật phiên bản S3 cho nhóm của mình: http://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html

Sau đó, giả sử ai đó (ví dụ: nhân viên cấp dưới) làm rối tung thùng S3 (vô tình xóa một số tệp, v.v.)

Làm thế nào tôi có thể khôi phục toàn bộ nhóm phiên bản đến một thời điểm cụ thể? Tôi tin rằng điều này có thể được cung cấp API của S3, nhưng tôi không phải tự viết một kịch bản như vậy, vì sợ bỏ lỡ điều gì đó (Tôi không phải là chuyên gia AWS).

Có giải pháp tốt cho vấn đề này? Tôi đang sử dụng nhóm S3 làm kho lưu trữ hình ảnh cho ứng dụng Rails của mình, vì vậy thứ gì đó dựa trên Ruby mà tôi có thể sử dụng làm nhiệm vụ cào sẽ rất lý tưởng.

Câu trả lời:


17

Bạn có thể dùng s3-pit-restore

S3 Point in Time Restore là một công cụ bạn có thể sử dụng chính xác để khôi phục một nhóm hoặc một tập hợp con của một nhóm đến một thời điểm nhất định, như sau:

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

Những gì s3-pit-restore thực sự cung cấp:

  • Khôi phục tất cả các tệp có dấu thời gian ít hơn tệp đã cho
  • Khôi phục toàn bộ xô hoặc tiền tố xô
  • Tải xuống song song nhiều tệp với tốc độ tổng thể tuyệt vời
  • Tùy chỉnh số lượng công nhân song song để tối ưu hóa việc sử dụng băng thông
  • Khôi phục từ các phiên bản xô s3 hoặc từ sông băng nếu được bật

Điều này dường như không làm việc cho tôi. Destination chỉ tạo một thư mục cục bộ mặc dù mô tả của công cụ.
Arthur

Bạn đã cứu ngày của tôi. Cảm ơn đã cho chúng tôi biết công cụ tuyệt vời.
cyberrspiritt

2

Nếu tôi hiểu tài liệu chính xác, khi bạn bật phiên bản, việc xóa tệp chỉ cần hoàn nguyên phiên bản "mới nhất" trở lại một số phiên bản. Tuy nhiên, điều này không cung cấp khả năng khôi phục toàn bộ nhóm. Điều này làm cho các phiên bản trước trong S3 không phù hợp với nhu cầu của bạn (nghĩa là phục hồi sau khi xóa).

Giữ một bản sao lưu ở một nơi khác cũng như trong trường hợp. Stack Overflow có một câu hỏi / câu trả lời về điều này bằng cách sử dụng s3cmd. Tôi chắc chắn rằng bạn có thể tìm thấy một tập lệnh dựa trên Ruby ở đâu đó hoặc yêu cầu trợ giúp trên trang web đó nếu bạn cần.


Chính xác. Bạn đang tạo phiên bản cho từng đối tượng riêng lẻ trong nhóm chứ không phải toàn bộ nhóm.
EEAA

1
Ồ, tôi hiểu tất cả những điều đó. Đó là lý do tại sao tôi nhận ra nó không đơn giản. Có lẽ tôi phải duyệt qua tất cả các tệp trong nhóm, lấy thông tin phiên bản cho từng tệp và sau đó chọn mục chính xác (nếu có) dựa trên thời gian tôi muốn "hoàn nguyên". Không đơn giản lắm. Tôi đã hình dung Amazon sẽ có một cái gì đó cho trường hợp sử dụng phổ biến như vậy, nhưng than ôi, không ... Vì vậy, tôi đã tự hỏi nếu ai đó đã viết kịch bản tẻ nhạt này. Tôi sẽ xem xét s3cmd, nhưng tôi cũng thích có các ảnh chụp nhanh phiên bản trên S3.
elsurudo

câu trả lời này chứa thông tin không chính xác - một thao tác đơn giản deletechèn dấu xóa và các yêu cầu trong tương lai sẽ trả về 404, không phải phiên bản trước. Để RESTORE bạn có thể sao chép một phiên bản cũ sang một phiên bản mới hoặc bạn có thể deletevới một phiên bản cụ thể của đối tượng hiện tại - sau đó các phiên bản tương lai getsẽ được cung cấp phiên bản thứ hai đến mới nhất. docs.aws.amazon.com/AmazonS3/latest/dev/... phải công bằng, các docu xung quanh xô phiên bản có xu hướng không rõ ràng và thiếu ...
Keen

@keen Lưu ý rằng câu hỏi này đã được trả lời gần ba năm trước ... rất có thể họ đã cập nhật tài liệu. Bắt tốt, mặc dù.
Nathan C

liên kết được tham chiếu cho docu là về phục hồi (chế độ xem khôi phục mức siêu cao) và không thay đổi - và công bằng mà nói, nó hơi khó hiểu khi bắt đầu nói về việc xóa. chỉ muốn đảm bảo không ai nhìn thấy điều này và nghĩ rằng "chỉ cần xóa một đối tượng khỏi thùng s3 được phiên bản có nghĩa là phiên bản cũ sẽ bắt đầu được trả lại" - điều đó CÓ THỂ xảy ra, nhưng bạn phải xóa phiên bản hiện tại (... / key ? versionId = xyz) để điều đó xảy ra ...
quan tâm

2

Đây là một tập lệnh php nhỏ tiện dụng mà tôi đã sử dụng để khôi phục nhóm của mình từ nhóm sao lưu với phiên bản:

Để chạy lại vào một cái xô với phiên bản được bật

#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;

khôi phục sao lưu từ các tệp đã được phiên bản giữa hai dấu thời gian này

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

bạn có thể tải xuống tập lệnh PHP tại đây: http://boulderapps.co/post/backing-up-and-restoring-s3-to-a-versioned-bucket

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.