Skip to content

Commit

Permalink
[S3Management] Add undelete_prefix method
Browse files Browse the repository at this point in the history
That can be used to recover object in a versioned bucket
  • Loading branch information
malfet committed Oct 5, 2023
1 parent 3e2d4a1 commit 07efc44
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions s3_management/manage.py
Original file line number Diff line number Diff line change
Expand Up @@ -428,6 +428,18 @@ def fetch_metadata(key: str) :
objects.append(s3_object)
return cls(objects, prefix)

@classmethod
def undelete_prefix(cls: Type[S3IndexType], prefix: str) -> None:
paginator = CLIENT.get_paginator("list_object_versions")
for page in paginator.paginate(Bucket=BUCKET.name, Prefix=prefix):
for obj in page.get("DeleteMarkers", []):
if not obj.get("IsLatest"):
continue
obj_key, obj_version_id = obj["Key"], obj["VersionId"]
obj_ver = S3.ObjectVersion(BUCKET.name, obj_key, obj_version_id)
print(f"Undeleting {obj_key} deleted on {obj['LastModified']}")
obj_ver.delete()


def create_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser("Manage S3 HTML indices for PyTorch")
Expand Down

0 comments on commit 07efc44

Please sign in to comment.