AWS S3版本-选择要还原的版本S3

问题描述 投票:1回答:2

[当前,我正在使用S3版本控制,并且每天将数据同步到S3存储桶。我的问题是如何将版本化存储桶还原到特定的时间点?例如:我从星期一到星期六将数据同步到S3,并且在星期六我想从星期二还原整个文件夹,那么如何在cli中做呢?谢谢。

amazon-s3 versioning
2个回答
0
投票

您可以使用s3-pit-restore

S3 Point in Time Restore是一种工具,您可以完全使用它来将存储桶或存储桶的子集还原到给定的时间点,如下所示:

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

s3-pit-restore优惠:

  • 恢复所有时间戳小于给定时间戳的文件
  • 还原整个存储桶或存储桶前缀
  • 以较高的整体速度并行下载多个文件
  • 定制并行工作人员以优化带宽使用量
  • 从s3存储桶版本或从冰川还原(如果启用)

0
投票

我们在生产环境中使用此功能在s3-pit-restore和AWS支持失败后清理了一些文件。此python脚本permanently在给定时间后删除文件的所有版本。

import os
from datetime import datetime
import boto3

bad_day = datetime.now()

s3 = boto3.resource(
    's3',
    aws_access_key_id=os.environ['AWS_ID'],
    aws_secret_access_key=os.environ['AWS_SECRET'])

key = ''
metadata = s3.meta.client.list_object_versions(Bucket=os.environ['AWS_BUCKET'], Prefix=key)

to_delete = []
for version in metadata['Versions']:
    if version['Size'] > 0:
        continue

    if version['LastModified'] > bad_day:
        to_delete.append({'Key': version['Key'], 'VersionId': version['VersionId']})

bucket = s3.Bucket(os.environ['AWS_BUCKET'])
# bucket.delete_objects(Delete={'Objects': to_delete})

在准备删除之前,请不要取消注释最后一行。

© www.soinside.com 2019 - 2024. All rights reserved.