Skip to content

Commit 07efc44

Browse files
committed
[S3Management] Add undelete_prefix method
That can be used to recover object in a versioned bucket
1 parent 3e2d4a1 commit 07efc44

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

s3_management/manage.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,18 @@ def fetch_metadata(key: str) :
428428
objects.append(s3_object)
429429
return cls(objects, prefix)
430430

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

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

0 commit comments

Comments
 (0)