summaryrefslogtreecommitdiff
path: root/bin/boto-empty-deleted-versions
diff options
context:
space:
mode:
Diffstat (limited to 'bin/boto-empty-deleted-versions')
-rwxr-xr-xbin/boto-empty-deleted-versions27
1 files changed, 27 insertions, 0 deletions
diff --git a/bin/boto-empty-deleted-versions b/bin/boto-empty-deleted-versions
new file mode 100755
index 00000000..e3835d4f
--- /dev/null
+++ b/bin/boto-empty-deleted-versions
@@ -0,0 +1,27 @@
+#!/usr/bin/env python
+
+"""boto-empty-deleted-versions -- delete all versions of deleted files from an s3 bucket"""
+
+import boto
+from boto.s3 import deletemarker
+
+def main():
+ """Main procedure"""
+
+ bucket = sys.argv[1]
+
+ connection = boto.connect_s3()
+ bucket = connection.get_bucket(bucket)
+
+ files_to_delete = []
+ for version in bucket.list_versions():
+ if isinstance(version, deletemarker.DeleteMarker) and version.is_latest:
+ files_to_delete.append(version.name)
+
+ for version in bucket.list_versions():
+ if version.name in files_to_delete:
+ print "deleting", version.name, "version", version.version_id
+ bucket.delete_key(version.name, version_id=version.version_id)
+
+if __name__ == "__main__":
+ main()