Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 AWS S3版本控制-选择要恢复的S3版本_Amazon S3_Versioning - Fatal编程技术网

Amazon s3 AWS S3版本控制-选择要恢复的S3版本

Amazon s3 AWS S3版本控制-选择要恢复的S3版本,amazon-s3,versioning,Amazon S3,Versioning,目前,我正在使用S3版本控制,每天都将数据同步到S3 bucket。我的问题是如何将版本化的bucket恢复到特定的时间点?例如:我从星期一到星期六将数据同步到S3,在星期六我想从星期二恢复整个文件夹,那么在cli中该如何做呢? 谢谢。在s3 pit恢复和AWS支持失败后,我们在生产中使用此工具清理一些文件。此python脚本将在给定时间后永久删除所有版本的文件 import os from datetime import datetime import boto3 bad_day = dat

目前,我正在使用S3版本控制,每天都将数据同步到S3 bucket。我的问题是如何将版本化的bucket恢复到特定的时间点?例如:我从星期一到星期六将数据同步到S3,在星期六我想从星期二恢复整个文件夹,那么在cli中该如何做呢?
谢谢。

在s3 pit恢复和AWS支持失败后,我们在生产中使用此工具清理一些文件。此python脚本将在给定时间后永久删除所有版本的文件

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})

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

Hi@firescar96,我也遇到了同样的问题。我的问题是,一旦你在指定日期后删除了文件版本,我如何使最后一个版本成为正式版本?是的,对于任何文件,最新版本(没有删除标记)是新的默认版本。